ropensci/geojson

Name: geojson

Owner: rOpenSci

Description: GeoJSON classes for R

Created: 2016-04-01 17:36:59.0

Updated: 2017-11-09 01:08:12.0

Pushed: 2018-01-05 19:27:23.0

Homepage:

Size: 1102

Language: R

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

geojson

Build Status codecov rstudio mirror downloads cran version

geojson aims to deal only with geojson data, without requiring any of the sp/rgdal/rgeos stack. That means this package is light weight.

We've defined classes (S3) following the GeoJSON spec. These classes sort of overlap with sp's classes, but not really. There's also some overlap in GeoJSON classes with Well-Known Text (WKT) classes, but GeoJSON has a subset of WKT's classes.

The package geoops supports manipulations on the classes defined in this package. This package is used within geojsonio to make some tasks easier.

Installation

Stable CRAN version

all.packages("geojson")

Dev version

ools::install_github("ropensci/geojson")

ary("geojson")
geojson class

Essentially a character string with S3 class geojson attached to make it easy to perform operations on

 "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-99.74,32.45]},\"properties\":{}}]}"
eojson(x)
geojson> 
 type:  FeatureCollection 
 bounding box:  99.74 32.45 99.74 32.45 
 features (n): 1 
 features (geometry / length):
   Point / 2
geometrycollection
 '{
pe": "GeometryCollection",
ometries": [

 "type": "Point",
 "coordinates": [100.0, 0.0]
,

 "type": "LineString",
 "coordinates": [ [101.0, 0.0], [102.0, 1.0] ]



- geometrycollection(x))
GeometryCollection> 
 geometries (n): 2 
 geometries (geometry / length):
   Point / 2
   LineString / 2
inspect the object

get the string

]]
1] "{\n \"type\": \"GeometryCollection\",\n \"geometries\": [\n   {\n     \"type\": \"Point\",\n     \"coordinates\": [100.0, 0.0]\n   },\n   {\n     \"type\": \"LineString\",\n     \"coordinates\": [ [101.0, 0.0], [102.0, 1.0] ]\n   }\n  ]\n}"

get the type

type(y)
1] "GeometryCollection"

pretty print the geojson

pretty(y)

   "type": "GeometryCollection",
   "geometries": [
       {
           "type": "Point",
           "coordinates": [
               100.0,
               0.0
           ]
       },
       {
           "type": "LineString",
           "coordinates": [
               [
                   101.0,
                   0.0
               ],
               [
                   102.0,
                   1.0
               ]
           ]
       }
   ]


write to disk

write(y, f <- tempfile(fileext = ".geojson"))
lite::fromJSON(f, FALSE)
type
1] "GeometryCollection"

geometries
geometries[[1]]
geometries[[1]]$type
1] "Point"

geometries[[1]]$coordinates
geometries[[1]]$coordinates[[1]]
1] 100

geometries[[1]]$coordinates[[2]]
1] 0



geometries[[2]]
geometries[[2]]$type
1] "LineString"

geometries[[2]]$coordinates
geometries[[2]]$coordinates[[1]]
geometries[[2]]$coordinates[[1]][[1]]
1] 101

geometries[[2]]$coordinates[[1]][[2]]
1] 0


geometries[[2]]$coordinates[[2]]
geometries[[2]]$coordinates[[2]][[1]]
1] 102

geometries[[2]]$coordinates[[2]][[2]]
1] 1
properties

Add properties

 '{ "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ]}'
<- linestring(x) %>% feature() %>% properties_add(population = 1000)

Feature> 
 type:  LineString 
 coordinates:  [[100,0],[101,1]]

Get a property

erties_get(res, property = 'population')
000
crs

Add crs

<- '{
ype": "name",
roperties": {
 "name": "urn:ogc:def:crs:OGC:1.3:CRS84"


 x %>% feature() %>% crs_add(crs)


   "type": "Feature",
   "properties": {

   },
   "geometry": {
       "type": "LineString",
       "coordinates": [
           [
               100,
               0
           ],
           [
               101,
               1
           ]
       ]
   },
   "crs": {
       "type": "name",
       "properties": {
           "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
       }
   }

Get crs

get(z)
type
1] "name"

properties
properties$name
1] "urn:ogc:def:crs:OGC:1.3:CRS84"
bbox

Add bbox

- x %>% feature() %>% bbox_add()


   "type": "Feature",
   "properties": {

   },
   "geometry": {
       "type": "LineString",
       "coordinates": [
           [
               100,
               0
           ],
           [
               101,
               1
           ]
       ]
   },
   "bbox": [
       100,
       0,
       101,
       1
   ]

Get bbox

_get(tt)
1] 100   0 101   1
geojson in data.frame's
 '{ "type": "Point", "coordinates": [100.0, 0.0] }'
<- point(x))
Point> 
 coordinates:  [100,0]

ary("tibble")
_frame(a = 1:5, b = list(pt))
 A tibble: 5 x 2
     a              b
 <int>         <list>
     1 <S3: geopoint>
     2 <S3: geopoint>
     3 <S3: geopoint>
     4 <S3: geopoint>
     5 <S3: geopoint>

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

_frame(a = 1:5, b = list(mls))
 A tibble: 5 x 2
     a                        b
 <int>                   <list>
     1 <S3: geomultilinestring>
     2 <S3: geomultilinestring>
     3 <S3: geomultilinestring>
     4 <S3: geomultilinestring>
     5 <S3: geomultilinestring>

_frame(a = 1:5, b = list(pt), c = list(mls))
 A tibble: 5 x 3
     a              b                        c
 <int>         <list>                   <list>
     1 <S3: geopoint> <S3: geomultilinestring>
     2 <S3: geopoint> <S3: geomultilinestring>
     3 <S3: geopoint> <S3: geomultilinestring>
     4 <S3: geopoint> <S3: geomultilinestring>
     5 <S3: geopoint> <S3: geomultilinestring>
Meta

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.