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:
- zum Ausführen Auflösen der Daten vor dem Ausführen von Buffer ?
- auf Auflösungen für zwei Identitätsoperationen auflösen?
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.)
Antworten:
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.
quelle
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.
quelle