R

时间:2015-10-26 21:56:24

标签: r api geocoding

我尝试对法语地址进行地理编码。我想使用以下网站:http://adresse.data.gouv.fr/

这个网站上有一个关于如何使用API​​的例子,但我认为它是一些Linux代码,我想在R代码中进行翻译。目的是给一个带地址的csv文件,结果应该是地理坐标。

Linux代码(网站上的示例)

http --timeout 600 -f POST http://api-adresse.data.gouv.fr/search/csv/ data@path/to/file.csv 

我尝试使用以下代码

在R中“翻译”此内容
library(httr)
library(RCurl)
queryResults=POST("http://api-adresse.data.gouv.fr/search/csv/",body=list(data=fileUpload("file.csv"))) 
result_geocodage=content(queryResults)

但不幸的是我有一个错误的请求错误。

有人知道我在R的翻译中缺少什么吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

这是一个例子。首先,一些示例数据加上请求:

library(httr)
df <- data.frame(c("13 Boulevard Chanzy", "Gloucester St"), 
                 c("93100 Montreuil", "Jersey"))
write.csv2(df, tf <- tempfile(fileext = ".csv"))
res <- POST("http://api-adresse.data.gouv.fr/search/csv/", 
            timeout(600), 
            body = list(data = upload_file(tf)))

然后,结果:

content(res, sep = ";", row.names = 1)
# c..13.Boulevard.Chanzy....Gloucester.St.. c..93100.Montreuil....Jersey.. latitude longitude
# 1                       13 Boulevard Chanzy                93100 Montreuil 48.85825  2.434462
# 2                             Gloucester St                         Jersey 49.46712  1.145554
# result_label result_score result_type                result_id result_housenumber
# 1                13 Boulevard Chanzy 93100 Montreuil         0.88 housenumber ADRNIVX_0000000268334929                 13
# 2 2 Résidence le Jersey 76160 Saint-Martin-du-Vivier         0.24 housenumber ADRNIVX_0000000311480901                  2
# result_name result_street result_postcode            result_city                       result_context result_citycode
# 1    Boulevard Chanzy            NA           93100              Montreuil 93, Seine-Saint-Denis, Île-de-France           93048
# 2 Résidence le Jersey            NA           76160 Saint-Martin-du-Vivier  76, Seine-Maritime, Haute-Normandie           76617

或者,只是坐标:

subset(content(res, sep = ";", row.names = 1, check.names = FALSE), select = c("latitude", "longitude"))
# latitude longitude
# 1 48.85825  2.434462
# 2 49.46712  1.145554