Rでコマンド:Flickr APIからデータを取得するコマンド例


写真の共有サイトFlickrからAPIを利用してデータを取得するコマンド例です。写真の位置データを取得し地図上にポイントで示す内容です。

なお、地図の描写には「ggmap」パッケージ、画像の表示には「magick」パッケージを利用しています。

 ・Rで解析:GoogleMapやStamenMapを利用「ggmap」パッケージ
  https://www.karada-good.net/analyticsr/r-216
 ・Rで解析:画像操作の進化「magick」パッケージ
  https://www.karada-good.net/analyticsr/r-531

実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.4で確認しています。


Flickr APIの取得

Yahoo IDが必要です。もしIDを持っていなくともFlickrアカウントの取得過程で取得を促されます。Flickr APIは非常に簡単に取得ができます。Flickrアカウントを取得後、画像赤枠内を選択し、表示される項目を入力するだけです。

・Flickr API Servics
 https://www.flickr.com/services/api/


実行コマンド

詳細はコメント、各パッケージのヘルプを確認してください。

#パッケージのインストール
install.packages("ggmap")
install.packages("RCurl")
install.packages("jsonlite")
install.packages("stringi")

#パッケージの読み込み
library("ggmap")
library("RCurl")
library("jsonlite")
library("stringi")

#flickrで取得したAPIKeyを設定
APIKey <- "APIkeyを入力" #ggmapパッケージを利用して緯度経度を取得 #stringi:stri_encodeコマンドを利用すると日本語でもエラーが出ません。 LonLatData <- geocode(stri_encode("京都", "", "utf-8"), source = "google") #当初公開コマンド #LonLatData <- geocode("kyoto", source = "google") #緯度経度の範囲を設定 LonLatDataAra <- paste(c(LonLatData - .2, LonLatData + .2), collapse = ",") #API用のURLを作成 #LonLatDataAraの範囲で緯度経度データを持つ情報を取得する GetData <- paste0("https://www.flickr.com/services/rest/?method=flickr.photos.search&format=json&nojsoncallback=1&api_key=", APIKey, "&extras=geo&bbox=", LonLatDataAra, "&per_page=500") #データを取得:RCurlパッケージ:getURLコマンド raw_data <- getURL(GetData, ssl.verifypeer = FALSE) #JSONデータをオブジェクト化:jsonliteパッケージ:fromJSONコマンド data <- fromJSON(raw_data) #必要なデータを抽出 #データ構造が気になる方はstr(data)で確認してください MasterData <- data[1]$photos$photo #MasterDataの構造確認 str(MasterData) 'data.frame': 250 obs. of 19 variables: $ id : chr "32519776786" "32519150966" "32432952621" "31711590894" ... $ owner : chr "40761615@N03" "60527064@N00" "51035608895@N01" "51035608895@N01" ... $ secret : chr "cc9c4ca7bc" "babfe67ab9" "dd43113ae3" "25ce80c1d2" ... $ server : chr "270" "399" "386" "539" ... $ farm : int 1 1 1 1 1 1 1 1 1 1 ... $ title : chr "This morning / January 28, 2017 at09:58AM JST" "Rooftop in detail, Rokudo Chinnou-ji" "2771." "2773." ... $ ispublic : int 1 1 1 1 1 1 1 1 1 1 ... $ isfriend : int 0 0 0 0 0 0 0 0 0 0 ... $ isfamily : int 0 0 0 0 0 0 0 0 0 0 ... $ latitude : chr "34.977272" "34.997932" "35.038994" "35.032011" ... $ longitude : chr "135.772263" "135.775383" "135.728916" "135.732008" ... $ accuracy : chr "16" "16" "16" "16" ... $ context : int 0 0 0 0 0 0 0 0 0 0 ... $ place_id : chr "9cw_d0JQV7obLp8N5A" "9cw_d0JQV7obLp8N5A" "9cw_d0JQV7obLp8N5A" "9cw_d0JQV7obLp8N5A" ... $ woeid : chr "15015372" "15015372" "15015372" "15015372" ... $ geo_is_family : int 0 0 0 0 0 0 0 0 0 0 ... $ geo_is_friend : int 0 0 0 0 0 0 0 0 0 0 ... $ geo_is_contact: int 0 0 0 0 0 0 0 0 0 0 ... $ geo_is_public : int 1 1 1 1 1 1 1 1 1 1 #Mapデータを取得:ggmapパッケージ;get_googlemapコマンド GetMap <- get_googlemap(center = c(lon = LonLatData[[1]], lat = LonLatData[[2]]), zoom = 13) #プロット:ggmapパッケージ;ggmapコマンド,ggplot2パッケージ:geom_pointコマンド ggmap(GetMap) + geom_point(data = MasterData, aes(x = type.convert(MasterData[, 11]), y = type.convert(MasterData[, 10])), size = 2, colour = "red") Warning message: Removed 152 rows containing missing values (geom_point). ###参考_写真の取得##### #https://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}.jpg #install.packages("magick") library("magick") #画像の取得 GrtPict <- getURLContent(paste0("https://farm", MasterData[3, 5], ".staticflickr.com/", MasterData[3, 4], "/", MasterData[3, 1], "_", MasterData[3, 3], ".jpg"), ssl.verifypeer = FALSE) #画像の表示 image_browse(image_read(GrtPict)) [/code]



実行結果

・get_googlemapコマンド

・参考_写真の取得
 


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

関連コンテンツ


スポンサードリンク