Gekachelte Verarbeitung großer Datasets
Um die Performance und Skalierbarkeit von Feature-Overlay-Werkzeugen wie Vereinigen (Union) und Überschneiden (Intersect) zu verbessern, wird eine Funktionslogik mit dem Namen adaptive Unterteilung hinzugefügt. Diese Logik kommt immer dann zum Einsatz, wenn Daten aufgrund des beschränkten physikalischen Speichers nicht verarbeitet werden können. Um den Vorgang innerhalb des verfügbaren Arbeitsspeichers ausführen zu können und dadurch die Performance erheblich zu steigern, erfolgt die Verarbeitung schrittweise an mehreren Unterteilungen der ursprünglichen Ausdehnung. Features, die über die Kanten dieser Unterteilungen (auch Kacheln genannt) hinausreichen, werden an den Kanten der Kacheln geteilt und im letzten Verarbeitungsschritt wieder zu einem Feature zusammengesetzt. Die an den Kachelkanten eingefügten Stützpunkte bleiben in den Ausgabe-Features erhalten. Kachelgrenzen können auch in der Ausgabe-Feature-Class belassen werden, wenn ein zu verarbeitendes Feature so groß ist, dass das Feature mit dem verfügbaren Arbeitsspeichers nicht wieder in seinen Originalzustand zurückversetzt werden kann.
Warum werden die Daten unterteilt?
Die Werkzeuge zur Overlay-Analyse bieten die beste Performance, wenn die Verarbeitung vollständig innerhalb des auf dem Computer verfügbaren physischen Arbeitsspeichers (RAM) erfolgen kann. Wenn Sie mit Datasets arbeiten, die eine große Anzahl von Features oder sehr komplexe Features mit Tausenden oder Millionen von Stützpunkten enthalten, ist dies in manchen Fällen nicht mehr möglich. Ohne die Verwendung von Kacheln reicht der physikalische Speicher nicht aus, und der virtuelle Speicher wird verwendet. Wenn der virtuelle Speicher erschöpft ist, wird ein internes Auslagerungssystem verwendet. Jede dieser aufeinanderfolgenden Methoden der Speicherverwaltung (physikalisch, virtuell, internes Auslagerungssystem) ist exponentiell langsamer als der jeweils vorherige Modus.
Wie sehen die Kacheln aus?
Jeder Prozess beginnt mit einer einzelnen Kachel, die sich über die gesamte Ausdehnung der Daten erstreckt. Wenn die Daten in dieser Kachel zu umfangreich sind, um im physikalischen Speicher verarbeitet werden zu können, wird die Kachel in vier gleich große Kacheln unterteilt. Anschließend beginnt die Verarbeitung mit einer der Unterkacheln, die ggf. weiter unterteilt wird, falls die Daten in den Unterkacheln noch immer nicht vollständig im Arbeitsspeicher verarbeitet werden können. Dieser Vorgang wird so oft wiederholt, bis jede Kachel innerhalb des physikalischen Speichers verarbeitet werden kann. Siehe folgendes Beispiel:
Footprint aller Eingabe-Features
Der Prozess beginnt mit einer Kachel, die die gesamte Ausdehnung aller Datasets umfasst. Diese wird Kachelebene 1 genannt.
Wenn die Daten zu umfangreich für eine Verarbeitung im Speicher sind, wird die Kachel der Ebene 1 in vier gleich große Kacheln unterteilt. Diese vier Unterkacheln bilden Kachelebene 2.
Je nach Datenmenge in jeder Kachel werden einige Kacheln möglicherweise weiter unterteilt, andere Kacheln jedoch nicht.
Bei welchen Werkzeugen werden Unterteilungen verwendet?
Bei folgenden Werkzeugen in der Toolbox "Analysis Tools" kommt bei großen Datenmengen die Unterteilungslogik zum Einsatz:
- Puffer (bei Verwendung der Dissolve-Option)
- Ausschneiden
- Radieren
- Identität
- Überschneiden (Intersect)
- Trainingsgebiet teilen
- Symmetrische Differenz
- Vereinigen (Union)
- Aktualisieren
Bei diesen Werkzeugen der Toolbox "Data Management" kommt bei großen Datasets ebenfalls die Unterteilungslogik zum Einsatz:
- Zusammenführen (Dissolve)
- Feature in Linie
- Feature in Polygon
- Polygon zu Linie
Verarbeitung schlägt aufgrund von unzureichendem Arbeitsspeicher fehl
Die Unterteilungsmethode reicht bei sehr großen Features, die mehrere Millionen Stützpunkte besitzen, ggf. nicht mehr aus. Das mehrmalige Unterteilen und Zusammensetzen sehr großer Features über Kachelkanten hinweg ist äußerst speicherintensiv und kann zu Speicherfehlern führen, wenn das Feature zu groß ist. Dies hängt davon ab, wie viel physikalischer Speicher oder RAM auf dem Computer verfügbar ist, auf dem der Vorgang ausgeführt wird. Es kann sein, dass einige große Features nur bei bestimmten Computerkonfigurationen zu einem Fehler aufgrund von unzureichendem Arbeitsspeicher führen. Der Speicherfehler kann auf demselben Computer auch nur gelegentlich auftreten, und zwar in Abhängigkeit von den Ressourcen, die gerade von anderen Anwendungen genutzt werden. Beispiele für sehr große Features mit vielen Stützpunkten sind Straßenumrisse für eine ganze Stadt oder ein Polygon für eine komplexe Flussmündung.
Die Meldung "Nicht genügend Speicher" kann auch auftreten, wenn während der Verarbeitung durch ein Werkzeug noch eine weitere Anwendung oder ein anderes Geoverarbeitungswerkzeug ausgeführt wird. Dieser zweite Vorgang nutzt unter Umständen einen Teil des verfügbaren physikalischen Speichers, den der Unterteilungsvorgang als verfügbar eingeplant hat, sodass der Unterteilungsvorgang mehr Speicher in Anspruch nimmt, als eigentlich verfügbar ist. Führen Sie deshalb keine weiteren Vorgänge auf dem Computer aus, während Sie große Datasets verarbeiten.
Ein empfohlenes Verfahren ist die Verwendung des Werkzeugs Stückeln zum Unterteilen großer Features in kleinere Features vor der Verarbeitung.
Welches Datenformat wird für umfangreiche Daten empfohlen?
Für Personal-Geodatabases und Shapefiles gilt eine Größenbeschränkung von 2 GB. Falls die Ausgabe eines Vorgangs diese Größe überschreitet, können Fehler auftreten. Für Enterprise- und File-Geodatabases gilt diese Beschränkung nicht. Daher werden diese Formate als Ausgabe-Workspace empfohlen, wenn Sie sehr große Datasets verarbeiten. Bei Enterprise-Geodatabases wenden Sie sich an den Datenbankadministrator, um Informationen zu den Richtlinien zum Laden von Daten zu erhalten. Für das ungeplante/nicht genehmigte Laden großer Datenmengen können Einschränkungen gelten.