2012-06-17 4 views
5

Ich glaube, ich musste meine schrecklich formulierte vorherige Frage umformulieren (löschte es). Hier ist ein weiterer Versuch. Ich möchte mich mit benachbarten Regionen verbinden, so dass ihre gemeinsame Grenze verschwindet und nur ihre äußere Linie zu sehen ist.Zusammenführung benachbarter Regionen in R (aggregierte räumliche Daten)?

Hier ist ein reproduzierbares Beispiel:

require(shapefiles) 
require(sp) 

xx <- readShapeSpatial(system.file("shapes/sids.shp", package="maptools")[1], 
        IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66")) 

# show all the subregions 
plot(xx) 

enter image description here

Jetzt einzigen Region Bereiche 3 und 5

plot(xx[c(3,5),]) 

prüfen lassen Wie kann ich aggregieren gerade diese Regionen. In der Praxis möchte ich eine Karte des gesamten Kontinents haben, die alle Länder zeigt und eine Karte produziert, die Nordamerika und Südamerika zeigt.

Für mich sieht das aus wie eine ziemlich häufige Aufgabe, aber ich kann nicht die richtige Funktion finden, um es so weit zu tun. Verpasse ich gerade eine Funktion oder kann ich einfach manuell darauf zugreifen?

enter image description here

+2

Verwenden Sie 'unionSpatialPolygons()' aus dem Paket 'maptools': http://gis.stackexchange.com/questions/21360/merging-2-polygon-adjacent-to-each-other-using-r –

+0

Ich weiß, deine Frage sagt in R, aber die räumliche Manipulation Bibliothek par excellence ist Postgres/Postgis. Sie können auch R gespeicherte Prozeduren in Postgres schreiben, siehe http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut01, was bedeutet, dass Sie die Vorteile der räumlichen Indexierung und Funktionen von Postgis und den Statistiken von R erhalten ein Shp zu Postgres Import-Funktion auch, die mit Postgres ausgeliefert wird. –

Antwort

9

Das rgeos Paket bietet eine Reihe von ausgezeichneten Tool für Spatial* Datenhandling, dass in diesem Fall verwendet werden kann.

Zum Beispiel:

library(rgeos) 
regionOfInterest <- gUnion(xx[3,], xx[5,]) 

Dies hat auch das gleiche Ergebnis, und kann nützlicher für mehrere Polygone sein:

regionOfInterest <- gUnionCascaded(xx[c(3,5), ]) 

Das Ergebnis aus plot(regionOfInterest):

enter image description here