将经度和纬度转换为R中的英国邮政编码

时间:2018-01-08 15:18:19

标签: r google-maps latitude-longitude reverse-geocoding postal-code

我有大量的经度和纬度数据,我想将其转换为英国邮政编码。我首先尝试使用相应的long / lat下载所有英国邮政编码,然后将数据加入到一起。这适用于某些数据,但由于邮政编码纬度和经度是每个邮政编码的中心,大多数数据不匹配,因为我的数据更准确。

我还尝试了一些代码,将美国的Lat / long转换成相应的状态(由Josh O'Brien在Latitude Longitude Coordinates to State Code in R给出),但我找不到改变它的方法到英国的邮政编码。

我也试过运行一个试图找到最接近long / lat的邮政编码的计算,但是这会创建一个太大而无法处理的文件。

还看到一些使用谷歌地图(地理编码)的代码,这看起来确实有效,但我读过它只允许每天进行2000次计算,我有更多(大约500万行数据)

2 个答案:

答案 0 :(得分:1)

您可能想尝试我的PostcodesioR package,其中包括反向地理编码功能。但是,对postcodes.io的API调用数量有限制。

devtools::install_github("ropensci/PostcodesioR")
library(PostcodesioR)
reverse_geocoding(0.127, 51.507)

另一种选择是使用此函数对多对地理坐标进行反向地理编码:

geolocations_list <- structure(
 list(
 geolocations = structure(
 list(
 longitude = c(-3.15807731271522, -1.12935802905177),
 latitude = c(51.4799900627036, 50.7186356978817),
 limit = c(NA, 100L),
 radius = c(NA, 500L)),
 .Names = c("longitude", "latitude", "limit", "radius"),
 class = "data.frame",
 row.names = 1:2)),
 .Names = "geolocations")

bulk_rev_geo <- bulk_reverse_geocoding(geolocations_list)

bulk_rev_geo[[1]]$result[[1]]

考虑到数据集的大小以及API调用的常见限制,您可能希望下载包含英国地理数据的最新database并将其加入您的文件。

答案 1 :(得分:0)

我相信你想用谷歌地图API做"Reverse Geocoding"。那就是解析纬度和经度并得到最近的地址。之后,您可以轻松地从地址中获取邮政编码。 (这是您从谷歌地图API中收到的地址中的项目。)

api(我上次检查过)每天允许2500次免费通话,但你可以做几个技巧(取决于你的数据集)来匹配更多记录:

  1. 您可以每天使用2400条记录填充数据集,直至完成或
  2. 您可以多次更改IP和API密钥,以便在一天内获得更多记录或
  3. 您始终可以获得高级API密钥并支付您提出的请求数量
  4. 几年前我按照这个受欢迎的教程在R中进行了这样的地理编码:https://www.r-bloggers.com/using-google-maps-api-and-r/

    不幸的是,教程代码有点过时,因此您需要修改一些内容以使其适应您的需求。