Um die Performance und Skalierbarkeit von Feature-Overlay-Werkzeugen wie Vereinigen (Union) und Überschneiden (Intersect) zu verbessern, wird eine Funktionslogik, adaptive Unterteilung hinzugefügt. Diese Logik kommt immer dann zum Einsatz, wenn Daten aufgrund des beschränkten virtuellen Speichers nicht verarbeitet werden können. Um den Vorgang innerhalb des verfügbaren virtuellen Speichers ausführen zu können und dadurch die Performance 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 aufgrund des fehlenden virtuellen Speichers nicht wieder in seinen Originalzustand zurückversetzt werden kann.
Die Logik für adaptive Unterteilung ist dynamisch je nach verfügbarem virtuellem Speicher und je nach der Komplexität der Daten. Wenn auf einem Computer ein Überlagerungsvorgang ausgeführt wird, kann das zur Folge haben, dass die Daten unterschiedlich in Kacheln aufgeteilt werden, falls sich der verfügbare Arbeitsspeicher ändert.
Die adaptive Unterteilung kann durch den Einsatz der Parallelverarbeitung von Kacheln optimiert werden. Wenn die Parallelverarbeitung aktiviert ist, teilen sich alle Kacheln, die jeweils von einem anderen Kern verarbeitet werden, den insgesamt verfügbaren virtuellen Speicher auf dem System. Das bedeutet, dass die einzelnen Kacheln bei der Parallelverarbeitung kleiner sein müssen als bei der sequenziellen Verarbeitung. Mit der adaptiven Unterteilung wird die Größe der einzelnen Kacheln verfolgt, um sicherzustellen, dass die bei der Parallelverarbeitung gleichzeitig verarbeiteten Kacheln die Gesamtgröße des verfügbaren virtuellen Speichers nicht überschreitet. Die Parallelverarbeitung ist nicht immer schneller. Die Größe und Komplexität der Daten muss den Aufwand für die Verwaltung der parallelen Prozesse übersteigen, damit sich die Performance steigern lässt. Informationen zum Aktivieren der Parallelverarbeitung für diese Werkzeuge, die dies unterstützen, finden Sie in der Dokumentation zu den jeweiligen Werkzeugen.
Vorteile der Unterteilung von Daten
Werkzeuge bieten die beste Performance, wenn die Verarbeitung vollständig innerhalb des auf dem Computer verfügbaren virtuellen Speichers (freier Speicher, der weder vom System noch von anderen Anwendungen genutzt wird) erfolgen kann. Wenn Sie mit Datasets arbeiten, die eine große Anzahl von Features, komplexe Features mit komplexer Feature-Interaktion oder Features, die Tausende oder Millionen von Stützpunkten (oder eine Kombination dieser drei) enthalten, ist dies in manchen Fällen nicht mehr möglich. Wenn keine Kacheln verwendet werden, ist der verfügbare Speicher schnell erschöpft und das Betriebssystem nutzt ein Auslagerungssystem (Verwendung eines sekundären Speichers als Hauptspeicher). Eine Auslagerung führt zu Performance-Einbußen, sodass dem System zu einem bestimmten Zeitpunkt nicht genügend Ressourcen zur Verfügung stehen und der Vorgang fehlschlägt. Mithilfe der Kachelung lässt sich eine Auslagerung vermeiden. In extremen Fällen wird die Verwaltung des Speichers für die Verarbeitung an das System übergeben, um die Verarbeitung abzuschließen, indem dem Betriebssystem alle Ressourcen zu diesem Zweck zur Verfügung gestellt werden.
Als sich 64-Bit-Anwendungen immer mehr durchgesetzt haben, entstand der Eindruck, alles würde immer schneller werden. Das ist jedoch nicht immer der Fall. Durch den Einsatz der 64-Bit-Verarbeitung kann mehr auf einmal erledigt werden. Dadurch kann der Eindruck einer besseren Performance entstehen. Einige Operationen sind in Bezug auf ein Arbeitsinkrement sogar langsamer. Eine andere weit verbreitete Ansicht ist, dass die Möglichkeit, alle Daten zur Verarbeitung in den Arbeitsspeicher zu verschieben, eine schnellere Verarbeitung ermöglichen sollte. Während dies bei einfachen Daten der Fall sein kann, trifft dies bei umfangreichen und komplexen räumlichen Operationen nicht mehr zu. Bei der Verarbeitung mit Überlagerungswerkzeugen entspricht das Verschieben aller Daten in den Arbeitsspeicher und die gleichzeitiger Analyse all dieser Daten der weiter oben beschriebenen Verarbeitung nur einer Kachel auf der oberen Ebene. Dieses Verfahren ist langsamer, als die umfassendere Kachelung der Daten. Zur Verbesserung der Performance kann die Kachelung eingeschränkt, jedoch nicht völlig vermieden werden. Der Einsatz der 64-Bit-Verarbeitung ermöglicht darüber hinaus auch die Parallelverarbeitung von Kacheln. Das kann häufig zu einer Performance-Verbesserung führen.
Verarbeiten von Kacheln
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 verfügbaren virtuellen 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 wiederholt, bis jede Kachel im verfügbaren virtuellen Speicher verarbeitet werden kann. Siehe folgendes Beispiel:
Beginnen Sie mit dem 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.
Werkzeuge, die Unterteilungen verwenden
Bei folgenden Werkzeugen in der Toolbox "Analysis Tools" wird die Unterteilungslogik bei großen Datenmengen verwendet:
- Puffer: bei Verwendung der Dissolve-Option
- Ausschneiden: Nicht in allen Szenarios. Häufig wird nun ein interner Batch-Prozess verwendet.
- Radieren
- Verschneiden (Identity)
- Überschneiden (Intersect)
- Teilen
- Symmetrische Differenz
- Vereinigen (Union)
- Aktualisieren
Bei folgenden Werkzeugen in der Toolbox "Data Management" wird die Unterteilungslogik bei großen Datasets ebenfalls verwendet:
- Zusammenführen (Dissolve)
- Feature in Linie
- Feature in Polygon
- Polygon in Linie
Fortschrittsanzeige bei der adaptiven Unterteilung
Die adaptive Unterteilung erfolgt dynamisch je nach den verfügbaren Ressourcen auf dem Computer, auf dem der Prozess ausgeführt wird. Es wurde keine bestimmte Anzahl von Schritten festgelegt, um die Analyse durchzuführen. Bei der Verarbeitung einer Kachel kann es vorkommen, dass die Kachel im verfügbaren Speicher nicht verarbeitet werden kann. Ist dies der Fall, wird die Kachel aufgeteilt. Anschließend werden die neuen (aufgeteilten) Kacheln verarbeitet. Es kann vorkommen, dass eine oder mehrere der neuen Kacheln ebenfalls nicht im verfügbaren Speicher verarbeitet werden können. Da es keine Möglichkeit gibt, die erforderliche Anzahl von Kacheln vor der Ausführung effizient zu ermitteln, gibt es auch keine Möglichkeit, eine standardmäßige Countdown-Fortschrittsmeldung bereitzustellen. Daher wird in den Meldungen und über die Fortschrittsleiste von Werkzeugen, bei denen eine Unterteilungslogik zum Einsatz kommt, nur der Fortschritt für die einzelnen Kacheln angegeben, die gerade verarbeitet werden.
Vorgang schlägt mit einem Fehler vom Typ "Nicht genügend Arbeitsspeicher" fehl oder Verschlechterung der Performance
Die Unterteilung 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 speicherintensiv und kann zu Speicherfehlern oder Performance-Einbußen führen, wenn das Feature zu groß ist. Wie groß ist zu groß? Dies hängt davon ab, wie viel virtueller Speicher (freier Speicherplatz, der weder vom System noch von anderen Anwendungen genutzt wird) auf dem Computer verfügbar ist, auf dem der Vorgang ausgeführt wird. Je weniger Speicher verfügbar ist, umso kleiner muss das Feature sein, um nicht als zu groß zu gelten und Probleme zu verursachen. Es kann sein, dass einige große Features nur bei bestimmten Computerkonfigurationen zu Performance-Einbußen oder zu einem Fehler aufgrund von unzureichendem Arbeitsspeicher führen. Performance-Einbußen oder Speicherfehler können 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.
Für den Umgang mit zu großen Features stehen einige Methoden zur Verfügung. Ein empfohlenes Verfahren ist die Verwendung des Werkzeugs Stückeln zum Unterteilen großer Features in kleinere Features vor der Verarbeitung.
Ein weiteres Verfahren besteht in der Verwendung des Werkzeugs Multipart in Singlepart bei umfangreichen Features. Stellen Sie vor dem Ausführen des Werkzeugs sicher, dass die Feature-Class über ein Feld für die eindeutige Kennung verfügt, sodass nach der Ausführung des Werkzeugs Multipart in Singlepart alle Teile die Kennung des Features aufweisen, zu dem sie ursprünglich gehört haben. Wenn das umfangreiche Feature viele Teile aufweist (z. B. einzelne Features mit Hunderttausenden von Teilen), können Sie die Teile durch die Konvertierung in Singlepart-Features einzeln verarbeiten. Bei Bedarf können Sie nach dem Ausführen des Überlagerungswerkzeugs Ihrer Wahl für die Singlepart-Version der Daten das Multipart-Feature neu erstellen, indem Sie die Felder mit der eindeutigen Kennung zusammenführen.
Fehler vom Typ "Nicht genügend Arbeitsspeicher" oder eine Verschlechterung der Performance können auch bei der Verarbeitung von Flächen mit starker Überlappung auftreten. Ein Beispiel für eine starke Überlappung ist die Ausführung des Werkzeugs Vereinigen oder Überschneiden (Intersect) für die Ergebnisse eines Puffervorgangs, der für eine sehr dichte Punktegruppe ausgeführt wurde. Die Pufferausgabe enthält zahlreiche überlappende Puffer-Features. Durch die Auswahl eines Punktes in einer Fläche mit dicht gepackten Puffer-Features kann es dazu kommen, dass Tausende, Zehn- oder sogar Hunderttausende von überlappenden Puffern zurückgegeben werden. Wenn für diese Pufferausgabe das Werkzeug Überschneiden (Intersect) oder das Werkzeug Vereinigen ausgeführt wird, werden viele neue Features erstellt, die die einzelnen Überlappungsbeziehungen darstellen.
Die folgende Abbildung zeigt beispielsweise zwei Feature-Layer. Einer enthält 10 Features, Puffer um Punkte, und der andere enthält ein Feature, ein Quadrat.
Die folgende Abbildung zeigt das Ergebnis von Überschneiden (Intersect) mit den beiden Feature-Layern oben. Beachten Sie, dass alle Überlappungen (Schnittpunkte) unter allen Features unabhängig davon berechnet werden, zu welchem Eingabe-Feature-Layer sie gehören. Dies kann dazu führen, dass die Anzahl der Features ein Vielfaches der Features beträgt, die sich in den ursprünglichen Eingaben befinden. Die Ausgabe (167 Features) enthält mehr Polygone als die Kombination der Eingaben (Eingabe betrug insgesamt 11 Features). Durch diese Erhöhung der Anzahl neuer Features im Werkzeug Überschneiden (Intersect) kann die Ausgabe, je nach Komplexität der Überlappung in den Eingaben, sehr schnell zunehmen.
Um bei umfangreichen komplexen Datasets Fehler vom Typ "Nicht genügend Arbeitsspeicher" oder eine Verschlechterung der Performance zu vermeiden, müssen Sie Ihre Daten zur Verarbeitung möglicherweise weniger komplex gestalten und den Überlagerungsprozess wiederholt durchführen. Sie können auch die Werkzeuge für die paarweise Überlagerung ausprobieren, um zu sehen, ob eines davon eine Funktionalität bietet, mit der Sie das Gewünschte erreichen.
Hinweis:
Zur Verwendung der Werkzeuge für die paarweise Überlagerung müssen Sie aufgrund der Unterschiede bei den bereitgestellten Funktionen und bei den jeweiligen Ausgaben möglicherweise Änderungen an Ihrem Workflow vornehmen. Weitere Informationen finden Sie in der Dokumentation zu den einzelnen Werkzeugen.Ein Fehler vom Typ "Nicht genügend Arbeitsspeicher" kann auch auftreten, wenn während der Verarbeitung durch ein Werkzeug eine zweite Anwendung oder ein zweiter Vorgang ausgeführt wird. Dieser zweite Vorgang nutzt unter Umständen einen Teil des verfügbaren Speichers, der vom Unterteilungsvorgang benötigt wird, was dazu führt, dass der Unterteilungsvorgang mehr Speicher belegt, als eigentlich verfügbar ist. Führen Sie deshalb keine weiteren Vorgänge auf dem Computer aus, während Sie große Datasets verarbeiten.
Datenformate für große Datasets
Enterprise- und File-Geodatabases unterstützen sehr große Datasets. Daher sollten Sie diese Formate bei der Verarbeitung sehr großer oder komplexer Datasets als Ausgabe-Workspace verwenden. Bei Enterprise-Geodatabases wenden Sie sich an den Datenbankadministrator, um Informationen zu den Richtlinien zum Laden von Daten zu erhalten. Für das ungeplante oder nicht genehmigte Laden großer Datenmengen können Einschränkungen gelten.