2017-07-30 108 views
1

说我有城市和国家的载体,这可能会或可能不包括由于更改后的名称有地名:检索自改名后的城市/国家的纬度/经度坐标?

locations <- c("Paris, France", "Sarajevo, Yugoslavia", "Rome, Italy", "Leningrad, Soviet Union", "St Petersburg, Russia") 

的问题是,我不能使用类似ggmap::geocode因为它不” t对于名称已更改的地点似乎效果不错:

ggmap::geocode(locations, source = "dsk") 

     lon  lat 
1 2.34880 48.85341 #Works for Paris 
2  NA  NA #Didn't work for Sarajevo 
3 12.48390 41.89474 #Works for Rome 
4 98.00000 60.00000 #Didn't work for the old name of St Petersburg seems to just get the center of Russia 
5 30.26417 59.89444 #Worked for St Petersburg 

是否有可用的替代功能?如果我必须“更新”国家/地区&国家/地区的名称,是否有一种简单的方法可以解决这个问题?我有数百个位置正在收集经度和纬度坐标。

回答

3

这可能不是你想到的,但如果你只用城市名(而不是国家)使用完全相同的代码,至少你提到的两个案例(萨拉热窝和列宁格勒)似乎工作精细。您可以尝试使用修改后的locations载体(包括城市名称)运行该函数,然后查看是否仍然出现错误。类似这样的:

(cities <- gsub(',.*', '', locations)) 

## [1] "Paris"   "Sarajevo"  "Rome"   "Leningrad"  "St Petersburg" 

cbind(ggmap::geocode(cities, source = 'dsk'), cities) 

##  lon  lat  cities 
## 1 2.34880 48.85341   Paris 
## 2 18.35644 43.84864  Sarajevo 
## 3 12.48390 41.89474   Rome 
## 4 30.26417 59.89444  Leningrad 
## 5 30.26417 59.89444 St Petersburg 
+0

有趣。信息越少越好的罕见情况之一。谢谢! – Phil