2009-09-05 162 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