在对R中的地址列表进行地理编码时,如何保留现有标识符?

时间:2016-05-25 20:23:14

标签: r geocoding

我目前正在使用R脚本设置为使用RDSTK(基于this的Data Science Toolkit API的包装器)来对CSV地址列表进行地理编码。

该脚本似乎有效,但地址列表中有一个预先存在的唯一标识符,该标识符未在过程中保留 - 输入文件有两列: id 解决。出于地理编码过程的目的,id列没有意义,但是我希望输出保留它 - 也就是说,我喜欢输出,它有三列(地址,长,和lat)有四个 - id是第一个。

问题在于

  1. 输出与输入地址的顺序不同,或者看起来不一样,所以我不能简单地在最后添加地址列,
  2. 输出不包含空值,因此两者在任何情况下都不会是相同的行数,即使它是相同的顺序,并且
  3. 我不确定如何有效地绑定id列,使其成为地理编码过程的一部分,这显然是理想的解决方案。
  4. 这是脚本:

    require("RDSTK")
    library(httr)
    library(rjson)
    dff = read.csv("C:/Users/name/Documents/batchtestv2.csv")
    data <- paste0("[",paste(paste0("\"",dff$address,"\""),collapse=","),"]")
    url  <- "http://www.datasciencetoolkit.org/street2coordinates"
    response <- POST(url,body=data)
    json     <- fromJSON(content(response,type="text"))
    geocode  <- do.call(rbind,lapply(json, function(x) c(long=x$longitude,lat=x$latitude)))
    geocode
    
    write.csv(geocode, file = "C:/Users/name/Documents/geocodetest.csv")
    

    以下是输出的示例:

    2633 Camino Ramon Suite 500 San Ramon California 94583 United States                                   -121.96208 37.77027
    555 Lordship Boulevard  Stratford Connecticut 6615 United States                                        -73.14098 41.16542
    500 West 13th Street  Fort Worth Texas 76102 United States                                              -97.33288 32.74782
    50 North Laura Street Suite 2500 Jacksonville Florida 32202 United States                               -81.65923 30.32733
    7781 South Little Egypt Road  Stanley North Carolina 28164 United States                                -81.00597 35.44482
    

    也许这个解决方案非常简单,而且我只是在密集 - 它完全有可能(我不会对任何特定语言有丰富的经验,所以我有时会想念明显的事情)但是我避风港已经能够解决它。

    提前致谢!

0 个答案:

没有答案