QGISは平面水系の中心線をバッチで抽出します

QGIS で Python プログラミングを使用して平面水系の中心線をバッチで抽出するには、次のコード例に従うことができます。 #
必要なモジュールをインポートする
インポート処理
from qgis.core import QgsProject, QgsVectorLayer

# 水面レイヤーを読み込みます
water_body_layer = QgsProject.instance().mapLayersByName('Water_Body')[0]

# 出力ディレクトリを作成します。os.path.exists(output_dir) でない場合は、
output_dir = 'path/to/output/' :     os.makedirs(output_dir)

# すべての水域フィーチャを走査します
features = Water_body_layer.getFeature()
for feature in features:
    # 水域フィーチャのジオメトリ オブジェクトを取得します
    geom = feature.geometry()
    
    # 中心線を抽出
    centerline_output = Output_dir + f'centerline_{feature.id() }.shp'
    処理.run("native:centroids", {         'INPUT': QgsProcessingFeatureSourceDefinition(geom.source()),         'ALL_PARTS': False,         'OUTPUT': centerline_output     })



# すべての中心線図を追加(オプション)
centerline_layers = []
for filename in os.listdir(output_dir):
    if filename.startswith('centerline_') and filename.endswith('.shp'):
        layer_path = Output_dir + filename
        centerline_layer = QgsVectorLayer(layer_path, filename[:-4], 'ogr')
        if centerline_layer.isValid():
            centerline_layers.append(centerline_layer)
            QgsProject.instance().addMapLayer(centerline_layer)

# 注: 上記のコード例は、「Water_Body」という名前の水面レイヤーが読み込まれ、中心線レイヤーが指定された出力ディレクトリに保存されていることを前提としています (実際のパスに置き換えてください)。
# すべての水面フィーチャをトラバースし、QGIS のネイティブ アルゴリズム「native:centroids」を使用して中心線を抽出します。各中心線レイヤーのファイル名の形式は「centerline_featureID.shp」です。

# 各中心線レイヤーを QGIS プロジェクトにロードするには、上記のコード スニペットの関連部分のコメントを解除します。

プログラミングの際には、水面レイヤーが正しく読み込まれているか、出力ディレクトリなどの設定がシステム環境に合っているかをご確認ください。さらに、その後のデータ分析と処理のために、QGIS と Python の関連ドキュメントと関数の使用法をさらに理解する必要がある場合があります。

おすすめ

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