Локальная копия OSM

Здравствуйте уважаемые участники форума

Для одного проекта стала острая необходимость развернуть локально систему для определения городов и их районов по координатам. Даже для нашей страны, особенно для Санкт Петербурга и Москвы, ни один, в том числе платный, геокодер не подошел.

Подскажите, хотя бы в общих чертах, как собрать такой локальный сервер с openstreetmap (пока необходимо только РФ, слои с городами и районами, определять улицы не надо). И как сделать скрипт, чтобы по отправляемым этой системе координатам получать ответ в виде город / район.

Заранее благодарны

Всё программное обеспечение на Гитхабе, устанавливать по прилагаемой документации.

https://wiki.openstreetmap.org/wiki/Nominatim

https://github.com/openstreetmap/openstreetmap-website

Сейчас мы работаем с провайдером данных Locationiq, который я так понял использует данные osm для обработки запросов.

В частности в Москве и Санкт Петербурге, он выдает какую то явную дичь, вместо районов - микрорайоны.
Забугорные разработчики попросили внести изменения в OSM, чтобы они корректно могли возвращать районы.

В интернетах пробегала инфа, что районы в России имеют admin_level=5 но как правильно делать запрос чтобы выделять именно эти данные ?

Что вы под этим подразумеваете. Потому что admin_level=5 это административные округа города федерального значения (для Москвы).

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

https://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level.3D.2A_Country_specific_values

У нас, в частности, Москва и СПб идут особняком, т.к. это города федерального значения. Тут более подробно:

https://wiki.openstreetmap.org/wiki/RU:%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86

Про локальные особенности я читал, понимаю. Пока что берем Россию.
Но городить костыли поверх геокодера - временное решение и раздражает

Чтобы было еще понятнее. К примеру есть координаты 59.935539 30.35524 - Nominatim ни на 1 зуме не выдает - Центральный район, хотя обьект располагается именно там

щас, побежали

пусть изменения в код свой вносят

Вот ваш район, но у него ранг 100, т.е. никакущий, потому что считают видимо admin_level=5 как не используемый.

Если требуется только обратный геокодер (по координатам) то самый простой на мой взгляд путь импортировать границы в PostGIS и использовать ST_WITHIN.

Благодарю за подсказку с PostGIS. Куда копать теперь стало чуть понятнее

Это разные объекты, называемые таким образом.
Есть муниципальные образования муниципальные районы, есть внутригородские районы различного толка, административные, муниципальные, а также просто части населенных пунктов, типа микрорайонов. Все это меняется от региона к региону и от города к городу.