¿Cómo particiono espacialmente muchos puntos?


9

Tengo datos de ubicación de clientes, con más de 130 millones de registros, repartidos por todo el país. Esta es una tabla espacial en PostGIS

Ahora quiero dividir todo el país en 'áreas de servicio', de modo que cada área de servicio tenga:

  • Al menos 30 clientes
  • Tiene como máximo 1000 km2.

He investigado la herramienta Agregado de ArcGIS, pero no cumple con mis criterios, ya que:

  • No toma en cuenta el recuento mínimo
  • Solo tengo Qgis & Grass a mi disposición.

¿Qué herramienta / proceso puedo usar para lograr esto?

Respuestas:


4

Ejecuté un pequeño experimento:

  • generó 900 puntos al azar
  • los conectó usando un árbol de expansión mínimo
  • recogido fregadero en algún lugar en el medio

ingrese la descripción de la imagen aquí

  • volteó los enlaces para formar un gráfico direccional, es decir, cada nodo finalmente se descarga en el mismo sumidero

ingrese la descripción de la imagen aquí

  • ejecuté el script que estoy usando para agregar una cuenca más pequeña a otras más grandes tratando de obtener un "tamaño" promedio de 30.

RESULTADO:

ingrese la descripción de la imagen aquí

Avíseme si esto es de interés, puedo desenterrar el script (ya está publicado en algún lugar de este sitio) o explicar el flujo de trabajo con más detalles. Usé ArcGIS.

-------------------------------------

** ACTUALIZACIÓN Septiembre 2017

Es muy similar al anterior, pero utiliza herramientas de enfoque de trama, distancia e hidrología de ArcGIS. La parte difícil es la creación de un árbol de expansión mínimo y la búsqueda de puntos de venta de 'captaciones' en formato ráster.

Estos son los pasos que seguí:

  • Triangular nodos (puntos al clúster), extraer bordes de red triangulares, convertir nodos a ráster de PESO :

ingrese la descripción de la imagen aquí

  • Calcular el campo en la tabla de bordes: yo uso (ShapeLength ^ 3 / 1e6). Convierta en ráster, rellene huecos con un valor muy alto para crear un ráster COST . Esto fomenta el flujo entre puntos cercanos entre sí. Se espera que las rutas de flujo se vean similares al árbol de expansión mínima (MST) en lugar de estar cerca de líneas rectas que se dirigen hacia el sumidero.
  • Elija cualquier nodo (OUTLET / SINK) y cree un ráster Cost Back Link, utilizando la superficie COST y SINK como fuente. Convierta el ráster de enlace de retorno en un ráster de Dirección de flujo decente usando Int(Power(2,"backlink"-1)). Acumule el flujo utilizando la dirección del flujo y el ráster de peso. Como se puede ver, el truco con la asignación de costos realmente produce algo similar a MST:

ingrese la descripción de la imagen aquí

Decidí agrupar los puntos por 50. Teniendo en cuenta la estructura fractal de la red, establecí el límite de puntos de ENTRADA un poco más bajos al comienzo de 'High Flow Streams', es decir, Con ("FlowAccum"> 45,1). Entradas definidas como celdas donde

Existe un flujo alto y estadísticas focales = 2 y la celda no es un FREGADERO (sin valor de datos en la dirección del flujo) :

ingrese la descripción de la imagen aquí

Use entradas como puntos de fluidez y dirección de flujo para definir cuencas. La imagen muestra 115 cuencas derivadas:

ingrese la descripción de la imagen aquí

Sus estadísticas: media = 50.33, min = 46 y max = 74.

Para obtener el segundo conjunto de cuencas es suficiente para borrar el ráster de PESO en cuencas ya definidas, calcular la acumulación de flujo, etc.

El método funcionará para millones de puntos porque está basado en ráster, la triangulación de ese número de puntos tampoco será un problema.


1
No sé si esto será útil para mí, pero parece interesante como el infierno ... Publica el guión si puedes.
Devdatta Tengshe

Publicaré el guión hoy o el lunes, me tomé un día libre. Mientras tanto, eche un vistazo a gis.stackexchange.com/questions/179559/… donde describí la idea detrás de esto
FelixIP

Lo probé en 100,000 puntos durante la noche. El último paso tardó cerca de 6 horas y lo convierte en un enfoque de no ir , al menos no en ArcGIS. Sin mencionar que tuve que codificar MST yo mismo, porque la herramienta que Patterson me bloqueó.
FelixIP

¿Lograste resolverlo? Parece que lo hice usando el enfoque de trama, puedo publicar el flujo de trabajo si esto es de interés /
FelixIP

Por favor, hazlo. Lo resolví con un método Bruteforce, que era lo suficientemente bueno para mi propósito; Pero estoy seguro de que otros podrían beneficiarse de su nuevo enfoque.
Devdatta Tengshe
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.