在坐标系下获取建筑物数据

问题描述:

我希望能够点击地图上的建筑物,并在点击坐标处获取包含建筑物的多边形。在坐标系下获取建筑物数据

我看着立交桥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),通常的实现方法使用任意半径,如果包含所需位置,则再次测试结果形状。

+0

Thanks!我会尝试以下方法:使用小半径(50米)进行测试,如果使用大尺寸(500米)进行测试。经过几次查询后,我会重新评估一下,看看我是否可以通过使用不同的半径来优化API数量与传输数据之间的比例。 –

在这个GitHub ticket中讨论了类似的要求。目前,立交桥API不计算建筑物的面积信息,is_in需要使用。但是,您可以设置自己的立交桥API实例,并调整区域创建规则以包含建筑物。对于一个小区域来说,这在本地机器上应该是可行的。

另请检查我提到的GitHub票券中的所有链接。它包含一些可能与您的问题相关的额外指针。

警告:在世界范围内计算建筑物区域的性能和空间影响尚不清楚,但尚未完全测试。

+0

感谢您的阐述!一开始我不想建立自己的实例。我已经描述了我在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