2017-10-13 7 views
1

Ich versuche, ein leeres SpatialLines-Objekt zu erstellen. Mit Polygonen ist es einfach:Erstellen Sie leere räumliche Linien Objekt

SpatialPolygons(list()) 

Für räumliche Linien funktioniert das nicht:

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

Weiß jemand, wie ich es könnte ein leeres SpatialLines Objekt erstellen?

Umgehung

fand ich eine Abhilfe, die es zu tun vielleicht nicht der beste Weg ist. Ich erzeuge eine räumliche Linie ohne Länge:

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

Antwort

1

Interessant Q!

Der einzige Weg, ich in der Lage war, um zur Arbeit war durch eine Dummy-Linie zu schaffen und es wie folgt zu entfernen:

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

Wenn Ihre Dummy-Leitung die Länge zurückgegeben wird als 1 Zugabe wie erwartet:

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