geocode
のggmaps
ライブラリのR
関数を使用して、特定の場所の座標を取得しようとしています。これまでは問題なく機能を使用することができました。
私が直面している問題は、1日の制限を2,500
から100,000
に増やしたいということです。公式のGoogle ドキュメント によると、プロジェクトで請求を有効にすると、これはすぐに可能になるとのことです。このプロセスを進めると、Google Developers Console
はパーソナライズされたAPIキーを提供します。
ただし、geocode
関数には、このパーソナライズされたAPIキーを入力するオプションがありません。代わりに、client
(ビジネスユーザーのクライアントID)とsignature
(ビジネスユーザーの署名)を要求します。これは、 Google Maps API for Work 顧客ができる方法です。 APIにアクセスします。これもオプションだと思いますが、Google Maps API for Workは大企業のアカウント向けに設計されているようであるため、これは非常にユースケースのようです。
年間の契約購入に基づいて、24時間あたり100,000リクエストから始まる1日あたりの割り当て。
つまり、私の質問はこれに要約されます。geocode
のggmaps
libraryのR
関数を使用して、Google Maps Geocoding APIにpingを実行できますか?
この質問に答えるために(geocode
ライブラリからの)既存のggmap
関数を使用する方法が見つからなかったので、(getURL
ライブラリからの)既存のRCurl
関数とfromJSON
を使用して自分でこれを行う新しい関数を作成しました。関数(RJSONIO
ライブラリから)。
新しい関数を作成します。
_library(RJSONIO)
library(RCurl)
getGeoData <- function(location){
location <- gsub(' ','+',location)
geo_data <- getURL(paste("https://maps.googleapis.com/maps/api/geocode/json?address=",location,"&key=**[YOUR GOOGLE API KEY HERE]**", sep=""))
raw_data_2 <- fromJSON(geo_data)
return(raw_data_2)
}
_
テスト:getGeoData("San Francisco")
これにより、geocode("San Francisco")
によって生成されたリストとほぼ(完全ではありませんが)同じ正確な形式の同じデータを含むリストが得られます。
パッケージを作成しました googleway APIキーを指定できるGoogleマップAPIにアクセスします。
例えば
library(googleway)
key <- "your_api_key"
google_geocode(address = "San Francisco",
key = key)
# $results
# address_components
# 1 San Francisco, San Francisco County, California, United States, SF, San Francisco County, CA, US, locality, political, administrative_area_level_2, political, administrative_area_level_1, political, country, political
# formatted_address geometry.bounds.northeast.lat geometry.bounds.northeast.lng geometry.bounds.southwest.lat
# 1 San Francisco, CA, USA 37.92977 -122.3279 37.69313
# geometry.bounds.southwest.lng geometry.location.lat geometry.location.lng geometry.location_type
# 1 -123.1661 37.77493 -122.4194 APPROXIMATE
# geometry.viewport.northeast.lat geometry.viewport.northeast.lng geometry.viewport.southwest.lat
# 1 37.812 -122.3482 37.7034
# geometry.viewport.southwest.lng place_id types
# 1 -122.527 ChIJIQBpAG2ahYAR_6128GcTUEo locality, political
#
# $status
# [1] "OK"
ggmap
バージョン2.7以降(12月13日現在、Cranではまだ利用できませんが、devtools::install_github("dkahle/ggmap")
でインストールできます。単に、register_google(key = 'LONG KEY STRING')
を実行してから実行する必要があります。 geocode
やmutate_geocode
などの任意のggmap関数を呼び出して、APIキーを使用できます。
これをありがとう!それは私を大いに助けてくれました。あなたの解決策はかなり具体的であるため、私があなたの関数に対して行った適応を含めたかったのです。 raw_data
とgeo_data_list
が未定義であるため、バグが発生しました。これらはあなたの地域の環境に固有のものだと思います。
私にとって、場所を入力して緯度を返すと、lonはこれで動作しました:
getGeoData <- function(location, api_key){
location <- gsub(' ','+',location)
geo_data <- getURL(paste("https://maps.googleapis.com/maps/api/geocode/json?address=",location,sprintf("&key=%s",api_key), sep=""))
geo_data <- fromJSON(geo_data)
return(geo_data$results[[1]]$geometry$location)
}
Returnステートメントを変更してgeo_data
にインデックスを付け、latlon以外のさまざまなプロパティを取得することもできます。
これが誰かを助けることを願っています。
R