Más

Explosión de funciones multiparte en qgis usando python


Quiero explotar una capa de varias partes a una sola parte en python. Veo a través de la interfaz gráfica de usuario de qgis que hay una manera de hacerlo en vector - geometría - herramientas - Multipart to Singleparts ... que hace lo que necesito, solo necesito el código Python para esto. Soy nuevo en qgis.


Una capa de varias partes es una lista simple de capas de una sola parte:

Puedes usar:

1) Fiona y Shapely

from shapely.geometry import shape import fiona multis = fiona.open ("multipolygons.shp") # primera característica del shapefile first = multis.next () print first {'geometry': {'type': 'MultiPolygon', ' coordenadas: [[[(244,697.45179524383, 1,000,369.2307574936), (244,827.15493968062, 1,000,373.0455558595), (244,933.96929392271, 1,000,353.9715640305), (244,933.96929392271, 1,000,353.9715640305), (244,930.15449555693, 1,000,147.9724522779), (244,697.45179524383, 1,000,159.4168473752), (244,697.45179524383, 1,000,369.2307574936)]], [[(246,082.22360202507, 1,000,453.1563215409), (246,139.44557751188, 1,000,460.7859182726), (246,189.03795626713, 1,000,403.5639427857), (246,189.03795626713, 1,000,403.5639427857), (246,086.03840039085, 1,000,132.7132588148), (245,990.66844124615, 1,000,205.1944277647), (246,082.22360202507, 1,000,453.1563215409)]]]}, 'tipo ':' Característica ',' id ':' 0 ',' propiedades ': OrderedDict ([(u'id', 1)])} # transformar a geometría bien formada multipol = forma (primero ['geometría'])

iterar a través de las geometrías de multipol

para poli en MULTIPOL: imprimir POLÍGONO poli ((244,697.4517952438 1,000,369.230757494, 244,827.1549396806 1,000,373.045555859, 244,933.9692939227 1,000,353.971564031, 244,933.9692939227 1,000,353.971564031, 244,930.1544955569 1,000,147.972452278, 244,697.4517952438 1,000,159.416847375, 244,697.4517952438 1,000,369.230757494)) polígono ((246,082.2236020251 1,000,453.156321541, 246,139.4455775119 1,000,460.785918273, 246,189.0379562671 1,000,403.563942786, 246,189.0379562671 1,000,403.563942786, 246,086.0384003909 1,000,132.713258815, 245990.6684412461 1000205.194427765, 246082.2236020251 1000453.156321541))

2) PyQGIS en la consola

layer = qgis.utils.iface.activeLayer () # primera característica del shapefile first = layer.getFeatures (). next () # the geometry multipol = first.geometry ()

iterar a través de las geometrías del multipolígono

para poli en multipol.asMultiPolygon (): poli impresión [[(244,697.45179524383, 1,000,369.2307574936), (244,827.15493968062, 1,000,373.0455558595), (244,933.96929392271, 1,000,353.9715640305), (244,933.96929392271, 1,000,353.9715640305), (244,930.15449555693, 1,000,147.9724522779), (244,697.45179524383, 1,000,159.4168473752), ( 244,697.45179524383, 1,000,369.2307574936)]] [[(246,082.22360202507, 1,000,453.1563215409), (246,139.44557751188, 1,000,460.7859182726), (246,189.03795626713, 1,000,403.5639427857), (246,189.03795626713, 1,000,403.5639427857), (246,086.03840039085, 1,000,132.7132588148), (245,990.66844124615, 1,000,205.1944277647), (246,082.22360202507, 1,000,453.1563215409)] ]

Y

imprimir QgsGeometry.fromPolygon (poli) .exportToWkt () POLÍGONO ((246082,22360202507115901 1000453.15632154094055295,246139.44557751188403927 1000460.78591827256605029,246189.03795626712962985 1000403.5639427857240662,246189.03795626712962985 1000403.5639427857240662,246086.03840039085480385 1000132.71325881476514041,245990.66844124614726752 1000205.19442776474170387,246082.22360202507115901 1000453,15632154094055295))

Y es fácil crear un nuevo shapefile (Fiona, PyQGIS) o una capa (PyQGIS) con estos resultados

3) o el módulo de procesamiento PyQGIS como en Ejecutar ftools multiparts to singleparts from PYQGIS '


Ver el vídeo: How to Merge Multiple Polygons:Features Into Single Polygon:Feature Using QGIS (Octubre 2021).