Sehr große Polygon-Datasets in ArcGIS ausschneiden?

8

Ich versuche, ein großes Polygon-Dataset (~ 5 GB, Tausende von Features) durch ein viel kleineres Polygon-Dataset (~ 40 Features) zu beschneiden. Gibt es eine bewährte Methode oder einen effizientesten Weg, um diese Aufgabe auszuführen?

Der Standard- Geoprozessor-Clip wird auf unbestimmte Zeit für einen Datensatz dieser Größe ausgeführt. Wäre irgendeine Form der räumlichen Auswahl und des Exports effizienter?

EDIT : Einige gute Antworten unten. Ich habe die meiner Meinung nach gründlichste Antwort ausgewählt, aber jede Antwort bietet einen einzigartigen Einblick in das Problem. Vielen Dank!

Radar
quelle
4
Wie ist der Umfang des kleineren Datensatzes mit dem des größeren zu vergleichen? Wenn die Ausmaße sehr unterschiedlich sind, haben Sie in Betracht gezogen, zuerst den großen Datensatz mit der Ausdehnung des kleineren zu beschneiden (oder lediglich über die Kreuzung auszuwählen) , um die Größe des Problems zu verringern?
whuber
2
Sehr große Polygon-Datasets in ArcGIS ausschneiden? Tu es nicht. Nachdem wir dies viele Jahre lang versucht haben, verwenden wir eine Datenbank und bringen SQL zum Laufen. Zeit ist Geld.
Mapperz
@whuber - +1 Die Ausmaße sind ziemlich ähnlich, obwohl ich in der Vergangenheit Ihre vorgeschlagene Methode verwendet habe.
Radar
Schade ... Ich stimme Mapperz von Herzen zu. Ich sehe auch, dass @dmahr eine sehr nette Antwort gepostet hat, die Ihnen helfen soll, eine Lösung zu finden oder sie zu umgehen, falls eine möglich ist. Es bietet eine gute Strategie für den Umgang mit großen Datenmengen mit jeder Software.
whuber
Aus diesem Blog geht hervor, dass es in ArcGIS ziemlich problematisch ist. donmeltz.com/blog/index.php/2011/06/11/…
Nicklas Avén

Antworten:

13

Wie immer bei Skalierbarkeitsproblemen ist es am besten, klein und einfach zu beginnen und sich stetig zu großen und komplexen hochzuarbeiten.

Im Fall von Clips sollte es intelligent genug sein, um mit großen Datenmengen umzugehen, da es sie intern kachelt . Versuchen Sie jedoch, Clip mit dem Eingabedatensatz (den zu beschneidenden Daten) und dem Clip-Dataset (den Daten, mit denen der Clip ausgeführt wird) mit vielen, viel weniger Funktionen auszuführen, da dies nicht funktioniert . Wie eine Clip-Funktion mit nur dem Bereich um sie herum im Eingabedatensatz (verwenden Sie Definitionsabfragen, um sie zu verkleinern). Stellen Sie sicher, dass alles in Ordnung ist, und erhöhen Sie dann den Umfang des Geoverarbeitungsvorgangs stetig, bis sich die Leistung verschlechtert.

Ein paar spezifische Ideen:

  • Lösen Sie die Clip-Features in eine einzelne, mehrteilige Feature-Class auf.

  • Reduzieren Sie die Dateigröße der Eingabefunktionen mithilfe von Polygon vereinfachen . Ein 5-GB-Vektordatensatz ist enorm - selbst ein Shapefile aller 250.000 US-Volkszählungsblockgruppen ist nur etwa 1 GB groß.

  • Teilen Sie die Eingabefunktionen in Teile auf. Theoretisch sollten die internen Kachelroutinen innerhalb des Geoverarbeitungswerkzeugs dies bereits tun, aber Sie wissen es nie. Möglicherweise liegt ein Problem mit der Beschränkung der 32-Bit-Dateigröße vor, bei dem kein Shapefile größer als 2 32 Byte = 4,29 GB sein kann.

Einige andere, allgemeinere Tipps zur Geoverarbeitung:

  • Stellen Sie sicher, dass beide Datensätze dasselbe Koordinatensystem haben. Wenn möglich, ist es schneller, beide in einem geografischen Koordinatensystem ohne Projektion zu haben.

  • Stellen Sie sicher, dass Ihnen kein Netzlaufwerk ausgeht. Verwenden Sie die schnellste lokale Festplatte oder, wenn möglich, eine SSD.

  • Laden Sie den Clip-Datensatz in den Speicher .

  • Löschen Sie nicht benötigte Attributfelder (und fügen Sie sie später bei Bedarf wieder hinzu).

  • Weitere Tipps zur Leistung der Geoverarbeitung .

