Más

Elimine islas y polígonos completamente rodeados después de la poligonización con QGIS

Elimine islas y polígonos completamente rodeados después de la poligonización con QGIS


Tengo un mapa de líneas de edificios en una ciudad. Pude polgonizar correctamente los edificios en QGIS con el algoritmo de procesamiento Polygonize. Todos los agujeros / islas se convirtieron en características como se esperaba. Ahora necesito seleccionar y eliminar todas las funciones que están completamente rodeadas por otras (una o más) funciones. Ejemplos mostrados en rojo en la imagen:
Estos no son parte de edificios, sino patios interiores.


una alternativa es usar "vector> herramientas de geoprocesamiento> disolver" (--Disolver todo-- en la lista de campos de disolución), luego seleccione los polígonos que están "dentro" de los polígonos disueltos utilizando el complemento de "consulta espacial".


Puede usar, por ejemplo, este script de Python para resaltar o eliminar las características que están completamente dentro de otra característica.

layer = iface.activeLayer () #o la capa que desea usar features_a = layer.getFeatures () features_b = [hazaña para hazaña en layer.getFeatures ()] within_list = list () para hazaña en features_a: para feat_b en features_b: if feat_b.id ()! = feat_a.id (): if feat_b.geometry (). within (feat_a.geometry ()): within_list.append (feat_b.id ())

Para resaltar las funciones que puede utilizar:

layer.setSelectedFeatures (within_list)

Y para eliminar las funciones resaltadas, use:

caps = layer.dataProvider (). Capacity () if caps & QgsVectorDataProvider.DeleteFeatures: res = layer.dataProvider (). deleteFeatures (within_list)

Como resultado de la prueba obtengo, por ejemplo:

Pero antes de ejecutar este script, guarde su archivo qgis porque si desea procesar un archivo grande, este script probablemente bloquee su qgis.


También puede duplicar la capa y luego hacer una consulta espacial con "toques" entre ellos. Funciona con datos preparados.


Ver el vídeo: GIS. Trabajar con ortofotografías