librown
@librown
На-все-руки-мастер и немного кодер

Nominatim отдает не все отрезки дорог. Как решить проблему?

Привет!
Чем больше разбираюсь с OSM, тем больше запутываюсь.

Задача: зная координаты точки получить ближайшую улицу и отобразить её "линией" на карте.

1. Чтобы нарисовать линию нужно иметь массив точек (geojson)
2. C помощью Nominatim Api можно получить этот самый geojson
Пример reverse-запроса: nominatim.openstreetmap.org/reverse?format=json&la...

Но на практике возникают проблемы:
Улицы/дороги в OSM порезаны на куски. Поэтому Nominatim отдаёт только небольшой отрезок улицы.

Я пробую сразу делать повторный запрос к Nominatim, уже по названию улицы "Симферопольская улица, Евпатория, городской округ Евпатория, Республика Крым". В ответ получаю массив "кусков" этой улицы. Но заметил, что возвращаются не все отрезки улицы. Возникают "дыры":

54a0bbb105.jpg

Уже третий день ковыряюсь, ничего не могу понять.
Подскажите, пожалуйста, что я делаю не так? Может есть другие пути?
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Никак, это в общем-то не его задача хранить все отрезки улиц. Это как раз наверное оптимизация, где есть только минимум отрезков вблизи домов по этой улицы. Можно конечно через overpass получить список все одноимённых отрезков в радиусе, но если я не ошибаюсь, Вы тут до этого спрашивали, то у вас конечный список координат. Имхо стоит скачать себе базу, сделать препроцессинг данных и хранить уже готовые улицы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
librown
@librown Автор вопроса
На-все-руки-мастер и немного кодер
Сам себе отвечу:
1 шаг. С помощью Nominatim reverse Api - по координате получаем название ближайшей улицы, и её координаты.
2 шаг. С помощью Overpass Api ищем в радиусе, например, 5 км от этих координат все улицы (way) с таким же названием: [out:json];(way['name'='название_улицы'](around: 5000, lat, lng););out geom;
3 шаг. Profit :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы