Python3でExifデータからGoogle マップ用の文字列を
Google マップで検索するためには、Exifの緯度と経度を10進法で表現する必要があります。
このコードを実行すると、output.txt
ファイルに「Google マップのURLリンク」と「検索用の文字列」が書き込まれます。
使用素材
コチラの画像で作成していきます。
青山学院大学の前あたりだよー。毎週土日にやってる、ファーマーズマーケットだよ。
Pythonのバージョン
Python3.12.1のバージョンを使用しています。
PCにPythonが導入されている前提で話を進めます。
導入がまだの方はこちらで導入してね。
Python
↓ここをクリック
Dockを立ち上げる
command+「スペースキー」で検索窓が出てくる>「ターミナル」と記入>
「自分のPC名〜%」の後ろに記入していきます。
(例)gotoaya@AGMacBook-Air ~ % ←ここの後ろに記入
Pillowをインストール
Pillowを入れた記憶のない方はコチラを記入してインストール
インストール済みの場合はとばしてください。
pip install Pillow
>Enter
Googleマップで場所を特定する
VSコードで書きました。
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
import re
def dms_to_decimal(deg, min, sec, ref):
decimal = float(deg) + float(min) / 60 + float(sec) / 3600
return decimal if ref in ['N', 'E'] else -decimal
# 画像ファイルを開く
im = Image.open('test.jpg')
# EXIF情報を得る
exif = im._getexif()
# 出力先のファイルを開く(新しく作成するか、既存のものを上書き)
with open('output.txt', 'w') as output_file:
# GPS情報が存在する場合のみ処理
if exif and 34853 in exif:
gps_info = exif[34853] # GPS情報のタグIDは34853
latitude = gps_info.get(2) # GPSLatitudeのタグIDは2
longitude = gps_info.get(4) # GPSLongitudeのタグIDは4
if latitude and longitude:
# 数値に変換
lat_deg, lat_min, lat_sec = [float(val) for val in latitude]
lon_deg, lon_min, lon_sec = [float(val) for val in longitude]
lat_ref = gps_info.get(1, 'N') # GPSLatitudeRefのタグIDは1
lon_ref = gps_info.get(3, 'E') # GPSLongitudeRefのタグIDは3
# Google マップの検索用の文字列を作成
search_query = f"{dms_to_decimal(lat_deg, lat_min, lat_sec, lat_ref)},{dms_to_decimal(lon_deg, lon_min, lon_sec, lon_ref)}"
# 数値に変換してから文字列に変換し、f-stringを使用
google_maps_link = f"https://www.google.com/maps/place/{lat_deg}°{lat_min}'{lat_sec:.2f}\"{lat_ref}+{lon_deg}°{lon_min}'{lon_sec:.2f}\"{lon_ref}"
# 出力ファイルに書き込み
output_file.write(f"Google Maps Link: {google_maps_link}\n")
output_file.write(f"Google マップで検索するための文字列: {search_query}\n")
print("Google Maps Linkと検索用文字列をoutput.txtに保存しました。")
else:
print("GPSLatitudeとGPSLongitudeが存在しないか、不正な値です。")
else:
print("GPS情報が存在しません。")
※画像データはtest.jpg、出力ファイルは、Output .txt。
Pythonの拡張子で保存
Pythonの拡張子(.py)で保存して画像と同じフォルダに入れる。
一つのフォルダに動画と.pyコードを格納
今回は「test11」という名前のフォルダに格納しました
Dockを立ち上げる
command+「スペースキー」で検索窓が出てくる>「ターミナル」と記入>
「自分のPC名〜%」の後ろに記入していきます。
(例)gotoaya@AGMacBook-Air ~ % ←ここの後ろに記入
読み込み場所を指定する
cd␣全部格納した、ディレクトリーを記入
cd ディレクトリーを記入
>Enter
cdの後ろにスペースを入れないとダメピヨ!
※フォルダーのディレクトリーが分からない時は、フォルダーをターミナルにドラックすると表示されるよ。
「Python ファイル名」を記入して「Enter」
Python␣読み込むファイル名
Python 読み込むファイル名
>Enter
フォルダにデータが格納されます
「output.txt」のフォルダが作成されました。
格納された「output.txt」の中はこのように書かれてます。
Google Mapsで検索
Google Maps Link: https://www.google.com/maps/place/35.0°39.0’42.56″N+139.0°42.0’30.31″E
でコチラのページに来ました
Google マップで検索するための文字列:
35.66182222222222,139.70841944444444
これをコピーしてGoogleマップに貼り付けることで、指定された位置を検索できます。
コメント