Trovare cluster di N punti entro una distanza X usando ArcGIS Desktop?


12

Abbiamo provato due metodi di analisi dei cluster:

... ma nessuno dei due soddisfa le nostre specifiche che hanno questi 3 parametri:

  • una serie di funzionalità Point
  • N punti all'interno di un cluster
  • X banda di distanza per guardare dentro

Ad esempio "trovami i punti in cui ogni cluster ha 10 punti entro 50 metri" o qualcosa del genere.

ArcGIS 10 ha i due strumenti che ho collegato sopra, ma nessuno dei due sembra indirizzare i punti N all'interno di una parte del cluster.

I nostri requisiti possono essere soddisfatti con altri strumenti in ArcGIS? Quello che chiamo analisi del cluster è noto come un particolare tipo di clustering?

Ne avevamo una versione in un'altra applicazione, ma volevo davvero usare gli strumenti di ArcGIS.


"promesso al cliente a mia insaputa" ... Sento il tuo dolore. Una soluzione arcobjects sarebbe accettabile?
Kirk Kuykendall

Non sarebbe possibile creare i cluster ed elaborare quelli che non soddisfano i tuoi criteri? Vale a dire (e chiedo a causa della mancanza di esperienza in questa analisi), i cluster cambieranno se venissero dati questo terzo criterio prima dell'analisi?
Nathanus

@Kirk Kuykendall. ArcObjects potrebbe non essere possibile in quanto deve essere esposto come servizio di geoprocessing tramite il server arcgis 10.
Hath

Il cluster deve essere basato su un cerchio o può essere rettangolare? Creare un hash dalle coordinate in modo tale che il codice hash per tutti i punti che si trovano nella stessa casella 50x50 siano uguali è facile.
Kirk Kuykendall,

@ Kirk - deve essere un cerchio penso.
Hath,

Risposte:


10

Prova a utilizzare lo strumento Buffer per bufferizzare i punti in base a una tolleranza, dissolvilo per creare singoli poligoni per ciascun cluster, quindi usa un join per contare il numero di punti nel cluster.

Quindi utilizzare il rapporto tra l'area del cluster e il numero di punti per applicare i parametri.


+1 Questo approccio dovrebbe funzionare, ma non vedo da dove arrivi la soluzione.
whuber

area / count fornisce una misura della densità all'interno di un cluster. Ciò contribuirebbe ad eliminare catene lineari di punti che non dovrebbero essere considerati cluster.
Matthew Snape

2
OK, ma la dichiarazione del problema non lo richiede. Richiede solo "10 punti entro 50 metri", ad es. Se tamponi i punti di 50/2 = 25 metri, allora qualsiasi posto in cui ci sono 10 o più sovrapposizioni si qualifica come il centro di tale ammasso. Fatto!
whuber

Quando intendi "unire" intendi spettralmente un join spaziale.
Hath,

2

Ciò può essere realizzato utilizzando ArcObjects senza troppe difficoltà.

Crea una maptopology e aggiungi il punto featureclass ad essa. Impostare la tolleranza cluster in base alla distanza del cluster (50) e creare la cache .

Passa attraverso ciascun nodo in maptopology.cache.nodes . Se ITopologyNode.Parents.Count> 10, fai tutto ciò che devi fare.

Ho fatto qualcosa di simile per un livello personalizzato che disegna ogni punto del cluster con un simbolo il cui colore si basa sul numero di caratteristiche del punto nel cluster. Le prestazioni sono state accettabili poiché le funzionalità sono memorizzate nella cache: la ricostruzione della cache è la parte costosa.

Simile al codice pubblicato qui .


Sarebbe possibile in Python?
Hath,

Non sto pensando. Non molto familiare con arcobjects sdk e non del tutto sicuro dei requisiti di licenza per usarlo.
Hath,

2

Prova ad andare al primo punto, quindi a creare una funzione ricorsiva, che controlla i punti entro la distanza e esegue la stessa operazione su quello, che cerca i punti entro la distanza ed esegue la stessa operazione su quello, ecc.

Ho appena risolto un problema simile, in quanto ho dovuto trovare una serie di punti conformi a una determinata clausola; Ho costruito una funzione ricorsiva per scoprire se c'erano punti collegati all'interno di 8 celle (N, NW, W, SW, S, SE, E, NE) e ho chiamato la stessa funzione per quel punto. Se l'elenco restituito conteneva x punti, aggrego un poligono attorno ad esso.


1

non ho alcuna informazione di utilizzo su ArcGIS poiché utilizzo solo il software OpenSource. Ma penso che questo sia realizzato, con Openlayers. C'è un esempio di strategia di cluster, che puoi trovare qui: http://openlayers.org/dev/examples/strategy-cluster.html


-1 OP sta chiedendo un modo arcgis per farlo. Dare un modo OpenLayers non sarà davvero d'aiuto.
Nathan W,

2
Ma l'approccio openlayers non poteva aiutarlo a scoprire come si fa per implementarlo in arcgis ??
1amtoo1337

1
Sono d'accordo con il commento e mi piace il tuo approccio: spesso dobbiamo guardare fuori dalla nostra zona di comfort per idee e ispirazione. Ma troverei la tua risposta più utile se potessi spiegare in che modo questo esempio è collegato alla domanda particolare qui posta. Sebbene la domanda e l'esempio condividano la parola "cluster", non è evidente che la usino nello stesso senso o affrontino problemi sufficientemente simili.
whuber

L'ho votato mentre cercavo un modo open source per farlo e, sebbene il post volesse arcgis, ho spesso scoperto che una soluzione in altri sistemi GIS può aiutarti a trovare una soluzione nel tuo software preferito usando i suoi strumenti in un modo questo non è comune.
GeorgeC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.