Перевод из SXF в SHP с сохранением стилей
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 18 апр 2019, 09:40
- Репутация: 0
- Откуда: Оренбург
Перевод из SXF в SHP с сохранением стилей
День добрый. SXF файлы закидываю в QGIS и настраиваю стили в ручную. А так как в одном SXF по 15 разных слоёв с Уникальными CLCDAми и стилями, то каждый слой экспортировать отдельно и к нему стиль очень трудоёмко. Подскажите есть ли модуль который мог бы упростить экспорт в SHP группой файлов со стилями?
- Игорь Белов
- Гуру
- Сообщения: 2230
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1503
- Откуда: Казань
Re: Перевод из SXF в SHP с сохранением стилей
Там же классификатор: в SXF у объектов коды, а в RSC соответствующие этим кодам стили. Так что нужен не модуль, а стилевые файлы.
Включаем отображение слоёв по категориям и рисуем похожие стили в соответствии с кодами. Потом сохраняем стилевые файлы, которые в будущем используем для новых данных из того же источника.
Включаем отображение слоёв по категориям и рисуем похожие стили в соответствии с кодами. Потом сохраняем стилевые файлы, которые в будущем используем для новых данных из того же источника.
The purpose of computing is insight, not numbers
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Перевод из SXF в SHP с сохранением стилей
Наверное достаточно 3 стилевых файла (точки, линии, полигоны) с типом знака - "Уникальные значения" по полю CLCODE. Которые дописывать кодами и стилями по мере подгрузки слоев.
В итоге получатся 3 псевдо-классификатора )
В любом случае, наверняка, почти все ручками придется делать.
В итоге получатся 3 псевдо-классификатора )
В любом случае, наверняка, почти все ручками придется делать.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 18 апр 2019, 09:40
- Репутация: 0
- Откуда: Оренбург
Re: Перевод из SXF в SHP с сохранением стилей
Dmitry Stasev, Стили под каждый слой я создал и всё настроил по CLCODE. Потом я все эти слои что настроил пересохраняю в SHP для редактирования. Сохраняю каждый слой и к нему стиль в ручную, а слоёв тьма( Видимо все ручками... Так и не нашёл решения.
- Игорь Белов
- Гуру
- Сообщения: 2230
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1503
- Откуда: Казань
Re: Перевод из SXF в SHP с сохранением стилей
- Стилевой файл можно подгружать к открытому шейпу. В проекте оформление сохранится.
- Можно до открытия шейпа скопировать стилевой файл к файлам этого шейпа с таким же именем. Шейп откроется сразу в нужном виде.
The purpose of computing is insight, not numbers
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Перевод из SXF в SHP с сохранением стилей
Я предлагал не на каждый слой, а на каждый тип (точки, линии, полигоны)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 раз.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Перевод из SXF в SHP с сохранением стилей
А если побольше автоматизации, то так:
для всех слоев в легенде по типу геометрии
для всех слоев в легенде по типу геометрии
Код: Выделить всё
# -*- 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)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 35 гостей