dmahr
quelle
5
+1 Sehr schön. Könnte ich vorschlagen, das Problem etwas quantitativer anzugehen? Nutzen Sie die Gelegenheit, um die Vorgänge zeitlich zu steuern, anstatt nur auf den Beginn einer Leistungsverschlechterung zu warten. Sogar etwas so Grobes wie das Beobachten der Systemuhr kann nützlich sein. Das Zeichnen der Zeit anhand der Größe des Problems kann angeben, wie es skaliert wird, Ihnen die Möglichkeit geben, den Aufwand auf das gesamte Problem zu extrapolieren, und sogar Stellen aufdecken, an denen sich die Skalierung ändert (Sie treffen beispielsweise auf eine Ressourcenwand oder den internen Algorithmus). . Es ist leicht zu bekommen und kann sehr nützlich sein.
whuber
Da stimme ich Whuber voll und ganz zu. Ich verfolge immer die Leistungszeit der Geoverarbeitung, insbesondere bei Timedelta-Objekten in Python (wenn ich mit ArcPy Skripte schreibe). Ein weiterer Tipp ist die Verwendung eines voll funktionsfähigen Systemmonitors wie Process Explorer . Dies kann Ihnen viel mehr Informationen über die Leistung geben und Ihnen helfen, Engpässe zu identifizieren.
dmahr
7

Einige ArcGIS-Funktionen wie Union und Intersect verwenden die adaptive Unterteilungsverarbeitung, wie unter Kachelverarbeitung großer Datenmengen beschrieben . Leider sieht es so aus, als hätte Clip kein großes Geoverarbeitungswerkzeug.

Möglicherweise können Sie dieses Konzept über ein ModelBuilder- oder Python-Skript replizieren, das das Split-Tool (ArcInfo) verwendet , um übergroße Datasets zu verarbeiten.

RyanKDalton
quelle
7

Sie können auch ArcGIS aufgeben und versuchen, den Clip in OGR zu erstellen. Eine Erklärung finden Sie hier . Ich habe festgestellt, dass dies funktioniert, wenn nichts anderes funktioniert!

Darren Cope
quelle
1
ogr2ogr -clipsrc clipping_polygon.shp output.shp input.shp Verdammt, das ist wunderschön.
RK
3

Ich denke, auch die Auswahl nach Ort wird für Sie funktionieren. Zuerst wählen Sie alle Polygone aus, die sich mit Ihrem kleineren Shapefile schneiden, und löschen sie dann. hoffentlich geht das schneller. Ich weiß, ob es für Sie funktioniert. Vielen Dank.

Ramakrishna Billakanti
quelle
Im Allgemeinen keine schlechte Idee - aber haben Sie die Kommentare zur ursprünglichen Frage gelesen? Die vorläufige Abfrage wird die Größe des Problems nicht wesentlich verringern.
whuber
2
Das funktioniert wirklich bei mir. Übrigens ist dies etwas ganz anderes als das Abschneiden in dem Maße. Ich habe zwei Vektordateien (eine mit> 7 Millionen Features und eine mit ~ 5000) mit demselben Umfang, aber mit weniger als 1% dieser 7 Millionen Features, die die Clip-Features schneiden. Ich habe mehr als 8 Stunden gewartet, bis der Clip den gesamten Datensatz bearbeitet hat ... er wurde nie beendet, bevor ich aufgegeben habe. Stattdessen habe ich die sich überschneidenden Features nach Position ausgewählt, die Auswahl in eine eigene Feature-Class exportiert und dann den Clip ausgeführt. Gesamtzeit dafür (einschließlich der Auswahl): ca. 1,5 Minuten.
Tom
Es ist eine gute Wahl, um Punkte wie in meinem Fall durch Polygone zu beschneiden. Ich habe versucht, ungefähr 1 Million Punkte durch 1 Million Polygone zu schneiden - lassen Sie es über zwei Tage laufen und es wurde nie beendet. Die Auswahl nach Standort und Export erfolgte in weniger als 5 Minuten. Ich weiß nicht, warum ich überhaupt nicht an diese Option gedacht habe :-)
Janina