是否有openstreetmap的API?

时间:2009-07-07 23:46:01

标签: api geospatial openstreetmap

我想知道是否有任何API我可以查询OSM数据,例如;是(lon_1,lat_1)在陆地还是在海上?或者是否可以将岛屿定义为定义明确的多边形?到目前为止我唯一看到的用法就是渲染OSM数据(生成图块)的工具。

8 个答案:

答案 0 :(得分:25)

是的,有apixapi(扩展的api)。

我还没用过这些。

但OSM也有cloudmade api。我玩了一下python api。

我不确定,如果他们中的任何一个可以帮助您解决您的特定问题,但您可以在您的观点附近搜索coastline。如果您的点在多边形tagged natural=coastline内,则您有一个岛屿(或大陆)......

答案 1 :(得分:9)

您可以使用CloudMade的地理编码API在OpenStreetMap数据中搜索孤岛。默认情况下,API将返回结果的几何图形,这听起来像你在寻找什么。例如,苏格兰海岸附近的Arran可以通过以下http请求找到:

http://geocoding.cloudmade.com/BC9A493B41014CAABB98F0471D759707/geocoding/find/Arran,UK.js?results=1

(作为一个整洁的小黑客,将.js更改为.html预览结果。

有关API的更多文档和示例,请访问developer.cloudmade.com/projects/show/geocoding-http-api 如果您不想使用http api,那么抽象API可以使用多种语言 - ruby​​,python,perl等。

答案 2 :(得分:6)

似乎没有人在这里提到 Leaflet API:
http://leafletjs.com/reference.html

答案 3 :(得分:3)

我使用过CloudMade OSM数据提取但是遇到了一些问题。例如,挪威被剪得太紧,导致西海岸的一些道路消失。

我现在更喜欢立交桥API。

将此类内容放入http://www.overpass-api.de/query_form.html

的查询表单中
<osm-script timeout="10000" element-limit="1073741824">
  <union into="_">
    <bbox-query into="_" s="52.3170669250001" n="52.4027433480001" w="4.80527567900009" e="4.97793537400008"/>
    <recurse from="_" into="_" type="up"/>
    <recurse from="_" into="_" type="down"/>
  </union>
  <print from="_" limit="" mode="meta" order="id"/>
</osm-script>

将所需区域的边界(以度为单位)放在元素的s,n,w和e属性中。

答案 4 :(得分:2)

当然,javascript api称为openlayers

答案 5 :(得分:1)

MapQuest有一套基于OpenStreetMap数据的“开放式”Web服务API,条款相当不受限制(即条款与OSM密切相关):

http://developer.mapquest.com/web/products/open

答案 6 :(得分:1)

我找到了一个很棒的API来读取Openstreetmap数据; Mapscript。 这是MapServer的接口,它能够读取* .map和* .shp文件。它能够使用空间索引,因此可能非常快。我在40毫秒内完成了世界海岸线形状文件的随机多边形查找(检查多边形是否与陆地相交)。

答案 7 :(得分:0)

http://wiki.openstreetmap.org/wiki/Nominatim怎么样? 我用过这个并设置了我自己的服务器