2017-09-13 5 views
1

私はそれに供給された都市名を取り、それをGoogleマップが理解できるURLクエリ型に入力する少しのRコードを持っています私は緯度と経度を調整します。私の都市名はすべてヘブライ語です!GoogleマップのクエリのURLにヘブライ語をエンコードするのに問題がある

thisサイトで「url encode」を使用して出力を自分のコードに書き込むと、すべてうまく機能します。しかし、私は自分自身に考えました - なぜ私は同じコードでRでそれをエンコードできるときにこのサイトを使用する必要がありますか?

だから私はあること、およびapperantlyみました - URLencodeと私はインターネット上で発見したすべてのパッケージには、それをコードしている異なり私が言及しているウェブサイトより。例:ウェブサイトからצפת

  • 出力:

    %D7%A6%D7%A4%D7%AA 私は、ヘブライ語の都市名をエンコードしたいです。 URLencodeから

  • 出力:

    %F6%F4%FA

は、どのように私は、ウェブサイトが使用する第1の符号化を得ることができますか? (私は無駄に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パッケージを使用して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

あなたの答えをありがとう - 私はgooglewayパッケージについて最初に知りませんでした。私は関数を使いました。とにかく私は自分の問題に対する答えを見つけ出すことができました。私のロケールは "ヘブライ語"なので、 "英語"に変更しなければなりませんでした。 'Sys.setlocale(" LC_ALL "、" English ")' – Corel

+0

@Corel - これは将来誰かを助けるかもしれないので、答えとして追加してください。 – SymbolixAU

関連する問題