Где получить координатные границы городов?

Всем привет. Границы каждого города мира можно представить в виде полигона. Так делает 2gis, например. Как достать координаты границ, чтобы потом приложение поняло и определило в каком городе оно находится по геопозиции?

p.s. определение по IP не используется
  • Вопрос задан
  • 1370 просмотров
Решения вопроса 2
@Sadless74
Чтобы получит полигоны городов из OpenStreetMap можно воспользоваться overpass-turbo.eu (api сайта заблокирован, используйте VPN)
Запрос для Московской области:
[out:xml];

area
  (area.region)
  ["boundary"="administrative"]
  ["name"="Московская область"]
->.a;

(
  node
  	(area.a)
  	["place"~"city|town"];
  way
  	(area.a)
  	["place"~"city|town"];>;
  relation
  	(area.a)
  	["place"~"city|town"];>;
)->.b;
.b out meta qt;

Результат можно экспортировать в geojson. Эти данные о полигонах загружать в свою базу и там искать.

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

Если требуется искать ближайший центр населённого пункта, то есть ответ на похожий вопрос. Это задача поиска ближайшего соседа. Есть готовые архивы с координатами населенных пунктов.
Ответ написан
Комментировать
za90
@za90
быдлокодер со стажем
Ответ одновременно очень простой и очень сложный: openstreetmap.org
Для городов (в основном) там есть границы. Вытащить их можно, например, загрузив планету в постгрес. Или еще несколькими способами. #switch2osm
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы