QGISは行政区域の境界に従ってラスターをバッチでクロップします

QGIS プログラミングを使用して、行政区域の境界に従ってラスターをバッチクロップするには、PyQGIS ライブラリを使用して完了できます。


qgis.core から QgsRasterLayer、QgsProject、QgsRectangle をインポート

# 行政領域境界ファイルのパスを設定します
boundary_file = '/path/to/admin_boundary.shp'
# クリップするラスター フォルダーのパスを設定します
input_folder = '/path/to/input_rasters/'
# 出力フォルダーのパスを設定します
output_folder = '/パス /to/output_rasters/'

# 管理領域の境界レイヤーをロードします
boundary_layer = QgsVectorLayer(boundary_file, 'Admin Boundary', 'ogr')


#ファイル名をクリップするラスターフォルダー内のすべてのファイルを走査します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, '入力ラスター')
        
        # 行政区域境界の空間範囲を取得します
        border_extent = border_layer.extent()
        
        #トリミングされた出力範囲を行政地域境界の範囲に設定します。 Output_extent
        = QgsRectangle(
            boundary_extent.xMinimum(),
            boundary_extent.yMinimum(),
            boundary_extent.xMinimum(),
            boundary_extent.yMinimum()
        )
        
        # 出力範囲に従ってラスター データをクリップします
        process.run("gdal:cliprasterbyextent", {             'INPUT': input_file,             'PROJWIN': f'{output_extent.xMinimum()} {output_extent.xMinimum()} {output_extent. yMinimum( )} {output_extent.yMinimum()}',             'OUTPUT': 出力ファイル         })



# 上記のコードは、QGIS Python 環境が正しくインストールおよび構成され、必要なライブラリがインポートされていることを確認する必要があることに注意してください。実際の状況に応じてコード内のファイルパスを変更してください。

このコードは、QGIS の `gdal:cliprasterbyextent` アルゴリズムを使用してラスター データをクリップし、クリップされた出力ラスター範囲は行政区域の境界の範囲に従って設定されます。実際の状況に合わせてコード内のファイル パスを変更することに注意し、必要な依存関係がインストールされていることを確認してください。

おすすめ

転載: blog.csdn.net/weixin_58851039/article/details/131320449