Pull to refresh

Comments 28

Да, получается что они не очень и свежие. Последняя версия PostgreSQL — 9.4, а в контейнерах что вы отправили версии 9.3
У меня возникли небольшие сложности в работе с версией 9.3, но может быть — это я что-то не так делаю
Ничего ведь не мешает вынести postgres в отдельный контейнер?..
Вот еще интересный проект нашелся — github.com/komoot/photon
Вообще были эксперименты по запахиванию базы OSM сразу в эластик, даже что-то получалось и поживее чем Postgres. Надо посмотреть что там спустя 2 года происходит.
Спасибо за ссылку. В ближайшее время постараюсь провести тестирование, что будет быстрее: геокодер с использованием PostgreSQL(postgis) или elasticsearch
Вот геокодер на ElasticSearch, написанный на коленке для одного из проектов: github.com/ei-grad/geocoder. В итоге используем что-то другое, но этот вроде неплохо работал.

Feedback welcome.
photon для построения индекса вроде тоже PostGIS использует.

Раз уж это тред геокодеров — вот попробуйте и мой. github.com/kiselev-dv/gazetteer
Обязательно на днях попробую=)
Можно будет ещё проверить что же быстрее выполняет запрос.
Вот тут можно живьем инсталляцию покрутить. osm.me
UFO just landed and posted this here
Да, доступно. Вот пример:
Request: nominatim.openstreetmap.org/reverse?format=json&lat=46.4846121&lon=30.7325586

Response:
{"place_id":"91403255","licence":"Data © OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright","osm_type":"way","osm_id":"160458343","lat":"46.48490415","lon":"30.7323209604386","display_name":"23, Преображенская улица, Одесса, Приморский район, Одесса, Одесская область, 65082, Украина","address":{"house_number":"23","road":"Преображенская улица","city":"Одесса","county":"Приморский район","state":"Одесская область","postcode":"65082","country":"Украина","country_code":"ua"}}
UFO just landed and posted this here
Да, должна эту штука помочь.
Можно сделать ещё проще: установить postgreSQL, postgis и Osm2pgsql. Этих программных продуктов должно хватит чтобы импортировать карту OSM в БД, а дальше запросами SQL в PostgreSQL получаете нужные данные. Мне очень понравилась статья Русификация и мультиязычность карт OpenStreetMap, там очень хорошо расписан процесс установки карт, советую прочитать.
И ещё один вариант: загружаете карту OSM с сайта туц в формате *.osm.bz2(это архив с картой в формате XML), потом парсите этот XML файл с помощью вашего любимого языка=). Вот ссылка на архитектуру OSM XML карты
А как работаете с «не правильными» адресами? Например, nominatim отлично обрабатывает «Москва, 2-й рощинский проезд, 8», но не обрабатывает «Москва, рощинский 2-й проезд, 8»… Про МКАД nominatim, похоже, вообще ничего не знает: «Москва, 39-й км МКАД»… По этим причинам у нас не получилось использовать его в продакшене (((
Тут уж ничего не поделать, opensorce продукты — они такие. Зато с этими задачами легко справляется такие гиганты как Yandex map и Google map.
Номинатим такие адреса очень не любит.

Вот: «Москва, рощинский 2-й проезд, 8»
osm.me/#!/ru/map/5/57.78623/52.99805/q/%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,%20%D1%80%D0%BE%D1%89%D0%B8%D0%BD%D1%81%D0%BA%D0%B8%D0%B9%202-%D0%B9%20%D0%BF%D1%80%D0%BE%D0%B5%D0%B7%D0%B4,%208/

«Москва, 39-й км МКАД» тоже находится, но мкад и вбит в осм по сегментам, интерполировать киллометры мой подопечный пока не умеет.
osm.me/#!/ru/id/hghnet-2919500296-m716947792/map/14/55.59932/37.5117/q/%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,%2039-%D0%B9%20%D0%BA%D0%BC%20%D0%9C%D0%9A%D0%90%D0%94/
Ух ты, в OSM уже и номера домов есть :-/ Надо вылезать из разморозки.

PS Посмотрел свой район, номера у 90% домов есть, а при поиске улицы Ленина почему то только её десятую часть находит-подсвечивает.
А imposm3 не подошел бы для импорта базы?

В описании пишут, что импорт 20гб planet PBF выполняется за 6.5 часов, а osm2pgsql грузит аналогичный файл за 2-8 дней.
Спасибо за софтину, не знал о ней.
Для импортирования данных у номинатима штатно работает osm2pgsql, а переписывать загарузчик не хочетя. Да и основные тормоза osm2pgsq появляются когда база настроенна не оптимально, а с правильной настройкой бд — произоводительности импортирования возрастает.
Сколько заняла база Украины в БД?
База данных заняла 5399 MB.
Это с учётом того, что за пару месяцев собрались логи.
Ясно, спасибо. Пока ждал ответа развернул БД Украины+России. Заняла в районе 35 Гигбайт.
Не поделитесь образом виртуалки?)
Нет, делал для теста.
Все просто. Качаем карты отсюда http://download.geofabrik.de (как и указано в посте)

Потом объединяем по-парно (сразу несколько файлов нельзя, только по два за несколько проходов):

#/usr/src/Nominatim-2.4.0/utils/osmosis  --read-pbf file=russia-latest.osm.pbf --read-pbf file=ukraine-latest.osm.pbf --merge --write-pbf omitmetadata=true file=rus-ukr.osm.pbf
Спасибо!
Наверное, вначале попробую через их апи, с кешированием
На openstreetmaps Nominatim с ограничениями, насколько я помню один запрос в секунду. То есть для поиграться подойдет, а если серьезней, лучше развернуть свой.

ps. С таким ограничением не только кеширование нужно, а система управления распределения очереди задач (например celery, если python, ограничение запуска следующей задачи: http://docs.celeryproject.org/en/latest/userguide/tasks.html#Task.rate_limit ). То есть ограничить частоту запросов к серверам openstreetmaps.org.
спасибо, так и думал делать. Хотя, все больше склоняюсь к «своему». Проблема в том, что «заказчик», в рамках задачи которого это нужно, начинает сливаться :)
Sign up to leave a comment.

Articles