Ich frage mich, wie ich räumliche Polygone mit R-Code verbinden kann.
Ich arbeite mit Volkszählungsdaten, bei denen sich bestimmte Bereiche im Laufe der Zeit ändern, und ich möchte die Polygone und die entsprechenden Daten verbinden und einfach über die verbundenen Bereiche berichten. Ich führe eine Liste von Polygonen, die sich von Volkszählung zu Volkszählung ändern und die ich zusammenführen möchte. Ich möchte diese Liste der Gebietsnamen als Nachschlageliste für Volkszählungsdaten aus verschiedenen Jahren verwenden.
Ich frage mich, welche R-Funktion verwendet werden soll, um ausgewählte Polygone und die entsprechenden Daten zusammenzuführen. Ich habe es gegoogelt, aber einfach durch die Ergebnisse verwirrt.
polygon
r
spatial-statistics
attribute-joins
census
Geokonfus
quelle
quelle
R
dermerge
Funktion implementiert werden .Antworten:
Die folgende Lösung basiert auf einem Beitrag von Roger Bivand zu R-sig-Geo . Ich habe sein Beispiel genommen, in dem das deutsche Shapefile durch einige Volkszählungsdaten aus Oregon ersetzt wurde, die Sie hier herunterladen können .
Beginnen wir mit dem Laden der erforderlichen Pakete und dem Importieren des Shapefiles in R.
Als nächstes benötigen Sie eine Gruppierungsvariable, um die Daten zu aggregieren. In unserem Beispiel basiert die Gruppierung einfach auf den einzelnen Kreiskoordinaten. In der Abbildung unten geben schwarze Ränder die ursprünglichen Polygone an, während rote Ränder die durch aggregierten Polygone darstellen
oregon.id
.So weit, ist es gut. Datenattribute, die sich auf die Unterregionen des ursprünglichen Shapefiles beziehen (z. B. Bevölkerungsdichte, Fläche usw.), gehen jedoch bei der Ausführung verloren
unionSpatialPolygons
. Sie möchten wahrscheinlich auch Ihre mit dem Shapefile verknüpften Volkszählungsdaten aggregieren, sodass Sie einen Zwischenschritt benötigen.Sie müssen zuerst Ihre Polygone in einen Datenrahmen konvertieren, um die Aggregation durchzuführen. Nehmen wir nun die Datenattributspalten sechs bis acht ("AREA", "POP1990", "POP1997") und aggregieren Sie sie gemäß den oben angegebenen Funktions-IDs
sum
.Zum Schluss konvertieren Sie Ihren Datenrahmen wieder in ein
SpatialPolygonsDataFrame
zuvor einheitliches Shapefileoregon.union
und Sie erhalten sowohl verallgemeinerte Polygone als auch Ihre Volkszählungsdaten, die aus dem obigen Schritt der Zusammenfassungsaggregation abgeleitet wurden.quelle
Hier ist eine Lösung mit dem sf-Paket:
quelle
summarise()
Derivate mit demdo_union
Argument verwendet, da ich gerade so etwas gemacht habesummarise_if(shapefile, predic.function, sum, na.rm = TRUE, do_union = TRUE)
, was dazu führte, dass in jeder Zelle auch ein WAHR summiert wurde (dh +1 für alle Operationen). Müssen Sie weitere Nachforschungen anstellen, um herauszufinden, ob dies gemeldet werden sollte (zumindest für eine zusätzliche Warnung) ...?