QGIS根据行政区边界,批量裁剪栅格

要使用QGIS编程实现根据行政区边界批量裁剪栅格,可以利用PyQGIS库来完成。


from qgis.core import QgsRasterLayer, QgsProject, QgsRectangle

# 设置行政区边界文件路径
boundary_file = '/path/to/admin_boundary.shp'
# 设置待裁剪的栅格文件夹路径
input_folder = '/path/to/input_rasters/'
# 设置输出文件夹路径
output_folder = '/path/to/output_rasters/'

# 加载行政区边界图层
boundary_layer = QgsVectorLayer(boundary_file, 'Admin Boundary', 'ogr')

# 遍历待裁剪的栅格文件夹中的所有文件
for filename in os.listdir(input_folder):
    if filename.endswith('.tif'):  # 只处理GeoTIFF格式的文件
        input_file = os.path.join(input_folder, filename)
        output_file = os.path.join(output_folder, filename)
        
        # 加载待裁剪的栅格图层
        input_layer = QgsRasterLayer(input_file, 'Input Raster')
        
        # 获取行政区边界的空间范围
        boundary_extent = boundary_layer.extent()
        
        # 设置裁剪后的输出范围为行政区边界的范围
        output_extent = QgsRectangle(
            boundary_extent.xMinimum(),
            boundary_extent.yMinimum(),
            boundary_extent.xMaximum(),
            boundary_extent.yMaximum()
        )
        
        # 根据输出范围裁剪栅格数据
        processing.run("gdal:cliprasterbyextent", {
            'INPUT': input_file,
            'PROJWIN': f'{output_extent.xMinimum()} {output_extent.xMaximum()} {output_extent.yMinimum()} {output_extent.yMaximum()}',
            'OUTPUT': output_file
        })

# 注意,上述代码需要确保已经安装并正确配置了QGIS Python环境,并导入了所需的库。请根据实际情况修改代码中的文件路径。

该代码使用了QGIS中的`gdal:cliprasterbyextent`算法来裁剪栅格数据,裁剪后的输出栅格范围根据行政区边界的范围进行设置。请注意修改代码中的文件路径以适应你的实际情况,并确保已经安装所需的依赖库。

你可能感兴趣的:(QGIS,QGIS)