Estoy tratando de descubrir cómo usar Python para extraer los polígonos en un vector que se superponen en> 90% por otro vector. Entonces me gustaría tener un vector / mapa que solo muestre esos polígonos. La imagen de ejemplo muestra mis capas. Quiero todos los polígonos grises que son> 90% rojos.
Necesito hacer todo esto a través de Python (o métodos automatizados similares). Tengo ~ 1000 mapas para procesar de la misma manera.
Respuestas:
El siguiente código funciona en mi consola Python de QGIS. Produce una capa de memoria con polígonos que están> 90% superpuestos por áreas rojas.
Probé el código con estas dos capas vectoriales:
Después de ejecutar el código en la Consola Python de QGIS, para corroborar los resultados, se imprimieron los índices i, j de características involucradas, áreas de intersección, atributo de campo en polygons_intersects (1 para áreas rojas y 2 para áreas grises) y el criterio de superposición .
La capa de memoria creada (características verdes) se puede observar en la siguiente imagen. Fue como se esperaba.
fuente
Aquí una solución que no requiere python.
Agregue una nueva capa virtual con una consulta como:
Con :
Basins800 como su capa que desea filtrar con polígonos grises
Gravedad: la superposición de su capa roja.
El resultado será una nueva capa con solo todos los polígonos grises> 90% superpuestos por polígonos rojos, con un nuevo campo que contiene el porcentaje de superposición.
Espero que esto funcione. Puedo agregar más detalles sobre la consulta si es necesario.
Nota: sus datos contienen polígonos muy pequeños (provenientes de su procesamiento ráster y correspondientes a un píxel ráster (en la imagen, podemos ver 4 polígonos pero hay otros 25 polígonos pequeños). Esto hace que la consulta sea muy lenta de ejecutar (función de intersección genera una entidad para cada par de entidades de las dos capas).
fuente
Después de ver el enlace a los archivos de forma Severity y Basins800 , pude entender el geoprocesamiento necesario. Modifiqué el código en:
¿Encuentra polígonos programáticamente que se superponen> 90% por otra capa de polígonos vectoriales usando QGIS?
por conseguir este:
Después de ejecutar el código, con estos archivos de forma en la Consola Python de QGIS, en unos minutos obtuve un resultado similar al de Pierma ; donde la capa de memoria tenía 31 características (diferentes de 29 polígonos obtenidos por él).
No voy a depurar los resultados porque hay 1901 * 3528 = 6706728 interacciones para las características. Sin embargo, el código parece prometedor.
fuente