有没有OpenStreetMap的API?

44

我想知道是否有API可以查询OSM数据,例如:(lon_1,lat_1)在陆地上还是海洋中?或者能否获得一个明确定义的岛屿多边形?到目前为止,我所看到的唯一用途只是用于渲染OSM数据(生成瓦片)。


这个MapServer似乎非常有趣。谢谢。 - vikingosegundo
你应该将你的更新作为一个答案添加并接受它。 - John Willemse
此 API 允许您从 OSM 下载功能: https://buntinglabs.com/solutions/openstreetmap-extracts - Brendan
8个回答

28

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

我还没有使用过它们。

但是也有cloudmade api连接到OSM。我尝试过Python API。

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


它提供的XML格式是什么,我该如何在我的应用程序中将其呈现为光栅图像? - Matthew Lock
3
要从XML生成图像,您需要一个渲染器。有几个选择,请参见此处:http://wiki.openstreetmap.org/wiki/Renderers - vikingosegundo
1
对于大型和/或复杂的查询,Overpass API 是最佳选择。 - scai

8
您可以使用CloudMade的地理编码API在OpenStreetMap数据中搜索一个岛屿。该API默认返回结果的几何形状,这听起来就是您要找的内容。例如,苏格兰海岸的Arran岛可以通过以下http请求找到:http://geocoding.cloudmade.com/BC9A493B41014CAABB98F0471D759707/geocoding/find/Arran,UK.js?results=1(并且将.js更改为.html可以预览结果)。
有关API的更多文档和示例,请访问developers.cloudmade.com/projects/show/geocoding-http-api。如果您不想使用http api,则可以在多种语言中使用抽象API,例如ruby、python、perl等。

这个链接似乎已经过时了。毕竟它是10年前的东西。 - wegry

7

4
这并没有回答作者的问题。他想要一种查询 OpenStreetMap 的方式,而不是显示地图。Leaflet 是一个“面向移动设备友好的交互式地图的开源JavaScript库”,正如它们网站上所引用的那样。 - xarlymg89

4

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

现在我更喜欢使用overpass 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属性中,以度为单位指定所需区域的边界。

2

MapQuest拥有一组基于OpenStreetMap数据的“开放”Web服务API,其条款相对不受限制(即条款基本上遵循OSM的条款):

http://developer.mapquest.com/plans

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

2

2
我知道openlayers,但那不只是用于显示/操作渲染瓦片吗? - Yngve Sneen Lindal

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接