地理编码结果与谷歌地图不同

3

我正在尝试使用ggmap(版本2.4)对意大利不同IATA机场代码进行地理编码,以下是(初步的)代码:

#list of all IATA codes
geo_apt <- c("AOI", "BGY", "BLQ", "BRI", "CTA", "FCO", "LIN", "MXP", "NAP", 
"PMF", "PSA", "PSR", "RMI", "TRN", "VCE", "VRN")

#preparing an empty dataframe to store the geocodes
apt_geo <- data.frame(IATA=rep(NA,16), lon=rep(NA,16), lat=rep(NA,16))

#geocoding the codes
for (i in seq_along(geo_apt)) {
  apt_geo[i,1] <- geo_apt[i]
  apt_geo[i,2] <- (geocode(paste(geo_apt[i],"airport")))[1]
  apt_geo[i,3] <- (geocode(paste(geo_apt[i],"airport")))[2]
}

除了"PSR"外,ggmapgeocode函数可以完美地处理所有这些代码。

   IATA        lon      lat
1   AOI  13.363752 43.61654
2   BGY   9.703631 45.66957
3   BLQ  11.287859 44.53452
4   BRI  16.765202 41.13751
5   CTA  15.065775 37.46730
6   FCO  12.246238 41.79989
7   LIN   9.276308 45.45218
8   MXP   8.725531 45.63006
9   NAP  14.286579 40.88299
10  PMF  10.295935 44.82326
11  PSA  10.397884 43.68908
12  PSR -81.117259 33.94855  #<- doens't work
13  RMI  12.618819 44.02289
14  TRN   7.647867 45.19654
15  VCE  12.339771 45.50506
16  VRN  10.890141 45.40000

我已经尝试使用revgeocode,这些坐标对应以下地址:
revgeocode(as.numeric(apt_geo[12,2:3]))
#Information from URL : http://maps.googleapis.com/maps/api/geocode/json?latlng=33.948545,-81.1172588&sensor=false
[1] "Kentucky Avenue, West Columbia, SC 29170, USA" 

相反,如果我使用谷歌地图,它完美地工作:map of Pescara airport 有人对这个看似奇怪的现象有什么线索吗?编辑 根据下面评论中的建议,我再次在2.4版本上尝试使用geocode(italy PSR airport),但是除了得到一个更准确的结果或者相同的结果之外,我得到了以下警告:
geocode("italy PSR airport")
  lon lat
1  NA  NA
Warning message:
geocode failed with status ZERO_RESULTS, location = "italy PSR airport" 

尝试使用 机场 PSR,其坐标甚至与 PSR 机场 不同(至少这次是一个真正的机场,尽管它的 IATA 代码是 LEX 而不是 PSR)。

revgeocode(as.numeric(geocode("airport PSR")))
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?latlng=38.0381454,-84.5970727&sensor=false
[1] "3895 Terminal Drive, Lexington, KY 40510, USA"

使用 ggmap 版本2.5,使用 geocode("italy PSR airport"),可以得到 12.8333 42.8333。但是 revgeocode 显示这不正确。 - user3710546
@Pascal,你是如何安装ggmap 2.5版本的?我有一个2.4版本,如果我尝试执行geocode("italy PSR airport"),会出现警告信息: geocode failed with status ZERO_RESULTS, location = "italy PSR airport"。 - MaZe
这里:https://github.com/dkahle/ggmap#installation - user3710546
也许API没有提供Google Maps使用的全部数据?无论如何,gc <- geocode("Pescara Airport"); revgeocode(unlist(gc[1, ])); # "Abruzzo Airport, Via Tiburtina, Km 229,100, 65131 Pescara PE, Italy" - 我建议事先使用例如https://en.wikipedia.org/wiki/List_of_airports_in_Italy解码机场IATA。 - lukeA
@lukeA 我也怀疑API不完整。我知道“Pescara机场”可以工作,我也知道列表中的缩写代表什么(例如AOI代表安科纳,RMI代表里米尼等等),但我宁愿避免使用这种解决方案...我的问题更多地与这些奇怪的不匹配有关(据我所见,我不是唯一报告奇怪的“geocode”结果的人)。 - MaZe
1个回答

0
整个问题可能是一个重复
尽管如此,我不明白为什么API和Google地图使用不同的数据集...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接