Verbessert das Auflösen von Funktionen die Effizienz der Geoverarbeitung?

9

Ich habe einen großen Satz von Zeilendaten (> 140.000 Funktionen). Gibt es einen Verarbeitungsvorteil, entweder in Bezug auf die erforderliche Zeit oder (was noch wichtiger ist) den verwendeten Speicher:

Ich würde im Allgemeinen nur warten, bis die gesamte Geoverarbeitung abgeschlossen ist, und dann am Ende eine Überblendung durchführen. Ich debugge jedoch das sehr alte Skript eines anderen und bin mir nicht sicher, ob er aus einem bestimmten Grund (in Arc 9.3) wiederholt alles aufgelöst hat oder einfach nicht über die Alternativen nachgedacht hat. (Das gleiche Skript projiziert wiederholt Daten zwischen Geoverarbeitungswerkzeugen, sodass die Logik bereits fraglich ist.)

Erica
quelle
Ich habe keine harten Daten, um dies zu sichern, aber aus meiner persönlichen Erfahrung: Puffern Sie immer vor einer Auflösung, wenn möglich, da das Puffern einer solch komplexen Zeilenfunktion eine verdammte Ewigkeit dauert.
nmpeterson

Antworten:

9

Wenn die Speichernutzung Ihr Hauptanliegen ist, werden Ihnen wahrscheinlich viele kleine Funktionen (niedrige Scheitelpunktzahl) mehr gefallen als einige sehr große Funktionen (hohe Scheitelpunktzahl). Möglicherweise stellen Sie jedoch fest, dass "zu viele Features" möglicherweise sogar "zu viele Eckpunkte" für die Verarbeitungsgeschwindigkeit überfordern.

Wenn Sie darüber nachdenken, wie die Algorithmen strukturiert sein müssen, um alle Features gegen alle Features zwischen zwei Feature-Classes zu verarbeiten, arbeiten Sie mit mehrfach verschachtelten Schleifen (für Features in FC1 und FC2 sowie für die Eckpunkte in Feature1 und Feature2). Bei Operationen wie Zeichnung, die Anzahl der Ziehanforderungen ist oft größere Sorge als die Ecken in jeder Anforderung, aber mit Thema-on-Thema Operationen, sind die wichtigsten Algorithmen wahrscheinlich in jedem F1 auf der Grundlage der Zählungen von Eckpunkten zu / F2 Paar mit einer " großen O-Notation " von "O (N * M)" (die Zeit zum Abschließen der Operation hängt vom Faktor der Anzahl der beteiligten Scheitelpunkte ab), die für große Merkmale in beiden Datensätzen nahe genug liegt O (N ^ 2), damit Sie sich Sorgen machen, dass der Job jemals abgeschlossen wird.

Ich habe Erfolg gehabt, indem ich massive Features (wie Russland, Kanada, USA, Australien, Brasilien, Norwegen) mit einem 5-Grad-Raster (Fischnetz) überlagert habe, um die Komplexität von Features für die Zwischenverarbeitung zu reduzieren. Ich habe Point-in-Polygon-Operationen auf einer 1: 15m COUNTRIES-Ebene mit Scheitelpunktbeschränkung gesehen, die 100-1000-mal schneller als die ursprüngliche Tabelle ausgeführt wurden (mit nur einer 20-fachen Erhöhung der Feature-Anzahl). Sie müssen jedoch in Ihrer Verarbeitungslogik vorsichtig sein, um Eins-zu-Viele- und Viele-zu-Viele-Beziehungen korrekt zu behandeln, insbesondere in Fällen, in denen eine falsche Grenze besteht.

Die Einsparungen bei der Arbeit mit kleineren Features haben auch einen Aspekt der "sinkenden Rendite": Ich habe mich für ein 5-Grad-Raster entschieden, indem ich die Schnittleistung mit 90, 45, 30, 20, 15, 10, 5, 3, 2 und getestet habe 1-Grad-Gitter, die eine alarmierende Zunahme der Verarbeitungszeit zeigten, als die Anzahl der Gesamtmerkmale im Ballon aufstieg.

