OpenStreetMap是否有任何API允许我从参考位置获得一定距离(例如10英里)内的POI列表?“在距离内搜索”OpenStreetMap的API
4
A
回答
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
相关问题
- 1. 搜索在距离
- 2. GeoDjango距离搜索
- 3. 谷歌API - - 地方搜索RankBy距离
- 4. 搜索引擎的距离
- 5. 地理距离搜索MYSQL
- 6. SQL搜索按距离
- 7. 在SQL中用距离搜索
- 8. Azure的搜索距离过滤
- 9. Google App Engine和Google Maps在Python中搜索近距离搜索
- 10. 如何根据距离排序搜索结果,使用textsearch搜索API位置
- 11. 搜索用户距离内的项目(地理位置)PHP/MySQL
- 12. 刻面在solr-距离如何生成,搜索withing距离的给定范围
- 13. 如何根据距离与Google Maps API进行搜索?
- 14. Mysql查询距离搜索失败
- 15. Mysql POINT专栏为距离搜索
- 16. Symfony2,学说搜索和距离排序
- 17. 检索距离内的所有地面
- 18. 弹性搜索中的地理距离查询中的返回距离5.x
- 19. 如何使用OpenStreetMap获取两点之间的距离?
- 20. MySQL的搜索一个项目,并在距离所有对象
- 21. 驾驶距离的REST API?
- 22. OpenStreetMap使用mySQL进行接近搜索
- 23. 间距在搜索框中
- 24. openstreetmap的高程API
- 25. 在Google地图上搜索具体位置可配置距离
- 26. 在距离矩阵(距离和时间)方面,事实API与Google Places API
- 27. 特定距离内的点
- 28. 谷歌地图距离API
- 29. API距离多边形
- 30. 谷歌距离矩阵API
是CloudMade免费或需要生产使用商业合同? – 2009-10-24 08:36:48
来自FAQ: 问:是否有人可以从OpenStreetMap出售和赚钱? 答:OpenStreetMap中的所有数据都被授权由各贡献者根据知识共享署名 - 相同方式共享2.0许可条款使用。许可条款允许任何人以任何方式重新使用数据,只要他们给予适当的归属。这包括重新销售数据的权利,所以是的,任何人都可以从OpenStreetMap赚钱。 – casper 2009-11-05 22:59:18