Скрипт qgis по разбиению слоя по атрибуту

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Russofed
Интересующийся
Сообщения: 35
Зарегистрирован: 16 ноя 2022, 13:34
Репутация: 8
Откуда: Пермь

Скрипт qgis по разбиению слоя по атрибуту

Сообщение Russofed » 06 май 2023, 14:19

Добрый день, написал скрипт по разбиению атрибута с помощью ИИ в котором разбивает векторный слой по атрибуту и задает границы для tab формата но все никак не получается его нормально запустить. Может кто то разбирается в Питоне или может есть альтернативный вариант через модель вот сам скрипт
Спойлер
from qgis.core import *
from qgis.gui import *
from PyQt5.QtWidgets import QFileDialog, QInputDialog, QAction, QMenu
import processing

# Инициализировать приложение Qt
app = QApplication([])

# Открыть диалоговое окно для выбора файла
input_file, _ = QFileDialog.getOpenFileName(None, 'Выберите исходный файл', '', 'Shapefile (*.shp)')

# Если файл не выбран, завершить выполнение скрипта
if not input_file:
exit()

# Получить имя выбранного файла без расширения
input_filename = QFileInfo(input_file).baseName()

# Открыть диалоговое окно для выбора пути сохранения
output_dir = QFileDialog.getExistingDirectory(None, 'Выберите папку для сохранения')

# Если папка не выбрана, завершить выполнение скрипта
if not output_dir:
exit()

# Открыть диалоговое окно для выбора поля для разбиения
layer = QgsVectorLayer(input_file, '', 'ogr')
field_names = [field.name() for field in layer.fields()]
field_name, ok = QInputDialog.getItem(None, 'Выберите поле для разбиения', 'Имя поля:', field_names, 0, False)

# Если имя поля не выбрано или диалоговое окно закрыто, завершить выполнение скрипта
if not ok or not field_name:
exit()

# Установить систему координат и границы мира для экспорта в формат TAB
crs = QgsCoordinateReferenceSystem('USER:100010')
ext = QgsRectangle(-10000000, -10000000, 10000000, 10000000)

# Задать параметры для инструмента Split Vector Layer
params = {
'INPUT': input_file, # входной файл
'FIELD': field_name, # поле для группировки
'FILE_TYPE': 'TAB', # формат экспорта
'PREFIX_FIELD': False,
'OUTPUT': f'{output_dir}/{input_filename}_split', # выходной файл
'OPTIONS': '', # параметры экспорта
'SP': crs, # система координат выходного файла
'CLIP': ext # границы мира выходного файла
}

# Выполнить инструмент Split Vector Layer
processing.run('qgis:splitvectorlayer', params)

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя