Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

写真のexifから緯度・経度を取得して地図上にマークする

写真のexifから緯度・経度を取得する の続きで、写真のexifから取得した緯度・経度を地図上にマークします。モジュールfoliumを使用します。 その際、緯度・経度はそれぞれ小数点で与えるため、度分秒から換算します。
北緯(35度5分32.29秒)→35+5÷60+32.29÷3600
東経(139度4分47.44秒)→139+4÷60+47.44÷3600

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • folium 0.10.0
準備

foliumをインストールします。Anaconda Promptにてpipインストールします。

pip install folium

スマホで撮影したこちらの写真を使います。撮影場所は静岡県熱海市の港です。 f:id:T_A_T:20191007202058j:plain

コード
from PIL import Image
import folium

img = Image.open('atami_cat.jpg')

exif = img._getexif() # EXIF情報を得る
# idが34853(GPS情報)の場合valueより必要な情報を得る
for id,value in exif.items():
    if id==34853: 
        N1 = value[2][0][0]
        N2 = value[2][1][0]
        N3 = value[2][2][0]/100
        E1 = value[4][0][0]
        E2 = value[4][1][0]
        E3 = value[4][2][0]/100

latitude = N1+N2/60+N3/3600 #緯度の小数点表示
longitude = E1+E2/60+E3/3600 #経度の小数点表示

photo_map = folium.Map(
    location=[latitude,longitude], #地図中央の緯度、経度
    zoom_start=20) #地図の縮尺
# マーカーを追加
folium.Marker(location=[latitude,longitude], popup='撮影場所').add_to(photo_map)
# 地図を保存
photo_map.save('photo_map.html')
実行結果

撮影場所がマークされた地図がhtml形式で保存されます。
f:id:T_A_T:20191008191757p:plain

以下のサイトを参考にさせていただきました

folium 事始め
け日記>>Python: foliumでJupyter Notebookに地図を描画する

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村