QGIS recorta elementos vectoriales en lotes según los límites de las regiones administrativas

Para usar la programación de QGIS para lograr el recorte por lotes de elementos vectoriales de acuerdo con los límites de las regiones administrativas, se puede hacer con la ayuda de PyQGIS. Código de ejemplo sencillo:


desde qgis.core importar QgsVectorLayer, QgsProject, QgsGeometry, QgsFeature

# Establecer la ruta del archivo de límite de la región administrativa
border_file = '/path/to/admin_boundary.shp'
# Establecer la ruta de la carpeta de funciones vectoriales
input_folder = '/path/to/input_features/'
# Establecer la ruta de la carpeta de salida
output_folder = '/path / a/output_features/'

# Cargue la capa límite de la región administrativa
border_layer = QgsVectorLayer(boundary_file, 'Admin Boundary', 'ogr')

# Atraviese todos los archivos en la carpeta de elementos vectoriales que se recortarán
para el nombre de archivo en os.listdir(input_folder):
    if filename.endswith('.shp'): # Solo procesa archivos en formato Shapefile
        input_file = os.path.join(input_folder , nombre de archivo)
        archivo_de_salida = os.path.join(carpeta_de_salida, nombre_de_archivo)
        
        # Cargar la capa de características vectoriales para recortarla
        capa_de_entrada = QgsVectorLayer(archivo_de_entrada, 'Características de entrada', 'ogr')
        
        # Crear una capa de salida que tenga las mismas características que la capa de entrada La misma estructura de tabla de atributos
        output_layer = QgsVectorLayer(input_layer.source(), 'Output Features', 'memory')
        output_provider = output_layer.dataProvider()
        
        # Limitar el límite de la región administrativa al rango espacial del vector actual elemento a recortar
        border_layer.setSubsetString( input_layer.extent().asWktPolygon())
        
        # Recortar los elementos vectoriales a recortar
        for feature in input_layer.getFeatures():
            # Obtener la geometría espacial de la característica vectorial
            geom = feature.geometry()
            
            # Determinar si la característica vectorial se cruza con el límite de la región administrativa
            si no geom.intersects(boundary_layer.extent()):
                continuar
            
            # Recortar la característica vectorial
            clipped_geom = geom.intersection(boundary_layer.extent())
            
            # Crear características recortadas
            clipped_feature = QgsFeature(feature)
            clipped_feature.setGeometry(clipped_geom)
            
            # Agregar características recortadas a la capa de salida
            output_provider.addFeature(clipped_feature)
        
        # Guardar la capa de salida como un Shapefile
        QgsVectorFileWriter.writeAsVectorFormat(output_layer, output_file, 'utf-8', output_layer.crs(), 'ESRI Shapefile')
 

Modifique la ruta del archivo en el código de acuerdo con la situación real. Tenga en cuenta que este código está diseñado para datos en formato Shapefile. Si los datos de entrada están en otros formatos, debe ajustar el código correspondiente en consecuencia. Además, debe asegurarse de que el entorno Python de QGIS esté instalado y configurado correctamente.

Guess you like

Origin blog.csdn.net/weixin_58851039/article/details/131320417