Ich habe ein Shapefile mit 16.400 Polygonen. Jedes Polygon zeigt die Ausdehnung einer Vogelart für die ganze Welt.
Jetzt muss ich die überlappenden Polygone zählen. Ich habe es mit Vereinigung versucht und aufgelöst (zähle die Vereinigung), aber die Vereinigung funktioniert nicht für so viele Polygone.
Dann habe ich versucht, Kontinente zu beschneiden, aber das funktioniert auch wegen der großen Anzahl von Polygonen nicht. Außerdem habe ich diese Methode auch ohne Erfolg ausprobiert .
Deshalb frage ich Sie, ob es eine Möglichkeit gibt, überlappende Polygone zu zählen, wenn sich 16400 Polygone in einem Shapefile befinden.
Ich arbeite mit 10.0 und kann mit 10.2 arbeiten. Eine ArcPy-Lösung ist auch wunderbar.
Im Moment denke ich darüber nach, ein Fischnetz zu erstellen und mit den 16400 Polygonen über die Zeilen des shp zu iterieren und 1 in ein Wertefeld einer Fischnetzzelle zu schreiben, wenn sich das Polygon in dieser Zelle befindet, und dann die nächste Zeile (Polygon) und zu nehmen wenn dies auch in der Fischnetzzellenzahl +1 ist.
Aber ich weiß nicht, ob dies eine gute Lösung ist und wie ich sie realisieren kann. Oder ich muss R lernen, um diesen Ansatz zu verwenden.
Das Ergebnis: Es sollte eine Form sein, in der Sie neue Polygone aus den überlappenden haben, und ein Feld, in dem die Überlappungen gezählt werden.
Am Ende sollte es also ein Shapefile geben, in dem Sie sehen können, wie viele Vogelarten am selben Ort gefunden werden.
Antworten:
Ich würde empfehlen, das benutzerdefinierte Werkzeug Anzahl überlappender Polygone zu verwenden.
Beschreibung:
quelle
Mit Arcpy-Geometrie-Token können Sie Folgendes ausprobieren:
Für die obigen Beispieldaten gibt der Code die folgenden Überlappungszählungen zurück:
Der Code wie er ist gibt nur Zählungen für Polygone zurück, die mindestens eine Überlappung haben.
quelle
Eine sehr einfache Methode ist:
join_count
Feld.quelle
Ich denke, Sie haben diese Methode ausprobiert: Zählen und Rastern von Polygonüberlappungen in ArcGIS Desktop?
16.400 Polygone sind nicht so viele. Eine mögliche Lösung besteht jedoch darin, einfach einen regulären Spatial Join durchzuführen. In der
ArcMap toolbox, > Analysis Tools -> Overlap -> Spatial Join
.Stellen Sie sowohl die
target
als auch diejoin
Features auf dasselbe Dataset ein und geben Sie eine Ausgabe an. Belassen Sie die restlichen Einstellungen.Nach einigen Augenblicken sollten Sie ein Shapefile zurückerhalten, das eine Spalte "Join Count" enthält. Subtrahieren Sie 1 davon (da sich offensichtlich jedes Merkmal selbst schneiden sollte), und das sollte die Anzahl der "Überlappungen" (tatsächlich schneidet) für jedes Polygon sein.
Ich habe es gerade aufgeführt
quelle
Ich habe das Tool "Count Overlapping Polygons" heruntergeladen und ausprobiert. Es könnte funktionieren, aber es dauert furchtbar lange (wahrscheinlich wegen der Dateigröße, aber mein Eingabe-FC hatte nur <5.000 Datensätze).
Während ich darauf wartete, dass dieses Tool ausgeführt wurde, öffnete ich ein weiteres ArcMap-Fenster und es waren nur ein paar schnelle Schritte erforderlich, um das zu erhalten, was ich wollte. 1) Spatial Join - Verwenden Sie dieselbe Feature-Class wie Target- und Join-Features und wählen Sie die Option "One to Many verbinden". 2) Auflösen - unter Verwendung der Ausgabe aus dem letzten Schritt. Verwenden Sie "TARGET_FID" als Auflösungsfeld und für die Statistik können Sie entweder das Feld "Join_Count" summieren oder das Feld "JOIN_FID" zählen. 3) Verwenden Sie in der Ausgabedatei von Schritt 2 den Feldrechner und subtrahieren Sie 1 vom Statistikfeld ("SUM_Join_Count" oder "COUNT_JOIN_FID"), da sich jedes Feature selbst schneidet.
Ich schlage vor, diese Methode über das Werkzeug "Anzahl überlappender Polygone zählen" zu verwenden. Ich habe ~ 5 Minuten vor dem Starten dieser Join-> Dissolve-Methode mit dem Ausführen des COP-Tools begonnen. Das Ergebnis hatte genügend Zeit, dies aufzuschreiben, bevor das Tool "Count Overlapping Polygon" überhaupt fertig war.
Hoffe das hilft!
quelle