Страница 1 из 1
Геометрия объекта (здания) на карте
Добавлено: 29 дек 2018, 19:55
p10ne
Доброго времени суток!
Стоит такая задача:
Вывести карту, нарисовать на ней некоторый круг; определить, какие здания находятся внутри этого круга; если здание находится на границе, то узнать, какая часть здания внутри, какая - снаружи.
Пробовал сделать это на Яндекс картах, но уперся в то, что у зданий в api нет информации об их геометрии.
Задача в рамках диплома в универе, если кому интересно: для прогнозирования последствий землетрясения. Круг - область с определенной бальностью землетрясения.
Вопрос:
Можно ли решить задачу с помощью других каких-либо систем? Сейчас изучаю OpenStreetMap + OpenLayers 3. Реализуемо ли это с данными средствами и в какую сторону надо копать? Какие гайды есть?
Спасибо за ответы!
Re: Геометрия объекта (здания) на карте
Добавлено: 29 дек 2018, 20:54
trir
https://overpass-turbo.eu/
(around:radius,latitude,longitude)
тут три разные задачи:
1. Где взять данные
2. Как анализировать
3. Как отображать
и эти задачи совершенно не зависимы друг от друга
Re: Геометрия объекта (здания) на карте
Добавлено: 29 дек 2018, 23:10
p10ne
Спасибо, крутая штука.
Получил точки по запросу:
Ответ такой:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API 0.7.55.5 2ca3f387">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2018-12-29T19:59:02Z"/>
<node id="1397317817" lat="56.8499082" lon="53.2100989"/>
<node id="1397317819" lat="56.8499274" lon="53.2102448"/>
<node id="1397317834" lat="56.8500520" lon="53.2100274"/>
<node id="1397317835" lat="56.8500724" lon="53.2101784"/>
<node id="5366248785" lat="56.8500831" lon="53.2101874"/>
<node id="5366248786" lat="56.8498255" lon="53.2100646">
<tag k="barrier" v="gate"/>
</node>
<node id="5648241690" lat="56.8500582" lon="53.2099981"/>
<node id="5648241691" lat="56.8498744" lon="53.2100488"/>
<node id="5648241692" lat="56.8499054" lon="53.2102690"/>
</osm>
Собственно,
trir писал(а): ↑29 дек 2018, 20:54
2. Как анализировать
как получить связанные точки, принадлежащие одному конкретному зданию?
с relationship не получается
Re: Геометрия объекта (здания) на карте
Добавлено: 29 дек 2018, 23:36
trir
Код: Выделить всё
node(around:20,56.85,53.21);<->.a;
(way.a[building=yes];>;);
out;
(area.a[building=yes];>;);
out;
Re: Геометрия объекта (здания) на карте
Добавлено: 05 янв 2019, 22:27
p10ne
trir, еще такой вопрос:
как получить такой же результат, как выше, если входными данными являются координаты точки, лежащей в области исследуемого здания.
Т.е. сделали клик на карте по зданию - получили опять же данные связанных точек этого здания, как выше.
Пытался разобраться с языком overpass-а, но пока тяжеловато дается.
Re: Геометрия объекта (здания) на карте
Добавлено: 05 янв 2019, 23:43
trir
не понял
Re: Геометрия объекта (здания) на карте
Добавлено: 06 янв 2019, 00:11
p10ne
trir, выше вы мне дали запрос для получения точек здания по координатам точки и радиусу (around...).
А сейчас я, кликнув на произвольном месте по зданию на карте, хочу получить тот же результат (связанные точки здания, по которому кликнул).
Типа как в любых коммерческих картах, когда кликаешь по зданию, и вся его геометрия выделяется, появляется какая-то информация о нем.
Re: Геометрия объекта (здания) на карте
Добавлено: 06 янв 2019, 02:48
trir
для этого придётся делать свой GUI
Re: Геометрия объекта (здания) на карте
Добавлено: 06 янв 2019, 13:51
p10ne
trir, т.е. делать свой слой карты с нанесенными полигонами под размеры объектов?
Задача то вроде и под силу overpass-у: взять точку на карте и искать полигон, в который входит эта точка.
В принципе попробую так:
1. взять тот же around с определённым радиусом
2.получим полигоны, которые связаны с этой областью
3. перебираем все полигоны, и если точка входит в полигон n - это и есть искомый полигон (здание)