Ich habe eine Liste der räumlichen Puffer (30000 Puffer), die ich mit der Funktion erstellt habe lapply
:
buff.pts <- lapply(1:nrow(pts.prj), FUN=function(l){
buff <- gBuffer(pts.prj[l,], width=1000) ## 1km
return(buff)
}))
> head(buff.pts)
[[1]]
class : SpatialPolygons
features : 1
extent : 307941.8, 311941.8, 4994518, 4998518 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0
[[2]]
class : SpatialPolygons
features : 1
extent : 307226, 311226, 4991153, 4995153 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0
Wie kann ich aus dieser Liste alle räumlichen Puffer zusammenführen, um ein Shapefile mit den 30000 Puffern (oder Features) zu erhalten? (Dieses Shapefile wird dann in der Funktion verwendet, aggregate
um räumliche Polygone nach Attributen zu aggregieren.)
Ich habe diesen Code getestet, erhalte jedoch die folgende Fehlermeldung:
test <- as.data.frame(do.call("rbind", buff.pts))
Error in as.data.frame(do.call("rbind", buff.pts)) :
error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': Error in validObject(res) :
invalid class “SpatialPolygons” object: non-unique Polygons ID slot values
lapply
anstatt mitgBuffer
zu arbeitenbyid = TRUE
?Antworten:
Anhand einer Liste von
SpatialPolygons
Objekten können Sie einen räumlichen Polygondatenrahmen mit einem Feature pro ursprünglichemSpatialPolygons
Feature erstellen .Beispieldaten: Dies
spl
ist eine Liste von 12SpatialPolygons
Objekten. Stellen Sie sicher, dass Ihr Objekt die gleichen Ergebnisse liefert, und testen Sie es an einem kleinen Beispiel, bevor Sie es mit 30.000 ausführen:Sie möchten ein einzelnes
Spatial Polygons
Objekt mit allen darin enthaltenen Features erstellen , um anschließend einen Datenrahmen für räumliche Polygone zu erstellen :Dies entnimmt dem
polygons
Objekt den ersten Slot (und es sollte nur einen geben, da jedes Listenelement derzeit ein einzelnes Feature ist) und erstellt dann eine Liste von Polygonen-Objekten, in die Sie einen Feed einfügenSpatialPolygons
, um ein Multi-Feature zu erstellenSpatialPolygons
. Zeichnen Sie dies, und Sie sollten alle Ihre Funktionen sehen. Wenn Sie als Nächstes speichern möchtenshapefile
, müssen Sie einige Daten hinzufügen. In Ermangelung von etwas anderem erstelle ich eine einfache 1 bis 12 ID-Spalte:Das
FALSE
Flag stoppt einfach R und versucht, die räumlichen und nicht-räumlichen Daten neu anzuordnen, um sie abzugleichen. Möglicherweise möchten Sie die Puffergrößen in den Datenrahmen einfügen oder so.Job erledigt.
quelle
So führen Sie eine Liste von Spatial-Objekten zusammen:
quelle
Sie können das Argument makeUniqueIDs in rbind verwenden, wenn Ihre Polygone keine eindeutigen IDs haben.
quelle