我想找到地址列表的坐标。
我使用的数据集可以在这里找到:"示例网站"https://www.data.gv.at/katalog/dataset/kaufpreissammlung-liegenschaften-wien"
我使用read_csv
函数作为"data"输入了这个,我使用tidyverse和jsonlite库,唯一相关的列是"Straße",这是街道名称,"ON"是街道编号,所有这些都是奥地利的维也纳。
我正在使用OpenStreetMap,并已按照格式要求对地址数据进行了格式化:
data$formatted_address <- paste(ifelse(is.na(data$ON), "", data$ON), "+", tolower(data$Straße), ",+vienna", sep = "")
这会将此列中的地址格式设置为1+milanweg,+vienna
和12+granergasse,+vienna
。当我手动将其输入到API格式中时,一切都正常,我得到了坐标:https://nominatim.openstreetmap.org/search?q=1+milanweg,+vienna&format=json&polygon=1&addressdetails=1
由于我现在想对我的整个行都这样做,所以我使用jsonlite在R中创建请求。
data$coordinates <- data.frame(lat = NA, lon = NA)
for (i in 1:nrow(data)) {
result <- try(readLines(paste0("https://nominatim.openstreetmap.org/search?q=",
URLencode(data$formatted_address[i]), "&format=json&polygon=1&addressdetails=1")),
silent = TRUE)
if (!inherits(result, "try-error")) {
if (length(result) > 0) {
result <- fromJSON(result)
if (length(result) > 0 && is.list(result[[1]])) {
data$coordinates[i, ] <- c(result[[1]]$lat, result[[1]]$lon)
}
}
}
}
理论上,这应该创建完全相同的API请求,但是,lat和lon列总是空的。
如何修复此脚本以创建数据集中每个地址的坐标列表?
1条答案
按热度按时间xu3bshqb1#
数据设置
API调用和获取坐标。我收集了API匹配的显示名称,以及纬度数据。