Геокодер OSM

Хочу на сайте сделать форму ввода адреса.
Показывается список стран. Выбрали страну, внизу добавился список областей/штатов. Выбрали, показался список городов и т.д. вплоть до дома.
Для этого нужно этот список стран/областей/горродов/улиц/домов где-то бррать. Есть ли возможность через OSM получить список, к примеру, городов указав какую-то страну?

Может есть возможность делать поиск по типу узла + ограничивающая область?

Нашел http://nominatim.openstreetmap.org, но там, как я понял, просто поиск, без указания типов нужных узлов.

Или без локальной БД OSM никак такое сделать не получится?

В данных ОСМ это есть. Готового халявного сервиса нет, или я просто про него ещё не знаю (за исключением костыльного подхода с Overpass). Так что вы правильно двигаетесь в сторону создать его для себя. А если вы его ещё и сделаете публичным, то следующему вопрошающему будет что ответить.

Ну без всяких там баз, просто программкой на C++ обрабатываю исходные данные (OSMовские XML), периодически обновляемые, и похожую структуру получаю.
http://wowik.byethost7.com/places/

На web сервере всего 30 секунд есть чтобы скрипт отработал, так что он просто не успеет загрузить xml и обработать его (да и по памяти ограничение)

Вот наверное я его в свое время и использовал. Помню что вроде выбирал данные в XML, но было это давно. Как вариант, попробую на его основе что-то придумать.

Это нужно сделать один раз и сохранить готовое дерево.

Готовое дерево будет очень большого размера. все страны. все города. все улицы. все дома

“Большому кораблю - большую торпеду.” Хочешь все страны со всеми домами - готовь большое дерево.

Но можно схалявить - вычислять нижние уровни только по необходимости, когда до них дойдёт дело. Большинство посетителей будут в крупных городах - им будет быстро. А всякие ебени - ну подумает в первый раз чуток подольше, не страшно.

так как мне нужно просто указать точку на карте, то лучше вообще схалявлю: прикручу карту на которой нужно будет передвинуть маркер в нужное место + переключатель “Точное место/Где-то в этом регионе”. Т.е. если хотят указать город в целом, то значение “Где-то в этом регионе”, что будет означать что маркер не указывает на точное место, а просто указывает на примерный регион расположения.

обратный геокодинг - преобразования координат в адрес/место можно сделать запросом к оверпасс-серверу.