2013-05-15 5 views
0

Я пытаюсь получить все пути и узлы с ключом «amenity», который работает нормально с объединением, но мне также нужны узлы, которые составляют способ, и тег recurse не работает должным образом:Как я могу получить все способы OSM и узлы с меткой amenity, а также через узлы с использованием API Overpass?

<osm-script> 
<union> 
<query type="way"> 
    <has-kv k="amenity" regv="."/> 
    <bbox-query s="%s" w="%s" n="%s" e="%s"/> 
</query> 

<query type="node"> 
    <has-kv k="amenity" regv="."/> 
    <bbox-query s="%s" w="%s" n="%s" e="%s"/> 
</query> 
</union> 
<recurse type="way-node" /> 
<print/></osm-script> 

% s являются заполнителями. Благодаря!

ответ

1

С помощью вашего кода, результаты запроса заменены по результатам рекурсии. Следовательно, вы должны иметь (как правило, немаркированные) узлы методов удобства в своем выходе, но не сами пути.

Положив их в союзе друг с другом, однако, означает, что оба пути и их узел в конечном итоге в вашем выводе:

<osm-script> 
    <union> 
    <query type="node"> 
     <has-kv k="amenity"/> 
     <bbox-query {{bbox}}/> 
    </query> 
    <query type="way"> 
     <has-kv k="amenity"/> 
     <bbox-query {{bbox}}/> 
    </query> 
    <recurse type="way-node" /> 
    </union> 
    <print/> 
</osm-script> 

на {{BBOX}} заполнители для нескольких параметров, как в вашем примере. Если вы хотите протестировать измененный запрос самостоятельно, попробуйте this Overpass Turbo link.

(Также обратите внимание, что вы можете опустить параметры regvall-regv.)