Получение границ города из openstreetmap

Я разрабатываю веб-сайт, и мне нужно получить все границы области в зависимости от ввода пользователя. Например, пользователь хочет узнать границы города с именем x. Как мне получить его из openstreetmap? Я слышал о xapi и осмосе, но нигде не мог найти примеров. Спасибо!


person marey    schedule 27.03.2013    source источник
comment
Вы хоть пробовали поиск в гугле? global.mapit.mysociety.org   -  person Gilbert Le Blanc    schedule 27.03.2013
comment
help. openstreetmap.org/questions/8117/   -  person Gilbert Le Blanc    schedule 27.03.2013
comment
Я просто хочу получить всю длину города в одном запросе. Я думаю, что у nominatim есть такая возможность, но я не знаю, как ее использовать.   -  person marey    schedule 27.03.2013


Ответы (1)


Я попытался сделать это с помощью JavaScript здесь: https://github.com/pgkelley4/city-boundaries-google-maps

По сути, все сводится к поиску отношения, в котором OpenStreetMap хранит границы города.

Я использовал что-то вроде следующего запроса, чтобы получить площадь:

area[name="Seattle"]["is_in:state_code"="WA"];foreach(out;);

Или, если это ничего не находит, просматривая узел, чтобы найти любые связанные области:

node[name="New York"][is_in~"NY"];foreach(out;is_in;out;);

Чтобы получить идентификатор отношения, вычтите 3 600 000 000 из идентификатора области, возвращаемого приведенными выше запросами. Затем получите отношение из его идентификатора:

(relation(" + relationID + ");>;);out;

Вы можете протестировать запросы здесь, мой, возможно, можно было бы улучшить: http://overpass-api.de/query_form.html

Вот как получить границы города, обработать их - другое дело, так как в отношении ничего не ладится. Для этого см. мой проект GitHub и: http://wiki.openstreetmap.org/wiki/Relation:multipolygon/Algorithm

Также я хотел бы отметить, что данные OpenStreetMap для границ города неоднородны. Насколько я могу судить, его нет в больших городах, таких как Даллас и Лос-Анджелес.

person pgkelley    schedule 29.08.2013
comment
Похоже, они добавили Лос-Анджелес с 2013 года. Далласа до сих пор нет, но есть Форт-Уэрт и остальные близлежащие города. См.: openstreetmap.org/relation/207359. - person John Beck; 12.03.2015