Чтобы использовать программирование 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.