Reduzieren Sie die Auflösung eines Shapefiles in R (oder QGIS falls nötig)

12

Ich verwende Shapefiles der Geschichte der US-Bundesstaaten von NHGIS , um Karten in R zu erstellen. Diese Shapefiles haben eine viel höhere Auflösung als ich beim Erstellen von Karten im Landesmaßstab benötige: über 2 Millionen Beobachtungen für eine Datei. Gibt es eine Möglichkeit, die Auflösung dieser Shapefiles in R zu reduzieren? Bei Bedarf kann ich das auch in QGIS machen.

Lincoln Mullen
quelle
Kannst du mehr erklären. Auflösung ist mit Bildern verbunden. Meinen Sie damit, dass ein Polygon zu viele Knoten enthält, die zu viele Details liefern? Oder gibt es zu viele Punkte in einem Punkt-Shapefile?
Ryan Garnett
2
@Ryan Obwohl Auflösung in der Tat mit Bildern verbunden ist, ist dieses Konzept auch für Vektordaten sinnvoll. Für Polylinien- und Polygon-Features kann die Anzahl der Scheitelpunkte pro Bogenlänge geschätzt werden. Die Auflösung kann nicht immer genau bestimmt werden, indem Vektordaten untersucht werden (z. B. eine Reihe von hochauflösenden, aber weit auseinander liegenden Punktmerkmalen). Die Auflösung wird in der Regel anhand geeigneter Metadaten ermittelt.
whuber
Ich meine, dass das Shapefile viel mehr Punkte enthält, als für die Erstellung einer Landkarte einer Nation erforderlich sind. Ich möchte diese Detailgenauigkeit, um beispielsweise eine Karte einer Stadt zu erstellen. Der Grund, warum dies für mich wichtig ist, ist, dass das Erstellen von Plots langsam und damit zeitaufwändig ist.
Lincoln Mullen

Antworten:

9

Sie können gSimplifydas rgeosPaket verwenden. Wenn Sie das topologyPreserve=TRUEFlag hinzufügen , wird die Topologie beibehalten.

Beachten Sie, dass es immer noch zu überlappenden Zeilen kommen kann. Wir benötigen eine Implementierung dieses robusten DP-Algorithmus in R:

http://www.sciencedirect.com/science/article/pii/S0098300413002380

[dieser Link möglicherweise hinter einer Paywall]

Raumfahrer
quelle
+1 Gut zu wissen. Die rgeosDokumente finden Sie unter cran.r-project.org/web/packages/rgeos/rgeos.pdf .
Whuber
1

Eine Standardmethode zum "Ausdünnen" linearer Formen (einschließlich Polygongrenzen) ist der Douglas-Peucker-Algorithmus . Mindestens zwei RPakete implementieren dies: dpim Shapefiles-Paket und thinnedSpatialPolyim Guerry-Paket .

Beachten Sie, dass durch das Ausdünnen benachbarter Polygone in der Regel geringfügige Lücken und Überlappungen in ihren Grenzen entstehen. Dabei werden die topologischen Beziehungen untereinander nicht berücksichtigt. Mir ist kein RPaket bekannt, das beim Ausdünnen die Topologie beibehält. Für kleine Kartierungszwecke wie diese sollte dies kein ernstes Problem sein.


Übrigens, weil niemand mehr weiß, wie man Deutsch ausspricht :-), hat Tom Poiker vor einiger Zeit die Schreibweise seines Namens geändert.

whuber
quelle
Sie möchten sehr vorsichtig sein, wenn Sie Geometrie "ausdünnen". Wenn Sie über mehrere Ebenen mit gemeinsamen Grenzen verfügen, kann das Ausdünnen zu Lücken führen, die zu Bild- und Genauigkeitsfehlern führen. Durch zu starkes Ausdünnen können die Grenzen gezackt und zu stark vereinfacht werden. Sie werden mit den Toleranzen innerhalb des Simplify spielen und testen wollen.
Ryan Garnett