我正在尝试使用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"外,ggmap
的geocode
函数可以完美地处理所有这些代码。
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](https://istack.dev59.com/ybknp.webp)
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
显示这不正确。 - user3710546geocode("italy PSR airport")
,会出现警告信息: geocode failed with status ZERO_RESULTS, location = "italy PSR airport"。 - MaZegc <- 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