Стиль слоя на основе внешних данных

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
fort
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 июл 2017, 18:50
Репутация: 0

Стиль слоя на основе внешних данных

Сообщение fort » 19 июл 2017, 19:14

Есть набор данных OSM в QGIS. В нем есть слой с полигонами зданий. У нашего городского провайдера на сайте есть список домов, в которых он присутствует. Мне нужно раскрасить полигоны этих домов на карте другим цветом. Да, провайдеров будет несколько.
Кое-что я уже попробовал. Создал новый shape-слой providers с полями id,provider и osmid. Далее добавил в таблицу этого слоя несколько строк. Значения osmid копировал из слоя building_polygon.shp для конкртеного дома, значение provider указывал в соответсвии со списом адресов провайдера. Далее для слоя building_polygon создал связь со слоем providers по полю osmid. Теперь для слоя building_polygon стало доступно поле provider. Теперь в качестве стиля для слоя building_polygon можно использовать стиль "Уникальные значения", в качестве поля выбрать providers_provider и задать разные цвета для разных значений полей.

В принципе получается то что и хотелось. Но непонятно как реализовать это для всех домов из списка. Сам список домов я могу привести к любому виду и руками (csv, например), но копировать для каждого адреса поле osmid в отдельную таблицу это уже слишком много ручной работы. Хочется найти более элегантное решение. Есть подозрения что подобную задачу можно решить несколькими способами, и придуманный мной не самый простой.

Сейчас думаю импортировать список домов целиком в таблицу нового слоя и попробовать настроить связь с ним слоя building_polygon по полям A_STRT и A_HSNMBR. Но прийдется унифицировать названия улиц.

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

Re: Стиль слоя на основе внешних данных

Сообщение trir » 19 июл 2017, 20:09


tsarev
Завсегдатай
Сообщения: 406
Зарегистрирован: 14 авг 2006, 16:21
Репутация: 25

Re: Стиль слоя на основе внешних данных

Сообщение tsarev » 24 июл 2017, 12:20

Самое простое - сделать связь списков по адресам.
Второй вариант - получить координаты центров домов из списка провайдера и наложить на полигоны Ваших домов.
Ряд объектов выпадет, т.к. конфигурация дома может быть Г-образной.
Для проверки можно получить центроиды полигонов OSM и сравнить с центроидами объектов провайдеров.

fort
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 июл 2017, 18:50
Репутация: 0

Re: Стиль слоя на основе внешних данных

Сообщение fort » 24 июл 2017, 14:36

tsarev писал(а):Самое простое - сделать связь списков по адресам.
Хотел так сделать. Создал новый слой из списка домов (без геометрии), загрузил в QGIS. Но связь между слоями, похоже, настраивается только по 1 полю, а мне нужно по двум полям(улица и номер дома).
Пока выгрузил список всех домов города в текстовый файл и убрал все колонки кроме omsid, a_strt и a_hsnmbr.
Теперь в одном списке есть все дома города с полем osmid, в другом - дома провайдера, но без поля osmid. Осталось из первого списка получить значения osmid для второго. Затем его можно будет загрузить в QGIS и по полю osmid связать со слоем зданий osm.
tsarev писал(а):Второй вариант - получить координаты центров домов из списка провайдера и наложить на полигоны Ваших домов.
Это сложно звучит, даже не знаю как такое можно реализовать.

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

Re: Стиль слоя на основе внешних данных

Сообщение trir » 24 июл 2017, 14:51

Во первых - не факт, что нужный дом есть в OSM и у нег есть все нужные параметры. Но если он есть и все параметры заданы правильно - его можно получить через Overpass API

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Стиль слоя на основе внешних данных

Сообщение freeExec » 24 июл 2017, 15:02

Если делать по уму, то нужно геокодировать адреса, хотя они там представлены ущербно для этого, а далее сопоставить по геометрической вложенности. Но блин, там же 20 домов, за неделю можно было вручную протыкать 200 домов.
П.С. Привязка к osm_id чревата, он не постоянен. Завтра при детализации дома он может оказаться забором на парковке.

fort
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 июл 2017, 18:50
Репутация: 0

Re: Стиль слоя на основе внешних данных

Сообщение fort » 24 июл 2017, 15:16

trir писал(а):Но если он есть и все параметры заданы правильно - его можно получить через Overpass API
Добавлю в копилку решений как еще один способ. Изначально хотелось сделать все максимально просто.
freeExec писал(а): Но блин, там же 20 домов, за неделю можно было вручную протыкать 200 домов.
После приведения списка в формат csv получилоссь более 600. Конечно, способ тоже рабочий, но пока не рассматривается.
freeExec писал(а):П.С. Привязка к osm_id чревата, он не постоянен. Завтра при детализации дома он может оказаться забором на парковке.
Внезапно :shock: для меня. Это ставит под сомнение всю затею связи слоев по этому полю.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Стиль слоя на основе внешних данных

Сообщение freeExec » 24 июл 2017, 16:08

Поэтому в таких случаях и делают связь АдресОСМ <=> АдресВнешний. Поднимают локальный геокодер и гоняют по нему не привязываясь к ID.

Ответить

Вернуться в «Я новичок!»

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

Сейчас этот форум просматривают: Ahrefs [Bot], ustreb и 2 гостя