0

地図上の建物をクリックして、クリックした座標で建物を構成するポリゴンを取得できるようにしたいと考えています。

overpass api を調べて、次のことを試しました。

<query type="way">
  <around lat="51.0566036" lon="13.7181033" radius="30"/>
  <has-kv k="building"/>
</query>
<union>
  <item/>
  <recurse type="down"/>
</union>
<print/>

大きなものを選択すると、radius建物が多すぎます。小さすぎるradiusと、建物ができません。使用bbox-queryしても役に立ちませんでした。

も試しcoord-queryましたが、意味のあるクエリを構築できませんでした。必要なクエリ構文が違うようです。

手元にもっと良いアプローチはありますか?高架がなくても、調べるだけです。

4

3 に答える 3

3

gis_geometrics [1] と overpy を使用した Python ソリューションがあります。この Python プログラムは、LAT,LON にある建物を見つけます。gis_geometrics.py と同じディレクトリに配置します。

import overpy
from gis_geometrics import OSM_Polygon, Overpass

api = overpy.Overpass()
building = OSM_Polygon.getPolygonByCoords(api, LAT, LON)
if building is None: print("No building found.")
else: print(building.wayId)

way id を使用すると、立体交差リクエストを作成してポリゴン座標を見つけることができます。

[1] https://github.com/timojuez/home/blob/master/mylib/gis_geometrics.py

于 2017-07-17T10:21:51.890 に答える
3

同様の要件については、このGitHub チケットで説明されています。現時点では、Overpass API は、機能するために必要な建物のエリア情報を計算しませんis_in。ただし、独自の Overpass API インスタンスをセットアップし、エリア作成ルールを調整して建物も含めることができます。小さな領域の場合、これはローカル マシンでも実行できるはずです。

私が言及した GitHub チケットのすべてのリンクも確認してください。問題に関連する可能性のある追加のポインターが多数含まれています。

警告: 世界規模で建物の面積を計算することのパフォーマンスとスペースへの影響は不明であり、それぞれまだ完全にはテストされていません。

于 2014-07-20T16:28:34.517 に答える
2

あなたが実現しようとしているのは、「逆ジオコーディング」です。上記の問題を回避するために(AFAIK)、通常の実装では任意の半径を使用し、結果の形状に目的の位置が含まれているかどうかをもう一度テストします。

于 2014-07-20T14:57:40.773 に答える