¿Encontrar grupos de N puntos dentro de una distancia X usando ArcGIS Desktop?


12

Hemos probado dos métodos de análisis de conglomerados:

... pero ninguno cumple con nuestra especificación que tiene estos 3 parámetros:

  • un conjunto de características de punto
  • N puntos dentro de un Cluster
  • Banda de distancia X para mirar

Por ejemplo, "encuéntrame los puntos donde cada grupo tiene 10 puntos dentro de 50 metros" o algo por el estilo.

ArcGIS 10 tiene las dos herramientas que he vinculado anteriormente, pero ninguna parece abordar los N puntos dentro de una parte del clúster.

¿Se pueden cumplir nuestros requisitos con otras herramientas en ArcGIS? ¿Es lo que llamo análisis de clúster conocido como un tipo de clúster particular?

Tuvimos una versión de esto en otra aplicación, pero realmente quería usar las herramientas dentro de ArcGIS.


"prometido al cliente sin mi conocimiento" ... siento tu dolor. ¿Sería aceptable una solución de arcobjects?
Kirk Kuykendall

¿No sería posible crear los grupos y luego procesar aquellos que no cumplan con sus criterios? Es decir (y te pido debido a la falta de experiencia en este análisis), serían los grupos cambiar si se les diera este tercer criterio antes del análisis?
Nathanus

@Kirk Kuykendall. ArcObjects podría no ser posible ya que debe exponerse como un servicio de geoprocesamiento a través del servidor arcgis 10.
Hath

¿El clúster debe estar basado en un círculo o puede ser rectangular? Crear un hash a partir de coordenadas de modo que el código hash para todos los puntos que están en el mismo cuadro de 50x50 sean iguales es fácil.
Kirk Kuykendall

@ Kirk: creo que tiene que ser un círculo.
Tiene

Respuestas:


10

Intente usar la herramienta Buffer para amortiguar los puntos a una tolerancia, disuelva para crear polígonos individuales para cada grupo, y luego use una combinación para contar el número de puntos en el grupo.

Luego use la relación entre el área del grupo y la cantidad de puntos para aplicar sus parámetros.


+1 Este enfoque debería funcionar, pero no veo dónde entra el área en la solución.
whuber

area / count da una medida de la densidad dentro de un grupo. Esto ayudaría a eliminar cadenas lineales de puntos que no deberían considerarse como grupos.
Matthew Snape

2
OK, pero la declaración del problema no requiere eso. Solo pide "10 puntos dentro de 50 metros", por ejemplo. Si amortigua los puntos en 50/2 = 25 metros, cualquier lugar donde haya 10 o más solapamientos califica como el centro de dicho grupo. ¡Hecho!
whuber

Cuando te refieres a 'unirse', te refieres a una unión espacial.
Hath

2

Esto se puede lograr usando ArcObjects sin mucha dificultad.

Cree una topología de mapa y agregue la clase de entidad de puntos. Establezca la tolerancia del clúster en función de la distancia de su clúster (50) y cree el caché .

Recorre cada nodo en maptopology.cache.nodes . Si ITopologyNode.Parents.Count> 10, haga lo que necesite hacer.

He hecho algo similar para una capa personalizada que dibuja cada punto del clúster con un símbolo cuyo color se basa en la cantidad de entidades de puntos en el clúster. El rendimiento fue aceptable ya que las características se almacenan en la memoria caché; la reconstrucción de la memoria caché es la parte costosa.

Similar al código publicado aquí .


¿Sería posible en python?
Hath

Estoy pensando que no No estoy tan familiarizado con arcobjects sdk y tampoco estoy completamente seguro de los requisitos de licencia para usarlo.
Tiene

2

Intente ir al primer punto, luego cree una función recursiva, que verifica los puntos dentro de la distancia, y realiza la misma operación sobre eso, que busca puntos dentro de la distancia, y realiza la misma operación sobre eso, etc.

Acabo de resolver un problema similar, ya que tenía que encontrar un conjunto de puntos que se ajustaran a una determinada cláusula; Construí una función recursiva para encontrar si había puntos conectados dentro de 8 celdas (N, NW, W, SW, S, SE, E, NE) y llamé a la misma función para ese punto. Si la lista devuelta contenía x puntos, agrego un polígono a su alrededor.


1

No tengo ninguna información de uso en ArcGIS ya que solo uso el software OpenSource. Pero creo que esto se puede lograr, con Openlayers. Hay un ejemplo de estrategia de clúster, que puede encontrar aquí: http://openlayers.org/dev/examples/strategy-cluster.html


-1 OP está pidiendo una forma de arco de hacer esto. Dar una forma de OpenLayers realmente no va a ayudar.
Nathan W

2
¿Pero el enfoque de capas abiertas no podría ayudarlo a descubrir la forma en que se implementa para implementarlo en arcgis?
1amtoo1337

1
Estoy de acuerdo con el comentario y me gusta su enfoque: a menudo tenemos que buscar ideas e inspiración fuera de nuestra zona de confort. Pero me gustaría que tu respuesta fuera más útil si pudieras explicar cómo se conecta este ejemplo con la pregunta particular que se hace aquí. Aunque la pregunta y el ejemplo comparten la palabra "conglomerado", no es evidente que lo usen en el mismo sentido o aborden problemas suficientemente similares.
Whuber

Voté esto porque estaba buscando una forma de código abierto de hacer esto y aunque la publicación quería arcgis, a menudo he encontrado que una solución en otros sistemas SIG puede ayudarlo a encontrar una solución en su software de elección al usar sus herramientas de una manera Eso no es común.
GeorgeC
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.