Es gibt Zeiten, in denen weniger Features mit mehr Scheitelpunkten effizienter sind. Daher lohnt es sich wahrscheinlich, einige Tests in der Reihenfolge des Betriebs mit realen Daten (nicht vereinfachten Testteilmengen) durchzuführen, bevor Sie sich auf einen Ansatz über den anderen festlegen (Ausgleich der RAM-Auslastung mit) Laufzeit).

HINWEIS: Ich habe die Rasterübung mit moderner Hardware wiederholt und mit einer 30-Grad-Überlagerung eine optimale Leistung erzielt, um das Risiko zu kleiner Features zu erhöhen und die Bedeutung der Auswertung mit Produktionsdaten zu erhöhen.

Vince
quelle
10

Eine Auflösungsoperation reduziert normalerweise die Anzahl von Features, Bögen und Knoten innerhalb einer Ebene, insbesondere für Ebenen mit signifikanten Längen gemeinsamer Grenzen. Da die während eines Puffervorgangs verbrachte Zeit stark von der Anzahl der Knoten abhängt, kann die Vorverarbeitung mit Dissolve die Laufzeit (und den Speicherbedarf) erheblich reduzieren. Ob es sich in Ihrem Fall lohnt oder nicht, hängt davon ab, inwieweit Sie die Anzahl der Knoten (abhängig von Ihrer Datenschicht) und die Effizienz der Auflösungsoperation im Vergleich zur Pufferung reduzieren können . Nach meiner Erfahrung kann eine Überblendungsoperation mit der Java Topology Suite im Vergleich zu ziemlich schnell seinPufferung , obwohl die Leistung von Dissolve je nach Bibliothek erheblich variiert. Die andere Überlegung ist, dass Dissolve stark von topologischen Fehlern beeinflusst wird. Wenn Ihre Ebene Fehler enthält, müssen Sie vor dem Auflösen eine Vektorbereinigung durchführen, die die Laufzeit des Workflows erhöht.

WhiteboxDev
quelle
2
Ich bin mir über den Teil "Speicherbedarf" nicht so sicher. Größere Funktionen erfordern mehr Speicherplatz. Das Puffern sehr komplexer Features ist schwieriger (und RAM-intensiver) als das Puffern einfacher Features. Es ist wahrscheinlicher, dass es einen "Sweet Spot" zwischen "zu vielen Features" und "zu vielen Eckpunkten pro Feature" gibt, als pauschal zu behaupten, dass das Auflösen zuerst immer die Pufferleistung verbessert.
Vince
@Vince, ich stimme zu, dass der Effekt des Auflösens die Laufzeit viel effektiver reduziert als den Speicher. Wenn eine Gruppe von Features jedoch weniger Features mit weniger Gesamtknoten aufweist, wird weniger Speicher für die Darstellung benötigt.
WhiteboxDev
Dadurch wird der Gesamtspeicher reduziert, jedoch nicht der Speicher pro Feature. Das Durchführen von Geoverarbeitungsvorgängen für massive, komplexe Features dauert länger als für einfachere Features - und meiner Erfahrung nach nicht nur linear.
nmpeterson
@Vince, Also Dissolve führt je nach Ebene zu weniger größeren Features. Die tatsächliche geografische Größe eines Features hat nichts mit seinem Speicherbedarf zu tun. Es liegt ganz an seiner Komplexität, die von der Anzahl der Knoten abhängt, die zur Darstellung verwendet werden. Ich stimme Ihnen jedoch in Bezug auf das Sweet-Spot-Gleichgewicht zu.
WhiteboxDev
@nmpeterson, Ja, es stimmt, dass dies pro Ebene und nicht pro Feature erfolgt. Wir puffern jedoch Ebenen im Allgemeinen und nicht einzelne Merkmale. Sie haben jedoch Recht mit der Nichtlinearität der Leistung bei der Geodatenverarbeitung! Das scheint bei uns immer so zu sein!
WhiteboxDev