Не так давно мне нужно было вытащить адреса и координаты домов из osm-файла. Я перенес данные файла в MySQL, потом написал скрипт, который вытаскивает нужные данные из базы.
Таким образом мне удалось получить данные по Минску. Тестил на 10 - 15 адресах, привязка сделана правильно (адрес - координаты).
При попытке сделать тоже самое для других областных центров (Гомель, Витебск, …) - данных почти нет. В конечном счете я получаю десяток адресов.
Там (в osm-файле) нет данных? Или они храняться как-то по-другому (в разных тегах и т.п.), чем данные по Минску?
Так как существующими средствами перенести данные у меня не получилось (об этом я тоже спрашивал http://forum.openstreetmap.org/viewtopic.php?id=18704), то решил написать небольшую прогу на Java, которая просто пробегается по всем тегам, и заносит инфу в базу сохраняя привязку элементов.
Предварительно вырезав нужную мне область с помощью ‘osmosis’.
Проанализировав osm-файл и определив в каких тегах хранится нужная мне информация, составил sql-запросы для ее получения.
Точнее написал PHP-скрипт, который вытаскивает инфу из базы и сохраняет в нужном мне формате.
Все это делалось пару месяцев назад, поэтому подробности (из каких тегов бралось) уже не помню.
Если кому интересно может покопаться в исходниках.
Ага, ну если я понял, то ты (можно на ты ладно) выдираешь адреса из отношений. Далеко не все адреса хранятся таким образом. Собственно основной путь - это addr:street + addr:housenumber на домик (тоесть на замкнутый вей) и остальная информация на полигоне города. Соответсвенно адреса выдергиваются джоином домиков и охватывающего полигона.
Если это не в целях обучения/тренировки проще вытащить с гислаба из постгрехи (1 несложный запрос).
Все это делается в целях получить нужные данные с минимальными трудозатратами и забыть )
С постгрехи у меня возникли проблемы когда я пытался перенести туда данные с помощью osmsis. В общем, в этом случае нужно упорно разбираться с постгрехи, а это мне совсем не хочется )
Если не сложно, можно небольшой пример того, как данные точно будут хранится? А то никакой связи между нужными мне элементами (кроме той которую я описал в предыдущем посте) я найти не могу.
Если нужно один раз с минимумом гемороя - разжалоби Zkira у него доброе сердце и можно попытаться отъехать от выплаты 100 евров.
Ну или ставь клиента от постгрехи и:
psql --host gis-lab.info --user guest --dbname osm_shp -c "select ST_X(b.geom), ST_Y(b.geom), b.\"A_STRT\", b.\"A_HSNMBR\", setle.\"NAME\" from layer.\"BY building-point\" b join layer.\"BY settlement-polygon\" setle on ST_Contains(setle.geom, b.geom) where b.\"A_HSNMBR\" is not null;"
Пароль guest, почитав psql --help можно добиться выгрузки в csv