¿Cómo crear un marco de datos de línea espacial a partir de polilíneas codificadas?

1 minuto de lectura

Estoy trabajando con un conjunto de datos de la red de transporte y quiero importar los datos de velocidad del tráfico proporcionados en formato JSON.

Podría leer los datos en R usando read.scorata(). Sin embargo, no pude convertirlo en un marco de datos espacial para usarlo en un análisis posterior. Hay un campo en el marco de datos actual que es una polilínea codificada. ¿Cómo puedo convertir usando este campo?

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")

library(googlePolylines) puede decodificar esas polilíneas en coordenadas.

para convertir a un sf Actualmente, el objeto requiere un par de pasos. (Hay planes para hacer esto parte de la biblioteca googlePolylines)

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 ) )

Ahora tiene una característica simple (sf) objeto. Dado sf es el sucesor de sp puedes parar aquí. Pero, si aún necesita el SpatialDataFrame tu puedes hacer

sp <- as( sf, "Spatial" )

¿Ha sido útil esta solución?