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. FetchXML - GeoCode距離按距離搜索
- 5. SQL Server的距離搜索
- 6. WordPress的距離搜索SQL
- 7. 搜索引擎的距離
- 8. 地理距離搜索MYSQL
- 9. SQL搜索按距離
- 10. 在搜索表單中包含距離
- 11. 在SQL中用距離搜索
- 12. Azure的搜索距離過濾
- 13. mysql之間的搜索距離
- 14. 基於距離的搜索和排序
- 15. 如何限制Google Places API搜索的距離?
- 16. Google App Engine和Google Maps在Python中搜索近距離搜索
- 17. 如何根據距離排序搜索結果,使用textsearch搜索API位置
- 18. 搜索用戶距離內的項目(地理位置)PHP/MySQL
- 19. 刻面在solr-距離如何生成,搜索withing距離的給定範圍
- 20. 如何根據距離與Google Maps API進行搜索?
- 21. Mysql查詢距離搜索失敗
- 22. Symfony2,學說搜索和距離排序
- 23. 使用加入距離搜索和mysql
- 24. Mysql POINT專欄爲距離搜索
- 25. 按距離搜索限制地址
- 26. 按距離排序搜索結果
- 27. 檢索距離內的所有地面
- 28. Android:等距視圖在OpenStreetMap
- 29. 彈性搜索中的地理距離查詢中的返回距離5.x
- 30. 搜索OpenStreetMap中的其他貢獻者
是CloudMade免費或需要生產使用商業合同? – 2009-10-24 08:36:48
來自FAQ: 問:是否有人可以從OpenStreetMap出售和賺錢? 答:OpenStreetMap中的所有數據都被授權由各貢獻者根據知識共享署名 - 相同方式共享2.0許可條款使用。許可條款允許任何人以任何方式重新使用數據,只要他們給予適當的歸屬。這包括重新銷售數據的權利,所以是的,任何人都可以從OpenStreetMap賺錢。 – casper 2009-11-05 22:59:18