如何在R中对无效/错误位置的表进行地理编码?

时间:2018-01-15 01:49:15

标签: r google-maps-api-3 jupyter geocode twitter-rest-api

我从twitter收集了不同用户位置的数据。我试图在R中的地图中绘制这些数据。问题是用户给出了无效/不正确的地址,导致地理编码功能失败。我怎样才能避免这种失败?有没有办法检查这个错误情况而不是继续?例如,对于任何文件geocode9.csv,用户位置数据都是这样的。

可用的地点, 水牛, 纽约, thsjf, 美国华盛顿 密歇根州, nkjnt, 篮球, ejhrbvw

library(ggmap)
fileToLoad <- file.choose(new = TRUE)
origAddress <- read.csv(fileToLoad, stringsAsFactors = FALSE)
geocoded <- data.frame(stringsAsFactors = FALSE)
for(i in 1:nrow(origAddress))
{

  result <- geocode(origAddress$available_locations[i], output = "latlona", source = "google")
  origAddress$lon[i] <- as.numeric(result[1])
  origAddress$lat[i] <- as.numeric(result[2])
  origAddress$geoAddress[i] <- as.character(result[3])

}
write.csv(origAddress, "geocoded.csv", row.names=FALSE)

当代码运行位置列表的“thsjf”时,它会抛出错误。我怎样才能解决这个错误?我想要的东西, if(false){#不运行地理编码功能}

1 个答案:

答案 0 :(得分:0)

如果这些地址实际上是错误的,我不确定如何对这些地址进行地理编码。如果它错了,机器怎么能算出来?我认为您需要更正地址,然后对所有内容进行地理编码。这是一些示例代码。

#load ggmap
library(ggmap)

startTime <- Sys.time()

# Select the file from the file chooser
fileToLoad <- file.choose(new = TRUE)


# Read in the CSV data and store it in a variable 
origAddress <- read.csv(fileToLoad, stringsAsFactors = FALSE)


# Initialize the data frame
geocoded <- data.frame(stringsAsFactors = FALSE)


# Loop through the addresses to get the latitude and longitude of each address and add it to the
# origAddress data frame in new columns lat and lon
for(i in 1:nrow(origAddress))

{
# Print("Working...")
result <- geocode(origAddress$addresses[i], output = "latlona", source = "google")
origAddress$lon[i] <- as.numeric(result[1])
origAddress$lat[i] <- as.numeric(result[2])
origAddress$geoAddress[i] <- as.character(result[3])
}


# Write a CSV file containing origAddress to the working directory
write.csv(origAddress, "geocoded.csv", row.names=FALSE)

endTime <- Sys.time()
processingTime <- endTime - startTime
processingTime

查看此信息以获取更多信息。

http://www.storybench.org/geocode-csv-addresses-r/