Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я так понимаю , закраска зависит от значений атрибутивной таблицы слоя и нужно связать значения с цветом?
			
			
									
						
										
						- 
				wwwisaev
- Интересующийся
- Сообщения: 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.
			
						- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
почему то не появилось новое поле, какие были поля, такие и остались
			
							- Вложения
- 
			
		
				- Безымянный.png (482.05 КБ) 8510 просмотров
 
- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
нужно получается сделать закраску по двум полям- порода и группа
			
			
									
						
										
						- 
				freeExec
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
И окажется, что сделать это заново в qgis было бы быстрее.
			
			
									
						
										
						- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
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
			
						- 
				freeExec
- Гуру
- Сообщения: 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.
			
						- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Спасибо, все получилось, есть еще вопрос: после закрытия и сохранения проекта, когда открываю заново все красится в черный цвет и в атрибутивной таблице в том поле где был цвет пусто, это каждый раз нужно делать эти операции? И возможно ли открыть этот проект в некстГис мобайл, с сохранением цветов, либо сконвертировать в какой нибудь формат, важна раскраска?
			
							- Вложения
- 
			
		
				- Безымянный.png (583.78 КБ) 8477 просмотров
 
- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
После выполнения запроса, как вы предложили для Qgis, ничего не меняется почему то в атрибутивной таблице
			
			
									
						
										
						- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Настраиваете стиль отображения слоя. В диалоге свойств внизу слева есть кнопочка [Стиль]. Жмёте и выбираете [Сохранить стиль] → [QGIS Layer Style File]. Сохраняете файл в ту же папку и с тем же именем (у него будет расширение QML). Впредь QGIS будет открывать слой с нужными настройками отображения.
			
							- Вложения
- 
			
		
				- img_20180301_142141.png (3.7 КБ) 8471 просмотр
 
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.
			
						- 
				wwwisaev
- Интересующийся
- Сообщения: 27
- Зарегистрирован: 25 июл 2014, 15:26
- Репутация: 0
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Проверьте пожалуйста, по моему все так, но выходит ошибка, а через раз выполняется алгоритм, но новый shp так и не создается
			
							- Вложения
- 
			
		
				- 2.png (208.01 КБ) 8426 просмотров
 
- 
			
		
				- 1.png (300.89 КБ) 8426 просмотров
 
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Конвертация векторного слоя из MapInfo в Qgis с сохранением раскраски полигонов
Я выполнял команду из консоли  (не из QGIS). Но если вам так удобнее, то пожалуйста:
			
							- Вложения
- 
			
		
				- Screenshot from 2018-03-02 14-03-55.png (101.07 КБ) 8424 просмотра
 
Spatial is now, more than ever, just another column- The Geometry Column.
			
						Кто сейчас на конференции
Сейчас этот форум просматривают: Amazon [Bot] и 5 гостей

