2

この XML スクリプトで Overpass-Turbo を使用して、特定のエリアの建物をダウンロードします。

<osm-script>
  <union>
    <query type="way">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>
    <query type="relation">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>    
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

内部に穴が開いているものを除いて、建物はよくダウンロードされています。次の例のように、これらの建物はマルチポリゴンの関係 (ただし、タグ付けされた building=yes はありません) であり、タグ付けされた外側の building=yes とタグ付けされていない内側で構成されます。

ここに画像の説明を入力

Overpass スクリプトを使用すると、アウターのみが取得されます。

それで、これらの建物は正しいですか?リレーションも建物としてタグ付けされるべきではありませんか?

そうでなければ、外部の建物の子からリレーションを選択する方法を知っている人はいますか?

4

2 に答える 2

2

クエリは正しく、「穴」、つまりロールinnerとの関係の方法も返します。

このを参照してください。結果には、リレーション 7621、外側のウェイ 23316006、および内側のウェイ 2331600723316008の両方が含まれます。

また、リレーション自体と内部のウェイの両方に建物タグがない (すべきでない) ことも正しいです。詳細については、OSM wiki のマルチポリゴン リレーションを参照してください。

結果に問題があるアプリケーションを教えてくれませんでした。このアプリケーションでは、マルチポリゴン リレーションがまったくサポートされていないか、サポートが不完全である可能性があります。

編集:次のクエリを試してください:

<osm-script>
  <union>
    <query type="way">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>
    <query type="relation">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>    
  </union>
  <print mode="body"/>
  <recurse type="up"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

クエリとの唯一の違いは、追加の<recurse type="up"/>呼び出しです。

別の編集:私が正しく理解していれば、最初の再帰ステップは一時データを変更しているため、2番目の再帰ステップを「中断」しています。代わりに次のクエリを試してください。

<osm-script>
  <query type="way">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="up"/>
  </union>
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>
</osm-script>
于 2016-02-24T12:06:55.517 に答える
1

建物のウェイ、建物のウェイと他の内側のウェイを含むマルチポリゴン、および外側と内側のウェイを含む「ビルディング」とタグ付けされたマルチポリゴンを取得したい場合の最終的な解決策は次のとおりです。

<osm-script>
  <query type="way">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="up"/>
  </union>
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>

  <query type="relation">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>
</osm-script>
于 2016-04-01T07:50:35.150 に答える