Для одного проекта стала острая необходимость развернуть локально систему для определения городов и их районов по координатам. Даже для нашей страны, особенно для Санкт Петербурга и Москвы, ни один, в том числе платный, геокодер не подошел.
Подскажите, хотя бы в общих чертах, как собрать такой локальный сервер с openstreetmap (пока необходимо только РФ, слои с городами и районами, определять улицы не надо). И как сделать скрипт, чтобы по отправляемым этой системе координатам получать ответ в виде город / район.
Сейчас мы работаем с провайдером данных Locationiq, который я так понял использует данные osm для обработки запросов.
В частности в Москве и Санкт Петербурге, он выдает какую то явную дичь, вместо районов - микрорайоны.
Забугорные разработчики попросили внести изменения в OSM, чтобы они корректно могли возвращать районы.
В интернетах пробегала инфа, что районы в России имеют admin_level=5 но как правильно делать запрос чтобы выделять именно эти данные ?
А вот этого пожалуйста не надо. В разных странах есть свои локальные особенности административного деления, под одну гребёнку их не загнать, как бы это не было противно уму программиста.
Про локальные особенности я читал, понимаю. Пока что берем Россию.
Но городить костыли поверх геокодера - временное решение и раздражает
Чтобы было еще понятнее. К примеру есть координаты 59.935539 30.35524 - Nominatim ни на 1 зуме не выдает - Центральный район, хотя обьект располагается именно там
Это разные объекты, называемые таким образом.
Есть муниципальные образования муниципальные районы, есть внутригородские районы различного толка, административные, муниципальные, а также просто части населенных пунктов, типа микрорайонов. Все это меняется от региона к региону и от города к городу.