2017-09-13 86 views
1

我有一點R代碼需要提供給我的城市名稱,然後將其輸入到Google地圖可以理解的URL查詢類型中,我是緯度和經度座標。我的城市名都是用希伯來語!無法將希伯來編碼到谷歌地圖的url中查詢

當我使用「網址編碼」在this網站,然後把輸出到我的代碼一切正常。但後來我想到了自己 - 爲什麼我需要使用這個網站,當我可以用相同的代碼R編碼它。

所以我試了一下,並突出顯示 - URLencode和我發現在互聯網上的所有包都編碼它比我提到的網站。例如: 我想編碼希伯來城市名稱:從網站צפת

  • 輸出:

    %D7%A6%D7%A4%D7%AA。從URLencode

    輸出
  • %F6%F4%FA

我怎樣才能獲得該網站使用的第一編碼? (我曾嘗試使用RCurlurltools,都無濟於事。)

將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) 
} 

回答

1

所以,我設法找到了我的問題的答案 - 我不得不將我的語言環境更改爲「英語」,因爲它是在「希伯來語」上。 Sys.setlocale("LC_ALL","English")

1

我沒有看到這個問題你與URLencode()描述:

location <- "צפת" 
URLencode(location) 
# [1] "%D7%A6%D7%A4%D7%AA" 

而且用我googleway包查詢到谷歌工作

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

感謝您的回答 - 首先我不瞭解googleway軟件包。我使用了一個函數。無論如何,我設法找到我的問題的答案 - 我不得不改變我的語言環境爲「英語」,因爲它是在「希伯來語」。 'Sys.setlocale(「LC_ALL」,「English」)' – Corel

+0

@Corel - 您應該添加該答案作爲答案,因爲它可能會在未來幫助其他人。 – SymbolixAU