在坐标系下获取建筑物数据
我希望能够点击地图上的建筑物,并在点击坐标处获取包含建筑物的多边形。在坐标系下获取建筑物数据
我看着立交桥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
,但我无法构建一个有意义的查询。必要的查询语法似乎不同。
手头有更好的方法吗?即使没有立交桥,我也只是想看看它。
你试图实现的是“反向地理编码”。为了避免上述问题(AFAIK),通常的实现方法使用任意半径,如果包含所需位置,则再次测试结果形状。
在这个GitHub ticket中讨论了类似的要求。目前,立交桥API不计算建筑物的面积信息,is_in
需要使用。但是,您可以设置自己的立交桥API实例,并调整区域创建规则以包含建筑物。对于一个小区域来说,这在本地机器上应该是可行的。
另请检查我提到的GitHub票券中的所有链接。它包含一些可能与您的问题相关的额外指针。
警告:在世界范围内计算建筑物区域的性能和空间影响尚不清楚,但尚未完全测试。
感谢您的阐述!一开始我不想建立自己的实例。我已经描述了我在MaM的回答评论中首先要做的事情。 –
有一个使用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)
通过id方式,您可以创建一个立交桥请求来查找多边形坐标。
[1] https://github.com/timojuez/home/blob/master/mylib/gis_geometrics.py
Thanks!我会尝试以下方法:使用小半径(50米)进行测试,如果使用大尺寸(500米)进行测试。经过几次查询后,我会重新评估一下,看看我是否可以通过使用不同的半径来优化API数量与传输数据之间的比例。 –