LINUX.ORG.RU
решено ФорумTalks

Как быстро работать с OSM данными?

 ,


0

1

Надо построить контуры регионов России. Казалось бы все банально, но нет.

Если выгружать данные с сервера OSM через API - медленно грузится, к тому же периодически ошибки соедиения.

Скачал карту России в PBF формате.

Но библиотеки работы с ним (esy.osm.pbf) устроены используют callback подход, когда файл просто читается, и вызываются callback для relation/way/node.

С учетом размера карты России, это тоже очень медленно работает - надо сперва прочитать все way, входящие в соответствующий relation, а затем надо прочитать все точки, входящие в нужные way.

В то же время если я зайду на https://www.openstreetmap.org/relation/51490, то контур строится моментально.

Как это сделано и как это повторить?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 4)

«Читал мало, знаю ещё меньше, но мнение выскажу»

Вроде бы скачанные карты загружают в postgres/postgis и уже с базой работают https://wiki.openstreetmap.org/wiki/Osm2pgsql

В вики OSM есть инструкция по разворачиванию локальной копии, включая API: https://wiki.openstreetmap.org/wiki/Overpass_API/Installation БД там уже есть

router ★★★★★
()

В то же время если я зайду на https://www.openstreetmap.org/relation/51490, то контур строится моментально.
Как это сделано и как это повторить?

GET https://www.openstreetmap.org/api/0.6/relation/51490/full

Если выгружать данные с сервера OSM через API - медленно грузится, к тому же периодически ошибки соедиения.

Регионов не так и много, решаемо через API.
Высасывать и парсить архивы по регионам выйдет труднее.

shahid ★★★★★
()

да, правильно отписала серая мышь: в постгресс их!

crypt ★★★★★
()
Ответ на: комментарий от router

«Читал мало, знаю ещё меньше, но мнение выскажу»

В вики OSM есть инструкция по разворачиванию локальной копии

да, это работает. сейчас вспомнил, что году в 13-14 я брал фриланс на эту тему.

crypt ★★★★★
()

Это сделано хранением базы в postgresql, см. osm2pgsql. Только это займёт уйму места и времени, и ради того чтобы раз в месяц-год обновить контуры регионов проще в 2 прохода прочитать дамп за несколько десятков минут.

slovazap ★★★★★
()
Ответ на: комментарий от pacify

Понятия не имею, я этим не занимался, только дампы парсил. Емнип, там было две схемы - родная схема OSM (точки-линии-отношения с тэгами), и схема под мапник где хранится уже нормальная геометрия (т.е. мультиполигоны например в обычные полигоны конвертируются). В первом случае они, очевидно, должны хранится как все тэги. Про второй ничего не знаю.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

точки-линии-отношения

Ну это понятно. Три таблицы там есть. Но в записях (полях) этих таблиц полного набора номеров домов я не нашёл.

p.s. Не просто так ведь онлайн-сервисы существуют, они проделали значительную работу по конвертации данных, пригодную для прямого и обратного разрешения координаты<->адрес. Где-то на хабре был пример такого сервиса.

pacify ★★★★★
()
Ответ на: комментарий от pacify

Но в записях (полях) этих таблиц полного набора номеров домов я не нашёл

А какой нашли? И откуда уверенность что в OSM вообще есть ваш полный набор номеров домов?

p.s. Не просто так ведь онлайн-сервисы существуют, они проделали значительную работу по конвертации данных, пригодную для прямого и обратного разрешения координаты<->адрес. Где-то на хабре был пример такого сервиса.

Проделали, но никаких ноухау там нет. Взять addr:* тэги, собрать из них адрес в нужном формате, сопоставить полигону или точке, сделать индекс для быстрого поиска в обе стороны. Что бы вы ни делали, кодить там меньше времени чем ждать обработки дампов.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.