2009-09-05 110 views

回答

2

是的。 Overpass API有一个“Around”功能,它完成这个功能(搜索给定点半径内的项目)。您可以结合起来,与其他要求(例如,以获得特定项目类型的列表):

http://wiki.openstreetmap.org/wiki/Overpass_API#Around

例如使用立交桥涡轮API(名单纬度和经度“曼萨纳雷斯,西班牙”附近的所有城镇有150公里,try it live)半径:

<osm-script output="json" timeout="25"> 
    <id-query {{nominatimArea:Spain}} into="area"/> 
    <query type="node"> 
    <has-kv k="place" modv="" v="town"/> 
    <around lat="38.996507" lon="-3.371946" radius="150000"/> 
</query> 

    <print e="" from="_" geometry="skeleton" limit="" mode="body" n="" order="id" s="" w=""/> 
</osm-script> 
6

据我所知,API不直接支持这个。最简单的方法是您的圈子适合的select a (quasi-)rectangular bounding box,并使用它来检索您的POI。然后,您可以对每个感兴趣的点进行距离计算,并丢弃超过您的半径的那些点。这将删除靠近箱子角落的小部分POI,因此不在您的圈子内。您希望按照此顺序进行操作,以便您只需对相对较少的目标位置进行距离计算。

不要忘记,边界框是由经/纬角定义的,所以它不是真正的矩形。经线在两极汇合,所以箱子的顶部与底部的宽度不一样。这对你有多大影响取决于你接近极点的程度(长度=(40000km/360)* cos(lat))。

如果你不需要最高精度,那么你可以使用毕达哥拉斯定理计算你的距离,记住经度的余弦变化和因子2的单位差(360度经度,但只有180纬度)。如果您确实需要准确性,那么您将进入spherical trigonometry的领域,并且还需要考虑ellipsoidal earth。这里有一个online calculator,包含方程和开源代码,在这方面很有帮助。

1

下面是文档: http://developers.cloudmade.com/wiki/geocoding-http-api/Documentation

下面是例如你需要什么 - HTMLJSON

+0

是CloudMade免费或需要生产使用商业合同? – 2009-10-24 08:36:48

+0

来自FAQ: 问:是否有人可以从OpenStreetMap出售和赚钱? 答:OpenStreetMap中的所有数据都被授权由各贡献者根据知识共享署名 - 相同方式共享2.0许可条款使用。许可条款允许任何人以任何方式重新使用数据,只要他们给予适当的归属。这包括重新销售数据的权利,所以是的,任何人都可以从OpenStreetMap赚钱。 – casper 2009-11-05 22:59:18