LoginSignup
1
1

More than 1 year has passed since last update.

Flickrの写真を使って写真の位置情報を可視化してみた

Posted at

はじめに

SNSにはたくさんの写真がアップロードされています。地図を使って可視化することが好きな僕は、アップロードされている写真の位置情報を使って地図に可視化できないかなと思いました。調べてみると位置情報の取得が簡単にできるサービスでFlickrというものがありました。今回はFlickrに投稿されている写真を使って、その写真の位置情報をもとに地図に可視化してみたいと思います。

Flickrの写真を使って写真の位置情報を可視化してみた

実現したいこと

今回はFlickrのAPIを扱うPythonライブラいを使って写真の情報を取得し、そのデータをLeafletをPythonで使えるようにしたPythonライブラリのfoliumを使って可視化していこうと思います。地図上に写真の位置情報をもとにピンをたて、ピンには実際のその写真が見えるようにします。

Flickrとは

Flickrとは、写真を共有することのできるサービスです。Instagramのようなサービスですね。今回はこのFlickrのAPIを使って写真の情報を取得しました。

Flickr APIの利用方法については、以下の記事を参考にしました。

実際のコード

Flickr APIを利用して写真の情報を取得方法については、以下の記事と公式ドキュメントを参考にしました。

# 必要なライブラリ
from flickrapi import FlickrAPI
import folium
import json
import pandas as pd

# Flickr APIを利用するための情報を記載
key = "XXXXXXXXXXXXXXXXXXX"
secret = "XXXXXXXXXXXXXXXXXX"


# Flickr APIを使って写真の情報を取得
# 今回は写真のタイトルに"fish"が関連しているものを500件を上限に取得
# 位置情報は、extrasでgeoを指定
flickr = FlickrAPI(key, secret, format='parsed-json')

result  = flickr.photos.search(
    text = 'fish',
    per_page = 500,
    media = 'photos',
    sort = 'relevance',
    safe_seach = 1,
    extras = 'url_q, licence, geo'
)

photos = result['photos']['photo']

# 地図の中心を、写真に保存されている緯度経度の平均を出すため
lat_sum, lon_sum = 0,0

for photo in photos:
  lat_sum += float(photo['latitude'])
  lon_sum += float(photo['longitude'])

lat_mean = lat_sum / len(photos)
lon_mean = lon_sum / len(photos)

# 元となる地図を作成
map = folium.Map(location=[lat_mean, lon_mean], zoom_start=3)

# 写真に保存されている位置にピンをたて、そのピンに写真を載せる
for photo in photos:
  folium.Marker(
      location=[float(photo['latitude']), float(photo['longitude'])],
      popup="<p>{}<br /><img src='{}'</p>".format(photo['title'],photo['url_q'])
  ).add_to(map)

# 地図を描画
map

結果

ピンをプロットした地図は、以下のような感じです。
スクリーンショット 2022-01-31 22.06.36.png

ピンをクリックすると写真が表示されます。
スクリーンショット 2022-01-31 22.06.46.png

さいごに

今回はFlickrに投稿されている写真の位置情報をもとに地図に可視化してみました。写真の位置情報の利用は色々な使い道があると思うので、今度は他の使い方を検討してみたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1