Dies ist ArcGIS-spezifisch.
Ich habe 2 Punkt-Shapefiles A
und B
das erste ( A
) ist ein einzelner Punkt, der eine Lat-Länge enthält, das zweite ( B
) ist eine Vielzahl von Punkten (über 12 KB), die jeweils ihre Lat- und Long-Punkte enthalten. Ich versuche, die Auswahl von 75% der Shapefile B
-Punkte basierend auf dem Abstand zum Shapefile zu automatisieren A
. Mit anderen Worten, ich möchte die 75% der Shapefile- B
Punkte auswählen, die dem A
einen Punkt des Shapefiles am nächsten kommen .
arcgis-10.0
spatial-statistics
Achtelmeile
quelle
quelle
Antworten:
Sie können einen Mehrfachringpuffer für Shapefile A erstellen und dann eine räumliche Verknüpfung des Puffers mit Shapefile B durchführen. Wenn Sie eine räumliche Verknüpfung von Polygonen und Punkten durchführen, erhalten Sie eine Anzahl der Punkte in jedem Polygon im Attribut Tabelle des Joins. Wenn Sie dann die Gesamtzahl der Punkte in den Puffern untersuchen, können Sie 75% der Punkte in Shapefile B erreichen.
Ein etwas anderer Ansatz wäre, dies in Python zu skripten und in einer Schleife nach 75% zu suchen. Wenn es sich jedoch um eine einmalige Berechnung handelt, benötigen Sie diese möglicherweise nicht.
quelle
Für 1200 Punkte (oder sogar bis zu 12 Millionen Punkte?) Würde ich sie einfach als generische Sammlung speichern - in diesem Fall als sortierte Liste von Listen . Dies könnte vereinfacht werden, indem nur Punkte übersprungen werden, wenn Sie auf eine Situation mit mehreren Punkten stoßen, die denselben Abstand vom Ursprungspunkt haben. Aus Gründen der Leistung sollten Sie auch eine Hashtabelle anstelle einer SortedList verwenden und nach dem Einfügen aller Entfernungen einmal sortieren. Das würde allerdings noch ein paar Zeilen Code erfordern (?).
Ich hatte keine Zeit, dies zu testen, aber dieses c # könnte Ihnen den Einstieg erleichtern:
quelle
Ein Python-Geoverarbeitungsskript ist eine naheliegende Wahl:
quelle
Ich hatte dieses Problem vor ein paar Jahren. Ich fand es einfacher, die Daten als "flache Daten" zu halten, alle Daten zu durchlaufen, die Entfernung manuell zu berechnen und dann die besten 75% zu nehmen (ich habe tatsächlich die oberen 10% behalten). Ich habe dann dasselbe in ArcIMS mit ihren Entfernungsberechnungen gemacht und es hat viel länger gedauert.
Das Puffern ist ein enormer Aufwand, aber mathematische Berechnungen sind eine große Stärke. Wenn Sie 12.000 Punkte puffern, werden Sie wahrscheinlich Probleme mit der Leistung haben.
quelle