Ich habe 2 Polygone in QGIS erstellt. Wenn Sie sie in R verwenden, werden Polygone automatisch zu SpatialPolygonsDataFrame (SPDF). Ich möchte sie in einzelne SPDF zusammenführen (wie es in ArcGis mit Tool Merge sehr einfach ist ). Ich bin mir sicher, dass es eine einfache Möglichkeit geben sollte, dies in R zu vervollständigen, aber ich kann nicht herausfinden, wie. Die Merge- Funktion scheint nur data.frames zusammenzuführen. Die Aggregatfunktion löst mehrere Polygone in einem SHP auf. gIntersect (durch Eingabe der Join-Funktion) gibt einen logischen Wert zurück, nicht jedoch das SPDF.
Daten sind hier verfügbar: http://ulozto.cz/xpoo5jfL/ab-zip
library(sp)
library(raster)
library(rgeos)
library(spatstat)
library(rgdal)
library(maptools)
setwd("C:/...")
a<-readOGR(dsn=getwd(), layer="pol.a")
b<- readOGR(dsn=getwd(), layer="pol.b")
ab<-merge(a, b) # what tool if not "merge" to use??
r
spatial-analyst
merge
maptools
Maycca
quelle
quelle
Antworten:
Wenn Sie keine Topologie zusammenführen müssen, sondern nur neue Polygone hinzufügen möchten, können Sie einfach Folgendes verwenden:
ab <- rbind(a,b)
Wenn der Fehler "Nicht eindeutige Werte für Polygon-ID-Slots" angezeigt wird, bedeutet dies, dass die Rownamen der Objekte identisch sind. Um dies zu beheben, können Sie spChFIDs verwenden, um die Rownamen und die zugehörigen Slot-Beziehungen zu ändern. Da die Slots im Objekt die Rownamen verwenden, um das Objekt zuzuordnen, können Sie nicht einfach row.names im Slot @data ändern.
Die union (union_sp) -Funktion im Raster-Paket erledigt dies und ruft gIntersects von rgeos hinter den Kulissen auf. Dies ist eine sehr praktische Hilfsfunktion.
**** Edit 08-06-2018 Es gibt ein undokumentiertes Argument, mit dem das Problem der doppelten ID übersprungen werden kann.
quelle
ab <- bind(a, b)
um diesen Fehler zu vermeidenSuper einfache Lösung von @mdsumner:
führte zu :
quelle
raster::union
aus, als ob es auch für die SpatialLinesDataFrame-Klasse funktioniert!quelle