【发布时间】:2016-02-17 03:10:07
【问题描述】:
我正在尝试将人口普查局的批量地理编码器 (http://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf) 与 R 一起使用。输入地址位于数据帧中,而不是 CSV。由于地址是一个中间步骤,我不想将它们写入 CSV。
我已经阅读了几篇关于 stackoverflow 的帖子。 Hadley 的解决方案 (Posting to and Receiving data from API using httr in R) 说明了如何上传现有的 CSV 文件。 MrFlick 的解决方案 (Uploading a csv to an api in R) 似乎接近我想要的,但使用的是字符串,而不是数据框。
这是我的代码方式:
#generate data frame of test addresses for this example
a = c(1, 2, 3)
b = c("125 Worth Street", "258 Broadway", "8 Centre Street")
c = rep("New York", 3)
d = rep("NY", 3)
e = c("10013","10007","10007")
addresses = data.frame(a,b,c,d,e)
#names specified by API documentation
colnames(addresses) <- c("Unique ID","Street address","City","State","ZIP")
apiurl <- "http://geocoding.geo.census.gov/geocoder/geographies/addressbatch"
req <- POST(apiurl, body=list(
addressFile = RCurl::fileUpload(
filename = "test.csv",
contents = addresses
),
benchmark = "Public_AR_Census2010",
vintage = "Census2010_Census2010"
),
encode="multipart"
)
stop_for_status(req)
提前致谢。
【问题讨论】:
-
有趣...预期的输出是什么?
-
为什么不能将数据写入临时文件,然后在完成/退出时删除临时文件?
-
我想在住院记录数据库中使用它来检索人口普查地理区域(区块、区域)。在处理数百万条记录时,我想我会将批量地理编码器的速度与单记录地理编码器的速度(通过矢量化应用)进行比较。