Автоматизация создания и поддержка автоматически созданных POI

Хм… оперативно это они… в начале января было 370. И не у всех станций были полный координаты.

находится тут: 51.2976445, 31.2590234
Письма они не читают. :slight_smile:

Потрібно переглянути варіанти використовування сервісу. Мені здається, cartodb не підходить для нашої задачі.

Варіанти використовування:

  1. Як споживачу системи, мені потрібно вигрузити POI конкретних організацій (Wog, OKKO, ПриватБанк, Аваль ітд) у форматі, який підтримується моїм GPS навігатором.
  2. Як споживачу системи, мені потрібно вигрузити POI, які відносяться до конкретних категорій (СТО, аптеки, ресторани) у форматі, який підтримується моїм GPS навігатором
  3. Як постачальник даних, я маю CSV файл(и) із координатами та описаннями POI. Має бути можливість автоматично і вручну загружати ці дані у систему.

Перші два пункти не мають рішень у cartodb. Я не знайшов способу переглянути усі можливі POI.

http://gps-data-team.com/ дозволяє все це зробити, але вона якась громіздка. Public (не custom) POI має ще хтось схвалювати.

Для выгрузки POI из OSM (пункты 1 и 2) есть такой вот сервис: http://poi.openstreetmap.nl/
Не нашёл, правда, возможности ограничить bbox.

Возник вопрос: нужно ли проставлять адреса у POI?
На сайтах многих предприятий указан адрес. В то время как на карте адрес есть только у зданий. POI, которые нанесены на здания, адреса не имеют.

Нужно ли как-то связывать POI с определённым зданием? Иначе как можно составить список POI с адресами на основе данных OSM?

Нет. Если точка POI находится внутри контура здания или на линии контура, то она унаследует адрес от здания.
А если предприятие занимает всё здание или является его хозяином, то его название, amenity и прочие данные прописываем не на точку, а на контур здания.

Что это значит? Nominatim поддерживает это? Только что проверил: выводится только район. Улица и дом не показываются.

Так как составить список POI с адресами?

Підтримує, але йому потрібен деякий час (кілька днів) на оновлення даних.

це означає, що вкладені об’єкти наслідують властивості об’єктів до яких вони входять (це ж Гео-БД).

Наприклад: місто Київ входить до полігону Україна і нам не потрібно додатково зазначати, що Київ знаходиться в Україні.

Есть ли пример POI с “унаследованным” номером дома? Что-то я сомневаюсь, что Nominatim такое может.

Ну х.з. что там с Номинатим, но конвертер osm2mp такие вещи распознаёт аж бегом. Сейчас специально проверил: открыл в Навител сконверченную карту Харькова, нашёл банкомат “регион-банк” в магазине “Альфа-маркет”, ткнул в “инфо”. Адрес прописан.
И в поиске POI по названию банка выдаётся этот банкомат с адресом того магазина, в котором он стоит.

Так есть у кого-то скрипт или SQL запрос, где это реализовано?

Я так понимаю, алгоритм такой: выбрать полигоны с тэгом building, пересекающиеся с POI, выбрать тэг addr:housenumber, addr:street, выбрать relation типа street и выбрать тэг name.

Посмотри скрипт osm2mp. Там это реализовано. Подсказать не могу. В перле не соображаю :frowning:

После 3х часов работы родил такой скрипт: https://github.com/Vanuan/csv2osm

Загружает точки из cvs-файла в osm и обратно. Тестировал на точках Укрсиббанка: http://my.ukrsibbank.com/ua/branches_atms/map/?region_id_13=9&city_id_13=17&station_id_13=0&address_13=&branch_title_13=&working_time_13=0&type_branch_13=1&type_branch_id_13%5B%5D=5&type_branch_id_13%5B%5D=3&type_branch_id_13%5B%5D=9&type_branch_id_13%5B%5D=4&branch_service_13%5B%5D=Depos&type_atm_13=1&type_atm_id_13%5B%5D=7&type_atm_id_13%5B%5D=8&type_atm_id_13%5B%5D=11&kiosk_l_13%5B%5D=1.

Результат: https://docs.google.com/spreadsheet/ccc?key=0AuQS0QqFi6nrdHJVd3BOeXFfSHE2VVloY1NyS3NXUlE&usp=sharing

Очень удобно. Сразу видно, какая POI не имеет адреса или находится не на здании. Можно быстро сверить адреса с размещёнными на оф. сайте.

Це добре. Але зверніть увагу, що релейшен вулиці може бути не лише типу asociatedStreet, а ще й просто street.
Може, цей рядок треба підправити?

if relation['type'] == 'associatedStreet':

Может быть. Не встречал такого типа у зданий. Мне кажется цель associatedStreet - замена addr:street, в то время как цель street - указать принадлежность чего-либо к улице.
Поправить не проблема:

if relation['type'] == 'associatedStreet' or relation['type'] == 'street':

Чому ж cvs2osm а не csv2osm?:slight_smile:
Пропоную також зробити порівняння текстових значень case insensitive, адже зустрічаються не тільки “Укрсиббанк”, а також “УкрСиббанк”. Можна спробувати пошукати і “УкрСиб”, “Укрсиб”, можливо й такі є.
addr:housenumber, addr:street також інколи пишуть на мультиполігоні, було б непогано і такі випадки розпізнавати.

Результат: https://docs.google.com/spreadsheet/ccc … sp=sharing

Це тільки по Одесі? А всю Україну скрипт зможе опрацювати?

osm2csv? Изначально идея была именно в загрузке данных из файла в OSM (импорт). Экспорт понадобился, чтобы сравнить адреса POI в OSM с “официальными”.

Думаю, не сможет. Он довольно неэффективен в плане производительности и потребления памяти (Одесса занимает десятки мегабайт, так что весь файл вполне влазит в память). Одессу обрабатывает за десятки секунд.

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

Довольно просто сделать скрипт универсальным, для любого типа POI.

Есть идея поправить скрипт csv2osm, чтобы можно было загнать POI обратно.

у вас в назві cvs, а файли csv

А, да косяк, не заметил, спасибо.

https://github.com/Vanuan/csv2osm

Я без проблем обрабатываю всю Украину, как на Perl, так и на Python. Да, оно тормозит, на лептопе занимает минут 20. Исходники можно посмотреть у меня в репозитории.

Хм… при чем тут тема хранения POI к адресации?
Модератор, перенесите все посты начиная с #48 в новую тему.