2015-07-10 3 views
0

Я использую базу данных ClusterPoint для доступа к данным Open Street Map (https://github.com/clusterpoint/osm), но я бы хотел найти POI, содержащуюся в нескольких отдельных многоугольниках.Поиск точек из нескольких полигонов

Есть ли какой-нибудь пример, как определить и использовать несколько полигонов в запросе?

+0

Вы должны предоставить нам более подробную информацию о том, как ваш API обертывает API Overpass или как вы обслуживаете локальную базу данных OSM. – MaM

+0

@MaM, я считаю, что база данных основана на экспортированных данных POI с Open Street Maps, поэтому она не связана с Overpass вообще, просто с масштабируемыми данными. – romaninsh

ответ

1

Чтобы использовать несколько полигонов в одном запросе, вам необходимо определить их под знаками < >. Каждый многоугольник должен иметь индивидуальное имя. Если вы хотите искать в нескольких полигонах, чем использовать оператор OR {{} "в запросе.

Пример с двумя полигонами и один круг может выглядеть следующим образом:

<query> 
    {&gt;&lt;polygon1 &gt;&lt;polygon2 &gt;&lt;circle1} 
</query> 
<shapes> 
    <polygon1>lat1 lon1; lat2 lon2; lat3 lon3; lat4 lon4; lat5 lon5; ... 
     <coord1_tag_name>lat</coord1_tag_name> 
     <coord2_tag_name>lon</coord2_tag_name> 
    </polygon1> 
    <polygon2>lat1 lon1; lat2 lon2; lat3 lon3; lat4 lon4; lat5 lon5; ... 
     <coord1_tag_name>lat</coord1_tag_name> 
     <coord2_tag_name>lon</coord2_tag_name> 
    </polygon2> 
    <circle1> 
     <center>lat lon</center> 
     <radius>10 km</radius> <!-- here you can define distance in "km" or in "mi" --> 
     <coord1_tag_name>lat</coord1_tag_name> 
     <coord2_tag_name>lon</coord2_tag_name> 
    </circle1> 
</shapes> 

Если полигоны перекрываются, то соответствующие точки в этой области не будет «дублировать» в наборе результатов (будет отображаться один раз).