pythonでFlickrとPanoramioから位置情報付き画像を取得する
FlickrやPanoramioといった画像投稿サイトには位置情報付きの画像が大量にアップロードされている。
この情報を分析することでどこで多くの写真が撮影されているかなどが分かる。
さらに画像に付けられたタグをテキストマイニングすることでその場所がどのような場所なのかを自動的に推測することができる。
と言う事で、pythonからAPIを用いて画像、位置情報、タグを取得する方法をまとめてみた。
Flickr
- Flickrに会員登録する(googleアカウントも使える)
- アプリを登録することでAPI keyを手に入れる
- flickr.photos.searchを用いて画像を取得する。このとき、撮影された地域、グループID、ジオタグがついてるかなどの指定が出来る
- flickr.photos.geo.getLLocationを用いてジオタグを取得する。緯度、経度、GPSの正確さが得られる
- flickr.tags.getListPhoto.htmlを用いてタグ情報を取得する
以上で、あるエリア内で撮影された画像の、緯度経度情報、タグ情報を得ることが出来たりする。
APIはpythonで以下のようにして使う。
args = { 'method' : 'flickr.photos.search', 'api_key' : 'API keyを入れる', 'per_page': '100', # 1回に取得する画像枚数 <= 500 'sort' : 'date-posted-desc', 'format' : 'json', 'nojsoncallback' : 1, 'place_id' : '9cw_d0JQV7obLp8N5A', # 京都市 IDはflickr.photos.geo.getLocationで見れる 'group_id' : '84769930@N00', # kyoto group サイトで見れる # 'text' : text, # 検索ワード 'page' : str(page), # ページ 連続で取得するならこれをインクリメントする 'extras' : "date_upload", 'has_geo' : 1 # ジオタグがついているか } url = "http://api.flickr.com/services/rest/?%s"%(urllib.urlencode(args) ) photos = simplejson.loads( urllib.urlopen(url).readline() )
Panoramio
- Panoramioからの写真収集 | Miyabiarts.net参考
- こちらは緯度経度情報もすぐ得られる
- タグは無理やり取得する
まとめ
自分用メモなのでわかりにくい。
どちらも遅いので画像を大量に手に入れるには気長に待つ必要がある。