16 февраля 2017-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Грузим точки

Знаете, бывает иногда: договорились с какой-нибудь «Пятёрочкой», что они откроют данные для загрузки в OpenStreetMap, месяц пробирались сквозь бюрократию, получили заветный файл в формате CSV... И что? Допустим, сделали из него OSM XML и открыли в JOSM. Там восемь тысяч точек, которые нельзя просто взять и загрузить: в OpenStreetMap половина уже отмечена, часть — полигонами или отношениями, ещё минимум тысяча не подписана. Перелопачивать весь массив долго, монотонно и уныло. А на подходе уже «Магнит», который прознал про нашу лучшую в мире карту и готовит свои девять тысяч точек. И через месяц — обновление.

Пока в MAPS.ME обращались небольшие компании с сотней-другой точек, мы махали рукой и просили либо разобраться в OSM самостоятельно, либо подождать, пока кто-нибудь напишет скрипт. Но вы знаете основной принцип открытого проекта, так что теперь такой инструмент есть. Задачу из первого абзаца легко решит OSM Conflator.

Это скрипт на Python 3, который принимает профиль с настройками импорта и функцией подготовки данных. Он скачивает свежий набор, запрашивает у Overpass API подходящие объекты из OpenStreetMap и сопоставляет точки из обоих наборов. Геометрия из OSM считается эталонной, как и все теги, кроме заранее определённого набора (например, времени работы, которое поставщику данных лучше знать). Существующим объектам скрипт досыпает тегов, добавляет новые точки туда, где в OSM ничего нет, и выдаёт файл osmChange.

Дальше его можно напрямую загрузить в OpenStreetMap, но это нехорошо, противоречит руководству по импортам. Правильнее будет открыть файл в JOSM, проверить глазами, что ничего не сломалось и теги правильные, а затем выдать профиль и файл на обсуждение сообществу. Именно это я проделал со списоком паркоматов Москвы, полученных с портала открытых данных: до пятницы можно поискать ошибки в файле osc и профиле, после чего паркоматов в OSM станет на 765 больше.

Если не хочется импортировать, или владелец данных не дал явного разрешения, можно обойтись валидатором CupIvan. Он примерно так же сравнивает данные OSM и официального источника, но вместо загрузки выводит таблицу, где видны неправильные значения тегов, лишние и отсутствующие объекты. Исправлять приходится по одному объекту за раз, зато нет головной боли с обсуждением импорта в сообществе. Иван давно не обновляет валидатор, эстафету за последние три года перехватывали dndred, KoolRu и Avlaak. Последние два даже обновляют данные.

Мнения, высказанные на этом сайте, отражают точку зрения лично автора сайта и ничью больше: ни его бывших или настоящих работодателей, ни семьи и знакомых.

8 февраля 2017   · · ·
← Ctrl →
· · ·   18 февраля 2017