Количество сегментов в SpatialLinesDataFrame

После импорта кадра данных пространственных линий с помощью readOGR я хотел бы определить количество сегментов линии (узлов) в каждой строке. Я не могу найти практический способ просто экспортировать длины в виде вектора.

routes@lines приведет меня к линейным слотам, но как тогда получить длину каждого из них?

Например, в примере данных ниже мы видим, что первая строка состоит из 93 сегментов, вторая строка состоит из 170 сегментов, третья — из 91 сегмента и так далее.

В конце концов, мне нужен вектор из 1657 чисел, представляющих длину отрезков линии в SpatialLinesDataFrame

Есть ли быстрое решение?

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

person the_darkside    schedule 07.04.2017    source источник
comment
спасибо, но это не работает - должно ли быть что-то в конце coords$?   -  person the_darkside    schedule 07.04.2017
comment
Да, это сработало!   -  person the_darkside    schedule 07.04.2017


Ответы (1)


Исходя из структуры вывода,

sapply( routes@lines, function (x) dim(x@Lines[[1]]@coords)[1] )
person Zheyuan Li    schedule 07.04.2017