我有大量的经度和纬度数据,我想将其转换为英国邮政编码。我首先尝试使用相应的long / lat下载所有英国邮政编码,然后将数据加入到一起。这适用于某些数据,但由于邮政编码纬度和经度是每个邮政编码的中心,大多数数据不匹配,因为我的数据更准确。
我还尝试了一些代码,将美国的Lat / long转换成相应的状态(由Josh O'Brien在Latitude Longitude Coordinates to State Code in R给出),但我找不到改变它的方法到英国的邮政编码。
我也试过运行一个试图找到最接近long / lat的邮政编码的计算,但是这会创建一个太大而无法处理的文件。
还看到一些使用谷歌地图(地理编码)的代码,这看起来确实有效,但我读过它只允许每天进行2000次计算,我有更多(大约500万行数据)
答案 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次免费通话,但你可以做几个技巧(取决于你的数据集)来匹配更多记录:
几年前我按照这个受欢迎的教程在R中进行了这样的地理编码:https://www.r-bloggers.com/using-google-maps-api-and-r/
不幸的是,教程代码有点过时,因此您需要修改一些内容以使其适应您的需求。