使用 googleway 的经纬度坐标反向地理编码循环的问题:r 对不同的坐标给出相同的结果
Problems with reverse geocoding loops with latitude longitude co-ordinates using googleway: r gives the same results for different co-ordinates
这是我的示例数据集(称为 origAddress):
lat lng
1.436316 103.8299
1.375093 103.8516
1.369347 103.8398
1.367353 103.8426
我还有很多行经纬度数字(330),我想找到地址。我已经使用这个 for 循环来做到这一点:
for(i in 1:nrow(origAddress))
{
# Print("Working...")
result <- google_reverse_geocode(location = c(origAddress$lat[i],origAddress$lng[i]),
key = key,
location_type = "rooftop")
if(is.null(result) || length(dim(result)) < 2 || !nrow(result)) next
origAddress$venadd <- geocode_address(result)
}
它适用于前三或四行,但随后 returns 与第一行的地址相同,尽管纬度和经度数字肯定不同。我查看了其他 Whosebug 问题 (here) 并尝试复制他们的方法但结果类似。
请帮忙!
看起来对 google_geocode 的调用可以 return 每个 lat/longitude 对的多个地址,因此您可能会覆盖输出数据帧中的数据。
另外,我不确定您的 if 语句是否正确评估。
这是我对你的问题的尝试:
library(googleway)
origAddress<-read.table(header = TRUE, text = "lat lng
1.436316 103.8299
1.375093 103.8516
1.369347 103.8398
1.367353 103.8426")
#add the output column
origAddress$venadd<-NA
for(i in 1:nrow(origAddress))
{
# Print("Working...")
result <- google_reverse_geocode(location = c(origAddress$lat[i],origAddress$lng[i]),
key=key,
location_type = "rooftop")
#add a slight pause so not to overload the call requests
Sys.sleep(1)
if(result$status =="OK" ){
#multiple address can be returned with in gecode request picks the first one
origAddress$venadd[i] <- result$results$formatted_address[1]
#use this to collect all addresses:
#paste(result$results$formatted_address, collapse = " ")
}
}
由于调用了 google_reverse_geocode return 的地址,我只是从结果中提取了第一个地址,保存了对 Internet 的调用(性能改进)。此外,由于呼叫 return 是一个状态,我检查是否正常,如果存在则保存第一个地址。
希望对您有所帮助。
这是我的示例数据集(称为 origAddress):
lat lng
1.436316 103.8299
1.375093 103.8516
1.369347 103.8398
1.367353 103.8426
我还有很多行经纬度数字(330),我想找到地址。我已经使用这个 for 循环来做到这一点:
for(i in 1:nrow(origAddress))
{
# Print("Working...")
result <- google_reverse_geocode(location = c(origAddress$lat[i],origAddress$lng[i]),
key = key,
location_type = "rooftop")
if(is.null(result) || length(dim(result)) < 2 || !nrow(result)) next
origAddress$venadd <- geocode_address(result)
}
它适用于前三或四行,但随后 returns 与第一行的地址相同,尽管纬度和经度数字肯定不同。我查看了其他 Whosebug 问题 (here) 并尝试复制他们的方法但结果类似。
请帮忙!
看起来对 google_geocode 的调用可以 return 每个 lat/longitude 对的多个地址,因此您可能会覆盖输出数据帧中的数据。
另外,我不确定您的 if 语句是否正确评估。
这是我对你的问题的尝试:
library(googleway)
origAddress<-read.table(header = TRUE, text = "lat lng
1.436316 103.8299
1.375093 103.8516
1.369347 103.8398
1.367353 103.8426")
#add the output column
origAddress$venadd<-NA
for(i in 1:nrow(origAddress))
{
# Print("Working...")
result <- google_reverse_geocode(location = c(origAddress$lat[i],origAddress$lng[i]),
key=key,
location_type = "rooftop")
#add a slight pause so not to overload the call requests
Sys.sleep(1)
if(result$status =="OK" ){
#multiple address can be returned with in gecode request picks the first one
origAddress$venadd[i] <- result$results$formatted_address[1]
#use this to collect all addresses:
#paste(result$results$formatted_address, collapse = " ")
}
}
由于调用了 google_reverse_geocode return 的地址,我只是从结果中提取了第一个地址,保存了对 Internet 的调用(性能改进)。此外,由于呼叫 return 是一个状态,我检查是否正常,如果存在则保存第一个地址。
希望对您有所帮助。