我想知道是否有任何API我可以查询OSM数据,例如;是(lon_1,lat_1)在陆地还是在海上?或者是否可以将岛屿定义为定义明确的多边形?到目前为止我唯一看到的用法就是渲染OSM数据(生成图块)的工具。
答案 0 :(得分:25)
我还没用过这些。
但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密切相关):
答案 6 :(得分:1)
我找到了一个很棒的API来读取Openstreetmap数据; Mapscript。 这是MapServer的接口,它能够读取* .map和* .shp文件。它能够使用空间索引,因此可能非常快。我在40毫秒内完成了世界海岸线形状文件的随机多边形查找(检查多边形是否与陆地相交)。
答案 7 :(得分:0)
http://wiki.openstreetmap.org/wiki/Nominatim怎么样? 我用过这个并设置了我自己的服务器