Перевод из SXF в SHP с сохранением стилей

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Mihail123
Новоприбывший
Сообщения: 2
Зарегистрирован: 18 апр 2019, 09:40
Репутация: 0
Откуда: Оренбург

Перевод из SXF в SHP с сохранением стилей

Сообщение Mihail123 » 18 апр 2019, 09:55

День добрый. SXF файлы закидываю в QGIS и настраиваю стили в ручную. А так как в одном SXF по 15 разных слоёв с Уникальными CLCDAми и стилями, то каждый слой экспортировать отдельно и к нему стиль очень трудоёмко. Подскажите есть ли модуль который мог бы упростить экспорт в SHP группой файлов со стилями?

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Игорь Белов » 18 апр 2019, 12:18

Там же классификатор: в SXF у объектов коды, а в RSC соответствующие этим кодам стили. Так что нужен не модуль, а стилевые файлы.

Включаем отображение слоёв по категориям и рисуем похожие стили в соответствии с кодами. Потом сохраняем стилевые файлы, которые в будущем используем для новых данных из того же источника.
The purpose of computing is insight, not numbers

Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Dmitry Stasev » 19 апр 2019, 12:33

Наверное достаточно 3 стилевых файла (точки, линии, полигоны) с типом знака - "Уникальные значения" по полю CLCODE. Которые дописывать кодами и стилями по мере подгрузки слоев.
В итоге получатся 3 псевдо-классификатора )
В любом случае, наверняка, почти все ручками придется делать.

Mihail123
Новоприбывший
Сообщения: 2
Зарегистрирован: 18 апр 2019, 09:40
Репутация: 0
Откуда: Оренбург

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Mihail123 » 19 апр 2019, 15:32

Dmitry Stasev, Стили под каждый слой я создал и всё настроил по CLCODE. Потом я все эти слои что настроил пересохраняю в SHP для редактирования. Сохраняю каждый слой и к нему стиль в ручную, а слоёв тьма( Видимо все ручками... Так и не нашёл решения.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2230
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1503
Откуда: Казань

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Игорь Белов » 19 апр 2019, 15:47

  • Стилевой файл можно подгружать к открытому шейпу. В проекте оформление сохранится.
  • Можно до открытия шейпа скопировать стилевой файл к файлам этого шейпа с таким же именем. Шейп откроется сразу в нужном виде.
The purpose of computing is insight, not numbers

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение trir » 19 апр 2019, 16:15


Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Dmitry Stasev » 19 апр 2019, 18:35

Mihail123 писал(а):
19 апр 2019, 15:32
Стили под каждый слой
Я предлагал не на каждый слой, а на каждый тип (точки, линии, полигоны)
А потом эти "3 псевдо-классификатора" накатить на Ваши слои
(например в консоли Python)
для выделенных в легенде слоев

Код: Выделить всё

# -*- coding: utf-8 -*-
from qgis.PyQt.QtCore import *

# путь к стилю для полигонов
style = u'a:\\test\\poly.qml'

# для выделенных в легенде слоев
for layer in iface.legendInterface().selectedLayers():
    layer.loadNamedStyle(style)
Последний раз редактировалось Dmitry Stasev 19 апр 2019, 18:55, всего редактировалось 1 раз.

Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Перевод из SXF в SHP с сохранением стилей

Сообщение Dmitry Stasev » 19 апр 2019, 18:53

А если побольше автоматизации, то так:
для всех слоев в легенде по типу геометрии

Код: Выделить всё

# -*- coding: utf-8 -*-
from qgis.PyQt.QtCore import *

# стили
stylePoint = u'a:\\test\\point.qml'
styleLine = u'a:\\test\\line.qml'
stylePoly = u'a:\\test\\poly.qml'
# для всех слоев в легенде по типу геометрии
for layer in iface.legendInterface().layers():
    if layer.wkbType()==QGis.WKBPoint or layer.wkbType()==QGis.WKBMultiPoint:
        layer.loadNamedStyle(stylePoint)

    if layer.wkbType()==QGis.WKBLineString or layer.wkbType()==QGis.WKBMultiLineString:
        layer.loadNamedStyle(styleLine)

    if layer.wkbType()==QGis.WKBPolygon or layer.wkbType()==QGis.WKBMultiPolygon:
        layer.loadNamedStyle(stylePoly)

Ответить

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

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

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