3

I'm working with transportation network dataset and I want to import traffic speed data provided as JSON format.

I could read the data in R using read.scorata(). However, I couldn't covert it to a spatial dataframe to be used for further analysis. There is one field in the current dataframe which is encoded polyline. How can I convert using this field?

library(RSocrata)

#Loading only two rows for easy reproduction
Test_TSD <- read.socrata("https://data.cityofnewyork.us/resource/i4gi-tjb9.json?borough=Manhattan&id=225")
Mohammad
  • 67
  • 1
  • 9

1 Answers1

3

library(googlePolylines) can decode those polylines into coordinates.

To convert to an sf object currently requires a couple of steps. (There are plans to make this part of the googlePolylines library)

coords <- googlePolylines::decode( Test_TSD$encoded_poly_line )

sfg <- lapply( coords, function(x) sf::st_linestring( x = as.matrix(x) ) )

sfc <- sf::st_sfc( sfg )

sf <- sf::st_as_sf( cbind( Test_TSD, sfc ) )

You now have a simple feature (sf) object. Given sf is the successor to sp you can stop here. But, if you still need the SpatialDataFrame you can do

sp <- as( sf, "Spatial" )
SymbolixAU
  • 25,502
  • 4
  • 67
  • 139