Координаты всех улиц России. :)

Не знаете, где задать вопрос? Задавайте здесь.
freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Координаты всех улиц России. :)

Сообщение freeExec » 20 мар 2018, 16:38

Улица и дома находятся внутри населённого пункта (place). А НП находится внутри матрёшки административно-территориального деления(boundary=administrative).

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Координаты всех улиц России. :)

Сообщение Sergey Astakhov » 20 мар 2018, 17:23

nizhnegorskiy писал(а):
20 мар 2018, 16:29
В итоге мне надо получить таблицу из случайных адресов (типа "123456, Московская область, Nский район, д. Нижние бугры, ул. 48летия Октября, д. 2") в виде строки и их координат.
Это называется геокодированием. Для данных osm есть специальный сервер, который примерно таким и занимается, https://wiki.openstreetmap.org/wiki/Nominatim
Но у него конечно есть свои недостатки, далеко не каждый адрес он сможет правильно разобрать, так что на случайных адресах он будет давать сбои.
Ну и если у вас большое кол-во запросов, то лучше развернуть локальную копию.

nizhnegorskiy
Новоприбывший
Сообщения: 10
Зарегистрирован: 16 мар 2018, 15:36
Репутация: 0
Откуда: Москва

Re: Координаты всех улиц России. :)

Сообщение nizhnegorskiy » 20 мар 2018, 17:36

freeExec писал(а):
20 мар 2018, 16:38
Улица и дома находятся внутри населённого пункта (place). А НП находится внутри матрёшки административно-территориального деления(boundary=administrative).
Я пока вижу, что НП обозначены точкой:
<node id="711715624" lat="54.3107593" lon="48.3642771" version="30" changeset="53414679" user="iWowik" uid="481934" timestamp="2017-11-01T06:09:07Z">
<tag k="addr:country" v="RU" />
<tag k="addr:postcode" v="432000" />
<tag k="addr:region" v="Ульяновская область" />
<tag k="admin_level" v="4" />
<tag k="alt_name:tt" v="Ульян" />
<tag k="int_name" v="Ul&#39;yanovsk" />
<tag k="name" v="Ульяновск" />
<tag k="official_status" v="ru:город" />
<tag k="old_name" v="Симбирск" />
<tag k="place" v="city" />
<tag k="population" v="619492" />
<tag k="population:date" v="2015-01-01" />
<tag k="wikidata" v="Q5627" />
<tag k="wikipedia" v="ru:Ульяновск" />
</node>
Как понять, какие в нем находятся улицы?
Sergey Astakhov писал(а):
20 мар 2018, 17:23
Это называется геокодированием. Для данных osm есть специальный сервер, который примерно таким и занимается, https://wiki.openstreetmap.org/wiki/Nominatim
Но у него конечно есть свои недостатки, далеко не каждый адрес он сможет правильно разобрать, так что на случайных адресах он будет давать сбои.
Вот мне как раз наоборот, необходимо нагенерить реальных адресов. Это, конечно, можно сделать, с помощью ФИАСа и Яндекс.геокодера или вот Nominatim, но это план Б пока. А сейчас я пытаюсь получить сразу и адрес и координаты из одного источника.

nizhnegorskiy
Новоприбывший
Сообщения: 10
Зарегистрирован: 16 мар 2018, 15:36
Репутация: 0
Откуда: Москва

Re: Координаты всех улиц России. :)

Сообщение nizhnegorskiy » 20 мар 2018, 17:56

А, я понял, что Вы имеете ввиду! Поставить локально Nominatim и делать обратный геокодинг по координатам домов? Крутяк!

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Координаты всех улиц России. :)

Сообщение freeExec » 20 мар 2018, 19:12

nizhnegorskiy писал(а):
20 мар 2018, 17:36
Я пока вижу, что НП обозначены точкой:
Ищите дальше, есть и полигональный объект.

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Координаты всех улиц России. :)

Сообщение Sergey Astakhov » 21 мар 2018, 14:23

nizhnegorskiy писал(а):
20 мар 2018, 17:36
Вот мне как раз наоборот, необходимо нагенерить реальных адресов.
Ну это ещё проще, называется обратный геокодинг, Nominatim это тоже умеет.

Можно и не пользоваться готовыми сервисами/приложениями, но тогда вам придётся разобраться со структурой данных в OSM. OSM - это пространственная база данных, поэтому геометрические отношения там как правило не прописываются явно, а вычисляются из геометрии, это уменьшает простор для ошибок и избыточность данных. Т.е. вам нужно будет сформировать набор пространственных индексов объектов-полигонов, которые используются в адресации (области, районы, населённые пункты и т.п.) и затем искать там объекты по координатам для необходимой привязки.

https://wiki.openstreetmap.org/wiki/RU: ... 0%B8%D1%86
https://forum.openstreetmap.org/viewtopic.php?id=58978

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: gs89 и 8 гостей