Tengo un conjunto de datos vectoriales de puntos de datos de banda ancha rural (qué tan rápido, etc.) y me gustaría explorar si hay grupos de puntos con características similares, y trazar polígonos que los abarquen.
Por ejemplo, puedo tener 45,000 puntos en un solo conjunto de datos PostGIS distribuidos en un paisaje. Quiero identificar grupos que se encuentran a menos de x km entre sí y donde la velocidad es inferior a y kbps, y producir cascos convexos para cada grupo calificado.
¿Hay una manera simple de hacer esto en QGIS, por ejemplo?
qgis
qgis-processing
clustering
Adrian
fuente
fuente
Respuestas:
Combiné partes de varias sugerencias, agregué algunas y encontré una solución que funciona bien para mí, ¡y todo desde QGis!
Primero ejecuté un PostGis SELECT para encontrar los puntos que tienen los atributos comunes correctos y se encuentran a x km el uno del otro:
(Más o menos directamente del muy buen libro de PostGis en acción de Manning , solo agregando una autounión )
Luego cargué el complemento ManageR de Carson Farmer e importé la capa. Desde aquí seguí el proceso de agrupación de PAM sugerido aquí , y exporté el resultado a un archivo de forma, en el que se calcularon los Cascos convexos en segundos usando fTools (¡Carson se mueve!).
fuente
Aunque no es una solución QGIS, personalmente optaría por un análisis exploratorio utilizando SaTScan . Es rápido, está bien documentado y se aplica ampliamente, por lo que no debería tener problemas para iniciar. Sin embargo, 45k puntos pueden requerir algo de RAM.
No estoy seguro de si puede leer directamente desde Postgres, pero importa fácilmente desde archivos dbf y de texto.
El resultado del análisis se puede leer fácilmente en Postgres o QGIS. Puede decidir buscar grupos circulares o elipses (podría ser útil si hay un tipo particular de asentamientos en sus datos, por ejemplo, ciudades / pueblos de forma larga en valles, etc.). Luego puede generar polígonos o elipses o mostrar solo las ubicaciones que son miembros de los clústeres.
Para obtener una vista previa rápida de los resultados en Google Earth, también puede utilizar la herramienta de conversión SaTScan a Google Earth de NAACCR .
Es importante: si decide ejecutar simulaciones de Monte Carlo (99 mínimo, creo), también podrá decir algo sobre la importancia estadística de sus clústeres. La interpretación y la justificación de estos grupos serán otro tema, ya que se ha debatido en las ciencias espaciales durante las últimas dos décadas al menos (creo;).
Podría intentar ejecutar un análisis puramente espacial buscando grupos de valores altos, bajos o altos y bajos. Si tiene algunos atributos temporales en sus datos * (agregaciones diarias, semanales), creo que sería realmente interesante ejecutar algunos modelos de espacio-tiempo.
fuente
SciPy tiene un paquete de agrupación (para python), puede usarlo en la consola de python, escribir un complemento simple para hacerlo o usar PL / python dentro de postgis.
http://docs.scipy.org/doc/scipy/reference/cluster.html
Después del análisis solo use f-tools para crear los cascos convexos.
fuente
Hay un ejemplo similar de lo que quieres hacer usando R y GRASS aquí . Como alternativa, es posible que desee utilizar las herramientas de agrupación de scipy como se sugiere, y luego hacer los cálculos de casco convexo utilizando este método .
fuente
Puedes probar el complemento Ftools.
Vector
>Geoprocessing Tools
>Convex Hulls
.Hay una opción para que
Create convex hulls based on input field
el parámetro del campo de entrada provenga de los atributos de sus puntos de entrada.fuente