Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я так понимаю , закраска зависит от значений атрибутивной таблицы слоя и нужно связать значения с цветом?
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я так понимаю, закраска будет зависеть от данных атрибутивной таблицы, нужно связать нужный цвет с данными полей?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Да, нужно связать, поэтому сначала я и предложил вам выгрузить стиль из tab в отдельное поле шейпа.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
почему то не появилось новое поле, какие были поля, такие и остались
- Вложения
-
- Безымянный.png (482.05 КБ) 6694 просмотра
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
нужно получается сделать закраску по двум полям- порода и группа
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
И окажется, что сделать это заново в qgis было бы быстрее.
- Игорь Белов
- Гуру
- Сообщения: 2231
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1504
- Откуда: Казань
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Если MapInfo доступна, то перенос цвета делается просто.
В калькуляторе полей пишем формулу: brush2fill( "info3" ).
Аналогично можно перенести свойства обводки (толщину, цвет).
- В MapInfo добавим колонку текстового типа. Пусть это будет "info3".
- Обновим колонку выражением "ObjectInfo(obj,3)". Для полигонов получатся значения вида "Brush (2, 13421823, 16777215)". Второе число и есть цвет заливки.
- Преобразуем TAB в шейп любым способом (Universal Translator, FME, GDAL, просто открыть в QGIS и пересохранить в шейп…).
- В QGIS в калькуляторе полей создадим поле текстового типа для цвета заливки. Его надо будет заполнить преобразованными значениями второго числа. Так,"13421823" должно превратиться, скажем, в "204,204,255" или "#ccccff".
- В настройках стиля справа от выбора цвета заливки жмём кнопочку и выбираем в пункте "Field type: string" имя нового поля.
Код: Выделить всё
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def brush2fill(brush, feature, parent):
color = int(brush.split(', ')[1])
return u'#{:06x}'.format(color)
Аналогично можно перенести свойства обводки (толщину, цвет).
The purpose of computing is insight, not numbers
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
У такого способа есть пару минусов:
1) Чтобы сменить цвет придётся дергать данные и менять в них старые значения на новые, да ещё писать обратный преобразователь fill2brush
2) После добавления новых объектов им нужно задавать цвета, а значит нужна ещё одна функция params2brush
3) Если потом кто-то поменяет независимо цвета в исходном tab, то будет просто "смерть", т.к. в худшем случае придётся проделывать пункты 1 и 2 ещё раз.
Т.е. весь этот подход годиться только если нужно разово засунуть в QGIS и забыть это как страшны сон.
1) Чтобы сменить цвет придётся дергать данные и менять в них старые значения на новые, да ещё писать обратный преобразователь fill2brush
2) После добавления новых объектов им нужно задавать цвета, а значит нужна ещё одна функция params2brush
3) Если потом кто-то поменяет независимо цвета в исходном tab, то будет просто "смерть", т.к. в худшем случае придётся проделывать пункты 1 и 2 ещё раз.
Т.е. весь этот подход годиться только если нужно разово засунуть в QGIS и забыть это как страшны сон.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я ведь предложил всё то же самое, только без использования MapInfo:
Кстати, MapServer понимает символику в таком виде. Поэтому слой с таким полем может быть загружен, например, в NextGIS Web и отрисован в с помощью MapServer рендерера без ручной настройки цветов. Проверяли - работает.
Код: Выделить всё
$ ogr2ogr -f "ESRI Shapefile" -sql "select *, OGR_STYLE from EXTRACT_POLYGON" EXTRACT_POLYGON.shp EXTRACT_POLYGON.tab
$ ogrinfo -al -geom=NO EXTRACT_POLYGON.shp
INFO: Open of `EXTRACT_POLYGON.shp'
using driver `ESRI Shapefile' successful.
Layer name: EXTRACT_POLYGON
Metadata:
DBF_DATE_LAST_UPDATE=2018-03-01
Geometry: Polygon
Feature Count: 1
Extent: (2470584.152000, 2583348.628000) - (2486538.445000, 2604102.155000)
Layer SRS WKT:
...
blank: String (1.0)
OGR_STYLE: String (111.0)
OGRFeature(EXTRACT_POLYGON):0
blank (String) = (null)
OGR_STYLE (String) = BRUSH(fc:#000000,bc:#ffffff,id:"mapinfo-brush-1,ogr-brush-1");PEN(w:1px,c:#000000,id:"mapinfo-pen-2,ogr-pen-0")
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Спасибо, все получилось, есть еще вопрос: после закрытия и сохранения проекта, когда открываю заново все красится в черный цвет и в атрибутивной таблице в том поле где был цвет пусто, это каждый раз нужно делать эти операции? И возможно ли открыть этот проект в некстГис мобайл, с сохранением цветов, либо сконвертировать в какой нибудь формат, важна раскраска?
- Вложения
-
- Безымянный.png (583.78 КБ) 6661 просмотр
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
После выполнения запроса, как вы предложили для Qgis, ничего не меняется почему то в атрибутивной таблице
- Игорь Белов
- Гуру
- Сообщения: 2231
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1504
- Откуда: Казань
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Настраиваете стиль отображения слоя. В диалоге свойств внизу слева есть кнопочка [Стиль]. Жмёте и выбираете [Сохранить стиль] → [QGIS Layer Style File]. Сохраняете файл в ту же папку и с тем же именем (у него будет расширение QML). Впредь QGIS будет открывать слой с нужными настройками отображения.
- Вложения
-
- img_20180301_142141.png (3.7 КБ) 6655 просмотров
The purpose of computing is insight, not numbers
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Потому что в моём примере создаётся новый файл, вот в нём и появляется новое поле.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Проверьте пожалуйста, по моему все так, но выходит ошибка, а через раз выполняется алгоритм, но новый shp так и не создается
- Вложения
-
- 2.png (208.01 КБ) 6610 просмотров
-
- 1.png (300.89 КБ) 6610 просмотров
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я выполнял команду из консоли (не из QGIS). Но если вам так удобнее, то пожалуйста:
- Вложения
-
- Screenshot from 2018-03-02 14-03-55.png (101.07 КБ) 6608 просмотров
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей