Wir haben zwei Methoden der Clusteranalyse ausprobiert:
... aber keiner entspricht unserer Spezifikation, die diese 3 Parameter hat:
- Eine Reihe von Punktfunktionen
- N Punkte innerhalb eines Clusters
- X-Entfernungsband zum Einsehen
Zum Beispiel "finde ich die Punkte, an denen jeder Cluster 10 Punkte innerhalb von 50 Metern hat" oder so ähnlich.
ArcGIS 10 verfügt über die beiden oben verlinkten Tools, scheint jedoch keine der N Punkte innerhalb eines Cluster-Teils zu behandeln.
Können unsere Anforderungen mit anderen Tools in ArcGIS erfüllt werden? Ist das, was ich als Clusteranalyse bezeichne, als bestimmter Clustertyp bekannt?
Wir hatten eine Version davon in einer anderen Anwendung, aber ich wollte die Tools unbedingt in ArcGIS verwenden.
Antworten:
Verwenden Sie das Puffer-Werkzeug, um die Punkte auf eine Toleranz zu puffern, lösen Sie es auf, um einzelne Polygone für jeden Cluster zu erstellen, und verwenden Sie dann eine Verknüpfung, um die Anzahl der Punkte im Cluster zu zählen.
Verwenden Sie dann das Verhältnis zwischen der Fläche des Clusters und der Anzahl der Punkte, um Ihre Parameter anzuwenden.
quelle
Dies kann mit ArcObjects ohne große Schwierigkeiten erreicht werden.
Erstellen Sie eine MapTopology und fügen Sie ihr die Punkt-Feature- Class hinzu. Stellen Sie die Clustertoleranz basierend auf Ihrer Clusterentfernung ein (50) und erstellen Sie den Cache .
Durchlaufen Sie jeden Knoten in maptopology.cache.nodes . Wenn ITopologyNode.Parents.Count> 10, tun Sie alles, was Sie tun müssen.
Ich habe etwas Ähnliches für eine benutzerdefinierte Ebene getan, die jeden Clusterpunkt mit einem Symbol zeichnet, dessen Farbe auf der Anzahl der Punkt-Features im Cluster basiert. Die Leistung war akzeptabel, da die Funktionen im Arbeitsspeicher zwischengespeichert werden - die Neuerstellung des Cache ist der teure Teil.
Ähnlich wie hier geposteter Code .
quelle
Gehen Sie zum ersten Punkt und erstellen Sie dann eine rekursive Funktion, die nach Punkten in der Entfernung sucht und die gleiche Operation ausführt, die nach Punkten in der Entfernung sucht und die gleiche Operation für diese usw. ausführt.
Ich habe gerade ein ähnliches Problem gelöst, indem ich eine Reihe von Punkten finden musste, die einer bestimmten Klausel entsprachen. Ich habe eine rekursive Funktion erstellt, um zu ermitteln, ob Punkte innerhalb von 8 Zellen (N, NW, W, SW, S, SE, E, NE) verbunden sind, und habe für diesen Punkt dieselbe Funktion aufgerufen. Wenn die zurückgegebene Liste x Punkte enthielt, aggregiere ich ein Polygon darum.
quelle
Ich habe keine Nutzungsinformationen zu ArcGIS, da ich nur OpenSource-Software verwende. Aber ich denke, dass dies mit Openlayers erreicht werden kann. Ein Beispiel für eine Clusterstrategie finden Sie hier: http://openlayers.org/dev/examples/strategy-cluster.html
quelle