QGIS извлекает осевую линию плоской водной системы партиями.

Чтобы использовать программирование Python в QGIS для пакетного извлечения осевых линий плоских водных систем, вы можете следовать следующим примерам кода:
# Импортировать необходимые модули
импортировать обработку
из qgis.core import QgsProject, QgsVectorLayer

# Загрузить слой поверхности воды
water_body_layer = QgsProject.instance().mapLayersByName('Water_Body')[0]

# Создать выходной каталог
output_dir = 'path/to/output/'
, если нет os.path.exists(output_dir):
    os.makedirs(output_dir)

# Обходим все объекты водоема
features = water_body_layer.getFeatures()
для объекта в features:
    # Получаем объект геометрии объектов водоема
    geom = feature.geometry()
    
    # Извлекаем осевую линию
    centerline_output = output_dir + f'centerline_{feature.id() }.shp'
    processing.run("native:centroids", {         'INPUT': QgsProcessingFeatureSourceDefinition(geom.source()),         'ALL_PARTS': False,         'OUTPUT': centerline_output     })



# 加载所有中心线图层(可选)
centerline_layers = []
для имени файла в os.listdir(output_dir):
    if filename.startswith('centerline_') and filename.endswith('.shp'):
        layer_path = output_dir + filename
        centerline_layer = QgsVectorLayer(путь_слоя, имя файла[:-4], 'ogr'),
        если centerline_layer.isValid():
            centerline_layers.append(centerline_layer)
            QgsProject.instance().addMapLayer(centerline_layer)

# Примечание. В приведенном выше примере кода предполагается, что слой поверхности воды с именем "Water_Body" был загружен, а слой центральной линии сохранен в указанном выходном каталоге (пожалуйста, замените его фактическим путем).
# Обходим все объекты водной поверхности и используем собственный алгоритм QGIS "native:centroids" для извлечения осевой линии. Формат имени файла для каждого слоя осевой линии — «centerline_featureID.shp».

# Чтобы загрузить каждый слой осевой линии в проект QGIS, вы можете раскомментировать соответствующую часть в приведенном выше фрагменте кода.

Обратите внимание, что в процессе программирования убедитесь, что слой поверхности воды был загружен правильно, и что такие настройки, как выходной каталог, соответствуют вашей системной среде. Кроме того, для последующего анализа и обработки данных вам может потребоваться более глубокое понимание соответствующих документов и использования функций QGIS и Python.

Guess you like

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