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