Tras importar un marco de datos de líneas espaciales con readOGR
Me gustaría determinar el número de segmentos de línea (nodos) de cada línea. No encuentro una forma práctica de exportar simplemente las longitudes como vector.
routes@lines
me llevará a las ranuras de las líneas, pero entonces ¿cómo se obtiene la longitud de cada una?
Por ejemplo, en los datos de muestra que aparecen a continuación, vemos que la primera línea está compuesta por 93 segmentos, la segunda por 170 segmentos, la tercera por 91 segmentos, etc.
Al final, me gustaría un vector de 1657 números que representan la longitud de los segmentos de línea en el SpatialLinesDataFrame
¿Hay alguna solución rápida?
> class(routes)
[1] "SpatialLinesDataFrame"
attr(,"package")
[1] "sp"
> str(routes)
Formal class 'SpatialLinesDataFrame' [package "sp"] with 4 slots
..@ data :'data.frame': 1657 obs. of 3 variables:
.. ..$ start_time: Factor w/ 1631 levels "2016/09/09 00:00:02",..: 1 2 3 4 5 6 7 8 9 10 ...
.. ..$ duration : int [1:1657] 786 1248 738 786 651 660 616 889 408 475 ...
.. ..$ difftime :Class 'difftime' atomic [1:1657] 2 4 19 67 92 119 170 202 206 213 ...
.. .. .. ..- attr(*, "units")= chr "secs"
..@ lines :List of 1657
.. ..$ :Formal class 'Lines' [package "sp"] with 2 slots
.. .. .. ..@ Lines:List of 1
.. .. .. .. ..$ :Formal class 'Line' [package "sp"] with 1 slot
.. .. .. .. .. .. ..@ coords: num [1:93, 1:2] -79.9 -79.9 -79.9 -79.9 -79.9 ...
.. .. .. ..@ ID : chr "0"
.. ..$ :Formal class 'Lines' [package "sp"] with 2 slots
.. .. .. ..@ Lines:List of 1
.. .. .. .. ..$ :Formal class 'Line' [package "sp"] with 1 slot
.. .. .. .. .. .. ..@ coords: num [1:170, 1:2] -79.9 -79.9 -79.9 -79.9 -79.9 ...
.. .. .. ..@ ID : chr "1"
.. ..$ :Formal class 'Lines' [package "sp"] with 2 slots
.. .. .. ..@ Lines:List of 1
.. .. .. .. ..$ :Formal class 'Line' [package "sp"] with 1 slot
.. .. .. .. .. .. ..@ coords: num [1:91, 1:2] -79.9 -79.9 -79.9 -79.9 -79.9 ...
.. .. .. ..@ ID : chr "2"