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

AltStyle によって変換されたページ (->オリジナル) /