Wikidata — это следующий OpenStreetMap

trolleway
3 min readMar 17, 2019

--

Эта инструкция относится к тому случаю, когда вы хотите нарисовать карту каких-нибудь реально существующих объектов с атрибутами. При этом рисовать геометрию вы хотите, а вот вбивать названия вручную вы уже не хотите, потому что названия могут быть на разном языке. При этом в OSM эти объекты не нужны.

Я хочу сделать похожую карту для Википедии про РЖД. Банальная вещь, но её ещё никто не нарисовал.

Рисуем полигоны в чём умеем, в JOSM или NextGIS QGIS. Для рисования соприкасающихся полигонов в QGIS нужно сделать настройки по инструкции: http://docs.nextgis.ru/docs_ngqgis/source/editing.html#id17

Получились вот такие геоданные
Настройки прилипания, которые нужны для рисования соприкасающихся полигонов

В атрибуты заносятся коды сущностей Wikidata. Больше никакого вбивания названий вручную!

Теперь нужны названия этих железных дорог, и вот их мы берём из wikidata.

Работа с Wikidata

Ищем одну из фич, смотрим, по каким свойствам можно выбрать запросом все железные дороги входящие в РЖД.

Можно выбрать по “Транспортная компания” и “Материнская компания”=”РЖД”. Ну это в идеале, через несколько лет так можно будет выбрать, а пока нужные данные вероятно придётся заносить в wikidata самому. Например “Это частный случай понятия” был проставлен у 2 филиалов из 16 нужных, поэтому я массово проставил их через инструмент QuickStatements2, потом понял что к нему никто не написал мануал, нашёл предыдущий работающий QuickStatements1, и проставил через него.

Итак, идём на http://query.wikidata.org, ищем в примерах похожий запрос, и пытаемся его переделать, что бы он выдавал список нужных объектов.

SELECT ?object ?objectLabel ?code WHERE {
?object wdt:P31/wdt:P279* wd:Q740752.
?object wdt:P749 wd:Q660770.
OPTIONAL { ?object wdt:P1471 ?code. }
SERVICE wikibase:label { bd:serviceParam wikibase:language “ru”. }
}

Вот

http://tinyurl.com/y5wt9wkz

Запрос выдаёт нужные подписи, и код утверждения. На странице есть кнопка “Скачать”, результат в csv открывается в QGIS, и привязывается к слою через JOIN.

Язык названия можно менять в запросе.

Переходим в NextGIS QGIS

CSV открывается в NextGIS QGIS как CSV без геометрии
В слое геометрии через калькулятор полей создаётся новое поле, в котором получается идентификатор wikidata в нужном формате.
Заходим в свойства слоя с геометрией, и присоединяем к нему слой с названиями

Таким образом, получаем слой с полигонами, и подписями

Тут мы видим что карта на вид получается кошмарной, ведь и слова у нас длинней, и туго дело с рифмой, к тому же в нашем языке довольно мало ритма. Но технически эту карту уже можно выгонять в svg и грузить на wikimedia commons. Дальше можно ещё столько же времени работать над её видом, то есть заниматься классической картографией, но для простоты изложения на этом инструкция закончена.

https://commons.wikimedia.org/wiki/File:RZD_branches_area_2018.svg

--

--

No responses yet