The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

geojson package classes

Scott Chamberlain and Jeroen Ooms

2023-07-25

The geojson package has a function to create a GeoJSON class matching all the GeoJSON data types:

The following are some examples of their usage.

library("geojson")

point

(x <- point('{ "type": "Point", "coordinates": [100.0, 0.0] }'))
#> <Point> 
#>   coordinates:  [100,0]
class(x)
#> [1] "geopoint" "geojson"
attributes(x)
#> $class
#> [1] "geopoint" "geojson" 
#> 
#> $coords
#> [1] "[100,0]"

multipoint

multipoint('{"type": "MultiPoint", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }')
#> <MultiPoint> 
#>   coordinates:  [[100,0],[101,1]]

linestring

linestring('{ "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }')
#> <LineString> 
#>   coordinates:  [[100,0],[101,1]]

multilinestring

str <- '{ "type": "MultiLineString",
  "coordinates": [ [ [100.0, 0.0], [101.0, 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ] ] }'
multilinestring(str)
#> <MultiLineString> 
#>   no. lines:  2 
#>   no. nodes / line:  2, 2 
#>   coordinates:  [[[100,0],[101,1]],[[102,2],[103,3]]]

polygon

str <- '{ "type": "Polygon",
 "coordinates": [
   [ [100.0, 0.0], [100.0, 1.0], [101.0, 1.0], [101.0, 0.0], [100.0, 0.0] ]
   ]
}'
polygon(str)
#> <Polygon> 
#>   no. lines:  1 
#>   no. holes:  0 
#>   no. nodes / line:  5 
#>   coordinates:  [[[100,0],[100,1],[101,1],[101,0],[100,0]]]

multipolygon

str <- '{ "type": "MultiPolygon",
  "coordinates": [
   [[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],
   [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
   [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]
  ]
}'
multipolygon(str)
#> <MultiPolygon> 
#>   no. polygons:  2 
#>   coordinates:  [[[[102,2],[103,2],[103,3],[102,3],[102,2]]],[[[100,0],[101,0],[101,1] ...

feature

From geopoint class

pt <- point('{ "type": "Point", "coordinates": [100.0, 0.0] }')
feature(pt)
#> <Feature> 
#>   type:  Point 
#>   coordinates:  [100,0]

From character string

str <- "{ \"type\": \"Feature\", \"properties\": {}, \"geometry\": { \"type\": \"Point\", \"coordinates\": [100.0, 0.0] } }"
feature(str)
#> <Feature> 
#>   type:  Point 
#>   coordinates:  [100,0]

featurecollection

From feature

pt %>% feature() %>% featurecollection()
#> <FeatureCollection> 
#>   type:  FeatureCollection 
#>   no. features:  1 
#>   features (1st 5):  Point

From string

file <- system.file("examples", 'featurecollection1.geojson', package = "geojson")
str <- paste0(readLines(file), collapse = " ")
featurecollection(str)
#> <FeatureCollection> 
#>   type:  FeatureCollection 
#>   no. features:  1 
#>   features (1st 5):  GeometryCollection

geometrycollection

str <- '{
 "type": "GeometryCollection",
 "geometries": [
   {
     "type": "Point",
     "coordinates": [100.0, 0.0]
   },
   {
     "type": "LineString",
     "coordinates": [ [101.0, 0.0], [102.0, 1.0] ]
   }
  ]
}'
geometrycollection(str)
#> <GeometryCollection> 
#>   geometries (n): 2 
#>   geometries (geometry / length):
#>     Point / 2
#>     LineString / 2

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.