Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将经度和纬度转换为R中的英国邮政编码_R_Google Maps_Latitude Longitude_Reverse Geocoding_Postal Code - Fatal编程技术网

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

将经度和纬度转换为R中的英国邮政编码,r,google-maps,latitude-longitude,reverse-geocoding,postal-code,R,Google Maps,Latitude Longitude,Reverse Geocoding,Postal Code,我有大量的经度和纬度数据,我想把它们转换成英国的邮政编码。我首先尝试下载所有英国邮政编码及其对应的long/lat,然后将数据连接在一起。这对一些数据有效,但大多数数据不匹配,因为邮政编码的纬度和经度是每个邮政编码的中心,而我的数据更准确 我还尝试了一些代码,将美国的Lat/long转换为相应的state(这里由Josh O'Brien提供),但我找不到将其更改为英国邮政编码的方法 我还尝试运行一个计算,试图找到与long/lat最接近的邮政编码,但这会创建一个文件太大,R无法处理 还看到了一些

我有大量的经度和纬度数据,我想把它们转换成英国的邮政编码。我首先尝试下载所有英国邮政编码及其对应的long/lat,然后将数据连接在一起。这对一些数据有效,但大多数数据不匹配,因为邮政编码的纬度和经度是每个邮政编码的中心,而我的数据更准确

我还尝试了一些代码,将美国的Lat/long转换为相应的state(这里由Josh O'Brien提供),但我找不到将其更改为英国邮政编码的方法

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

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

我相信你想使用谷歌地图API。即解析纬度和经度并获取最近的地址。之后,你可以很容易地从地址中提取邮政编码。(它是您从google maps API收到的地址列表中的一项。)

api(上次我检查时)允许每天2500次免费调用,但您可以使用几种技巧(取决于您的数据集)来匹配更多记录:

  • 每天可以用2400条记录填充数据集,直到完成或删除为止
  • 您可以更改IP和API密钥几次,以便在一天或几天内获得更多记录
  • 您始终可以获得一个高级API密钥,并为您的请求数量付费
  • 几年前,我通过以下流行教程在R中进行了这样的地理编码:

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

    您可能希望尝试my,其中包括反向地理编码功能。但是,对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]]
    

    地理位置\u按转换列出您的意思是找到最近的?如果是这样,而R无法解决这个问题,那么您可以尝试使用专用的GIS软件,例如,这可以在中完成,我也可以想象。我讨厌GIS人群FUD abt R。它速度非常快(它使用与大多数GIS产品相同的底层库),尤其是
    sf
    @纳维德:你有一个带有邮政编码信息的形状文件吗?谢谢你@hrbrmstr的评论,我现在没有形状文件,我唯一的邮政编码信息是所有英国邮政编码的列表,它们代表经度和纬度。hanks@DanWinchester,是的,我的意思是找到最近的。我可能会尝试这作为最后的手段,因为我以前没有使用过GIS软件。它能交出500万张唱片吗?这可能会被分解,如果不是的话,你不能只对你的邮政编码进行地理编码,例如,用Hi Borislav,谢谢你,但我已经涉猎了一点。我现在有大约500万行数据,所以这不会真正起作用(即使我把它分解成更小的部分)。谢谢你的Epo3,你知道批量反向地理代码是否有限制吗?例如,上面的代码是一次运行还是两次运行(当您将2个long/lat更改为邮政编码时)?如果它是1,那么我可以将我的数据拆分一点,然后运行它们。我从未达到极限。这是因为您一直使用低于极限(2500)的数据,还是您还没有遇到问题?