获取 POI 数据库

Posted

技术标签:

【中文标题】获取 POI 数据库【英文标题】:Get POIsdatabase 【发布时间】:2013-08-22 20:06:28 【问题描述】:

我创建了一些旅行项目,但现在我需要世界各地的海滩数据库。 有没有这种类型的数据库。我可以从某个地方刮擦吗?是否可以从 openstreetmap 获取它?

我尝试使用:http://poi.openstreetmap.nl/,但没有这种类型的对象 (POI)

我也尝试过 google 地方,但也没有这种类型...

【问题讨论】:

【参考方案1】:

OpenStreetMap 中的Elements 由tags 描述。对于海滩,有natural=beach 标签。

如果您想从 OSM 检索所有海滩,您可以使用 Overpass APi 并为所有具有此标签的元素运行查询,或者获取原始数据(行星或提取物)并在之后运行查询。

Overpass-XML 查询如下所示:

<osm-script output="json">
  <union>
    <query type="node">
      <has-kv k="natural" v="beach"/>
    </query>
    <query type="way">
      <has-kv k="natural" v="beach"/>
    </query>
    <query type="relation">
      <has-kv k="natural" v="beach"/>
    </query>
  </union>
  <recurse type="down"/>
</osm-script>

和等效的 Overpass-QL 查询(只是一种更紧凑的格式):

[out:json];(node["natural"="beach"];way["natural"="beach"];relation["natural"="beach"];);>;;

您可以run this query directly 检索原始数据(也可以检索XML 而不是JSON)或show the result OverpassTurbo。

请注意,这是一个非常繁重的查询,因为它涉及检查整个世界,而不仅仅是特定的地理区域(可以通过指定 bounding box 来实现)。因此查询需要一些时间才能运行,您可能需要增加timeout。

另一种方法是下载您感兴趣的planet 或extract,然后使用osmfilter 提取带有特定标签的所有元素。

【讨论】:

我会得到多少结果?海滩也有关键字吗? 所有结果。如前所述,海滩的关键字 (=tag) 是 natural=beach "remark": "运行时错误:查询在 181 秒后第 1 行的 \"recurse\" 中超时。" 另外,我如何获得更多关于海滩的信息,使用 openstrretmap 我可以获得海滩的位置和名称? 正如我所提到的,您可能会遇到如此繁重的查询超时。尝试增加它。此外,我添加了一种不同的方法来将这些标签提取到我的答案中。另外,您还想了解哪些有关海滩的其他信息?其中一些海滩可能附有其他标签,而另一些则没有。这就是 OSM 的工作原理。【参考方案2】:

不完全是海滩,但你可以在这个网站上找到很多分类的 POI:http://waypointer.info

【讨论】:

以上是关于获取 POI 数据库的主要内容,如果未能解决你的问题,请参考以下文章

poi获取点为啥与实际地图有偏差

获取百度地图POI数据二(准备搜索关键词)

poi 获取excel数据 导入数据库

教你如何拔取百度地图POI兴趣点

java中poi怎么获取指定列的行数?

获取百度地图POI数据三(模拟关键词搜索)