【问题标题】:geocode result different from google maps地理编码结果与谷歌地图不同
【发布时间】:2015-10-21 14:37:19
【问题描述】:

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

#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]
}

ggmapgeocode 函数在所有这些代码中都可以正常工作,除了“PSR”

   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" 

相反,如果我去谷歌地图,它工作得很好:

有人对这个明显奇怪的现象有线索吗?

编辑

根据下面 cmets 中的一个建议,我尝试在 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" 

在尝试airport PSR 时,坐标甚至与PSR airport 的坐标不同(至少这次它是一个实际的机场,尽管它的 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 显示它不正确。
  • @Pascal 你是如何安装 ggmap 2.5 版的?我有一个 2.4 版本,如果我尝试执行 geocode("italy PSR airport") 警告消息:地理编码失败,状态为 ZERO_RESULTS,位置 =“意大利 PSR 机场”`
  • 也许 API 没有提供 Google 地图使用的完整数据?无论如何,gc &lt;- geocode("Pescara Airport"); revgeocode(unlist(gc[1, ])); # "Abruzzo Airport, Via Tiburtina, Km 229,100, 65131 Pescara PE, Italy" - 我建议事先使用例如解码机场 IATA。 en.wikipedia.org/wiki/List_of_airports_in_Italy
  • @lukeA 我也怀疑 API 不完整。我知道使用“佩斯卡拉机场”它可以工作,而且我知道该列表中有什么(例如 AOI 代表 Ancona,RMI 代表里米尼等)但我宁愿避免这个解决方案......我的问题更相关由于这些奇怪的不匹配的原因(据我所知,我不是唯一一个报告奇怪的geocode 结果的人)

标签: r google-maps geocode ggmap


【解决方案1】:

整个问题是一个可能的duplicate

不过,我不明白 API 和 Google 地图使用不同数据集的原因......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2012-04-10
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2016-04-10
    相关资源
    最近更新 更多