Создать пустой объект пространственных линий

Я пытаюсь создать пустой объект SpatialLines. С полигонами это легко:

SpatialPolygons(list())

Для пространственных линий это не работает:

SpatialLines(LinesList = list())
Error in bb[1, ] : incorrect number of dimensions
SpatialLines(LinesList = Lines(list(),ID = "a"))
Error in as.list.default(X) : 
  no method for coercing this S4 class to a vector
SpatialLines(LinesList = Lines(slinelist = Line(coords = cbind(x = c(), y = c())), ID = c()))
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘coordinates’ for signature ‘"NULL"’

Кто-нибудь знает, как я могу создать пустой объект SpatialLines?

Временное решение

Я нашел обходной путь, который, возможно, не лучший способ сделать это. Я генерирую пространственную линию без длины:

SpatialLines(list(Lines(Line(coords = cbind(x = c(0,0), y = c(0,0))), ID = "A")))

person Tobias Dekker    schedule 13.10.2017    source источник


Ответы (1)


Интересный вопрос!

Единственный способ обойти это, создав фиктивную строку и удалив ее следующим образом:

sl <- SpatialLines(LinesList = list(Lines(Line(matrix(0, ncol = 2)), ID = NA)))
sl <- sl[0]
length(sl)
# [1] 0

При добавлении вашей фиктивной строки длина возвращается как 1, как и ожидалось:

length(rbind.SpatialLines(sl, SpatialLines(list(Lines(Line(coords = cbind(x = c(0,0), 
                                                                          y = c(0,0))), 
                                                           ID = "A")))))
# [1] 1
person loki    schedule 13.10.2017