Java 使用地理编码获取建筑物的坐标
我想用地理编码得到建筑物的坐标。目前,我使用android的GeoCoder类从所选地址获取坐标,但这些坐标并不对应于建筑物的边缘。OSM包含每个建筑的这些信息,但我不知道如何使用GeoCoder类获取这些信息。有没有可能在android的geocoder类中使用OSM来获取这些信息?这可能有点复杂。首先,OSM并不是每个地址都有一座大楼。有时一座建筑物包含几个地址,或者一个地址可以属于几个建筑物 但作为第一步,您可以使用地理编码来获取特定地址的坐标。然后将这些坐标传递到立交桥API并搜索附近的建筑物 例如: 我们正在寻找德累斯顿弗兰兹韦格4号楼的地址。Nagnitm查询可以如下所示(假设我们需要JSON输出): 它返回一个完全匹配的地址,因为该地址存在于OSM的数据库中。通过查看地址详细信息,您可以看到*房屋号*和道路匹配。我们甚至得到了一个对应的标签,其中包含了建筑物轮廓的坐标(参见) 但正如前面所述,并不是每个地址都属于一座建筑物。例如,当Huttenstraße 14在德累斯顿时,我们也会得到一个精确的结果,但返回的路径属于一个区域。该区域包含一栋建筑物,因此属于该地址。Nagnitm还返回一个边界框,在本例中为51.0508041381836,51.0514030456543,13.7778491973877,13.7796478271484。我们可以用它来检索该区域内的对象。如果您没有OSM数据库的本地副本,则可以使用以下查询:Java 使用地理编码获取建筑物的坐标,java,android,google-maps,geocoding,openstreetmap,Java,Android,Google Maps,Geocoding,Openstreetmap,我想用地理编码得到建筑物的坐标。目前,我使用android的GeoCoder类从所选地址获取坐标,但这些坐标并不对应于建筑物的边缘。OSM包含每个建筑的这些信息,但我不知道如何使用GeoCoder类获取这些信息。有没有可能在android的geocoder类中使用OSM来获取这些信息?这可能有点复杂。首先,OSM并不是每个地址都有一座大楼。有时一座建筑物包含几个地址,或者一个地址可以属于几个建筑物 但作为第一步,您可以使用地理编码来获取特定地址的坐标。然后将这些坐标传递到立交桥API并搜索附近的
<osm-script output="json">
<query type="way">
<has-kv k="building"/>
<bbox-query e="13.7796478271484" n="51.0514030456543" s="51.0508041381836" w="13.7778491973877"/>
</query>
<print mode="body"/>
<recurse type="down"/>
<print mode="skeleton"/>
</osm-script>
此查询将使用给定边界框中的建筑物标记进行全方位查询。您可以使用来可视化结果。如您所见,边界框包含多个建筑,但其中只有一个位于区域内。所以你必须检查每栋建筑的坐标,看哪一栋适合你。请记住,一个地址可能属于多个建筑物,因此可以有多个匹配项
还有第三种情况,地址是单个。例如,的结果返回。此处节点实际上是建筑方式的一个成员,因此很容易确定相应的建筑。但情况并非总是如此,您可能需要运行另一个立交桥API查询来确定附近的建筑,并再次查看哪一个最适合