inside22
@inside22

Как создать сервис Geocoding своими руками?

Здравствуйте Друзья!

Есть у меня такая задача, нужно координаты гео-кодировать и получать на выходе

  • Страна, Город, Район,
  • Страна, Район, Поселение
  • Страна, Город, Район, Поселение
  • Страна, Район, Город, Поселение


В Google Maps данные не всегда корректные, вбитые на разных языках, дерево практически всегда не корректное, а самое главное, за 1000 запросов они берут $1, а мне минимум 10 тысяч запросов в сутки делать надо.

OSM практически все знает, но ответы, имею ввиду именования объектов тоже не всегда корректные.

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

Область которую мне нужно охватить, в принципе не большая.

  1. 66 районов республиканского подчинения
  2. 12 городов республиканского подчинения
  3. 7 районов и 1 город в подчинении автономной республики


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

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

Вопрос тут в том в чем, на чем это все реализовать проще?
Где хранить данные? В MySQL и Elastic?

Задача, на сколько я понимаю сводится к следующему, найти все полигоны в которые входит гео-точка?

Буду очень признателен, если поделитесь своим опытом или подскажите решение.
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 2
Moskus
@Moskus
- Выгружайте полигоны из OSM (через Overpass API, например),
- Редактируйте их, чтобы они отражали нужную вам иерархию и названия (используя QGIS, например), а также, чтобы упростить геометрию (получить из мультиполигонов OSM обычные замкнутые кривые),
- Грузите получившееся в базу с поддержкой пространственных функций (SQLite/SpatiaLite, PostgreSQL/PostGIS) в виде геометрии,
- Получайте искомое, используя пространственные запросы по условию нахождения геометрии внутри геометрии и с сортировкой по результату вычисления расстояния.
Ответ написан
@pfg21
ex-турист
Nominatim - инструмент осм для прямого и обратного геокодинга. тебе нужен обратный.
статей как развернуть номинатим на своем сервере куча.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 80 000 до 150 000 руб.
от 85 000 до 115 000 руб.
Рексофт Санкт-Петербург
До 200 000 руб.
19 сент. 2019, в 23:58
3500 руб./за проект
19 сент. 2019, в 21:14
20000 руб./за проект
19 сент. 2019, в 19:54
6400 руб./за проект