我有一个R代码,它采用我提供给它的城市名称,然后将其输入到Google地图可以理解的URL查询类型中,然后它为我提供纬度和经度坐标。我的城市名字都是希伯来语!
当我在this网站中使用“url encode”然后将输出放到我的代码中时,一切正常。但后来我心想 - 当我可以用相同的代码对R进行编码时,为什么我需要使用这个网站。
所以我尝试了,而且显然 - URLencode
我在互联网上找到的所有软件包都比我提到的网站编码不同。例如:
我想对希伯来语城市名称进行编码:צפת
网站输出:
%D7%A6%D7%A4%D7%AA
。
URLencode
的输出:
%F6%F4%FA
如何获取网站使用的第一个编码?
(我试图使用RCurl
和urltools
,但都无济于事。)
R代码就是这样(我在this网站上找到了它):
getGeoCode <- function(gcStr)
{
library("RJSONIO") # Load Library
gcStr <- gsub(' ','%20',gcStr) # Encode URL Parameters
# Open Connection
connectStr <- paste('http://maps.google.com/maps/api/geocode/json?sensor=false&address=',gcStr, sep="")
con <- url(connectStr)
data.json <- fromJSON(paste(readLines(con), collapse=""))
close(con)
# Flatten the received JSON
data.json <- unlist(data.json)
lat <- data.json["results.geometry.location.lat"]
lng <- data.json["results.geometry.location.lng"]
gcodes <- c(lat, lng)
names(gcodes) <- c("Lat", "Lng")
return (gcodes)
}
答案 0 :(得分:1)
我没有看到您使用URLencode()
描述的问题:
location <- "צפת"
URLencode(location)
# [1] "%D7%A6%D7%A4%D7%AA"
使用我的googleway
包查询到Google工作
library(googleway)
apiKey <- ""
res <- google_geocode(address = location, key = apiKey)
res$results$formatted_address
# [1] "Safed, Israel"
res$results$address_components
# [[1]]
# long_name short_name types
# 1 Safed Safed locality, political
# 2 Tzfat Tzfat administrative_area_level_2, political
# 3 North District North District administrative_area_level_1, political
# 4 Israel IL country, political
res$results$geometry$location
# lat lng
# 1 32.96465 35.496
答案 1 :(得分:1)
所以,我设法找到问题的答案 - 我不得不将我的语言环境改为“英语”,因为它是“希伯来语”。 Sys.setlocale("LC_ALL","English")