首页 > 解决方案 > 反向地理编码纬度/经度坐标以检索土地利用数据(例如住宅区、高速公路等)

问题描述


我想分析一下德国、意大利和法国的电动汽车充电站的位置。这三个国家,因为它们各自的公共充电站基础设施激励计划存在很大差异。

到目前为止,我拥有的是从OpenChargeMapOpenStreetMap导出的 .csv 文件,其中包含这三个国家/地区所有充电站的位置数据(纬度和经度)以及我可以在 R 中处理的一些其他信息。

我现在想做的是对这些纬度和经度坐标进行某种反向地理编码,以检索有关周围环境的其他信息。特别是,各个充电站是否位于例如城市的住宅区或高速公路上的休息站。通过了解充电站位于这三个国家/地区的哪些位置,我希望能够就激励计划得出结论。在这种情况下,我不是在寻找特定的地址,而是在寻找 API 或其他方式来处理数千个坐标并检索有关例如人口密度或我可以从中得出结论的任何其他数据的信息。

我试图让 OpenStreetMap 导出工作,但不幸的是,我似乎无法通过Overpass Turbo API查询“landuse”属性。是我在此特定 API 中使用的基本查询,但只要我查询而不是我得到提示为空字段的结果。["landuse" = "residential"]["landuse" = ""]

从 Google 找到了一个 API,它可以查找各种地址组件/类型。不幸的是,在 Google 注册 API 密钥对于我的工作范围来说不太现实。有人知道(最好是 FOSS)API 能够做这样的事情吗?甚至如何在上面链接的 Overpass Turbo API 中进行“土地使用”查询?
提前感谢您的宝贵时间。

标签: rexport-to-csvopenstreetmapgeocodingoverpass-api

解决方案


您的 Overpass API 查询正在查找标记为amenity=charging_station landuse的元素。这是相当罕见的,因为充电站和土地利用被映射为不同的对象。相反,您需要在充电站周围寻找土地利用元素。

所以而不是

area["ISO3166-1"="DE"]->.a;
nwr(area.a)["amenity"="charging_station"]["landuse"=""];

你需要一个像这样的查询

area["ISO3166-1"="DE"]->.a;
nwr(area.a)["amenity"="charging_station"];
way(around:200)["landuse"];

这会搜索带有位于充电站 200 米范围内的土地使用标签的方式。

请注意,这是一个相当繁重的查询。您可能应该为此使用自己的 Overpass API 服务器。


推荐阅读