5 votos

Consulta XML para encontrar todos los edificios dentro de un polígono

Quiero ejecutar la siguiente consulta QL para obtener los IDs de todos los edificios dentro de un polígono:

way(poly:"50.7 7.1 50.7 7.2 50.75 7.15")[building];
>;
out ids;

Como estoy usando el osm-common biblioteca, necesito convertir este script a XML de Overpass. Lo hice utilizando el formulario de conversión aquí .

El resultado:

<osm-script>
    <query into="_" type="way">
        <polygon-query bounds="50.7 7.1 50.7 7.2 50.75 7.15" into="_"/>
        <has-kv k="building" modv="" v=""/>
    </query>
    <recurse from="_" into="_" type="down"/>
    <print from="_" limit="" mode="ids_only" order="id"/>
</osm-script>

Pero cuando lo ejecuto, obtengo los ID de los nodos, no los ID de las vías.

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2013-11-06T07:51:02Z"/>

  <node id="252553109"/>
  <node id="252553111"/>
  <node id="252553112"/>
  <node id="252553114"/>
  <node id="252553115"/>
  <node id="252553117"/>
  <node id="255302992"/>
  <node id="255302993"/>
  <node id="255302995"/>
  <node id="255763355"/>
  <node id="255763356"/>
  <node id="255763357"/>
  <node id="255763358"/>
  <node id="255763430"/>
  <node id="255763431"/>
  <node id="255763432"/>
...
  <node id="2519505892"/>
  <node id="2519505893"/>
  <node id="2519505894"/>
  <node id="2519505895"/>
  <node id="2519505896"/>

</osm>

¿Cómo debo modificar la consulta XML de Overpass para obtener los identificadores de vía de los edificios?

5voto

user15183 Puntos 28

Cuando introduzco manualmente una consulta de caminos el turbo me sugiere una reparación automática para conseguir también nodos para el camino. Esto equivale a

way(poly:"50.7 7.1 50.7 7.2 50.75 7.15")["building"];
/*added by auto repair*/
(._;>;);
/*end of auto repair*/
out body;

véase http://overpass-turbo.eu/s/1q1 .

Cambiar out body a out ids si realmente sólo quieres los ID de las vías, pero sin la información de qué nodo pertenece a qué vía.

2voto

Brad8118 Puntos 1285

Si sólo necesitas los identificadores debes eliminar la línea

<recurse from="_" into="_" type="down"/>

esta línea está convirtiendo sus formas en nodos.

Nota: sólo obtendrá la identificación del camino, pero no la geometría porque las coordenadas se almacenan en los nodos. Si necesita ambas cosas tendrá que unir el camino y los nodos

<osm-script>
    <query into="_" type="way">
        <polygon-query bounds="50.7 7.1 50.7 7.2 50.75 7.15" into="_"/>
        <has-kv k="building" modv="" v=""/>
    </query>
    <!-- added by auto repair -->
    <union into="_">
      <item set="_"/>
      <recurse from="_" type="down"/>
    </union>
    <!-- end of auto repair -->
    <print from="_" limit="" mode="body" order="id"/>
</osm-script>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X