Страница 2 из 2

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

Добавлено: 20 мар 2018, 16:38
freeExec
Улица и дома находятся внутри населённого пункта (place). А НП находится внутри матрёшки административно-территориального деления(boundary=administrative).

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

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

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

Добавлено: 20 мар 2018, 17:36
nizhnegorskiy
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, но это план Б пока. А сейчас я пытаюсь получить сразу и адрес и координаты из одного источника.

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

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

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

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

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

Добавлено: 21 мар 2018, 14:23
Sergey Astakhov
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