Python3でExifデータからGoogle マップ用の文字列を
Google マップで検索するためには、Exifの緯度と経度を10進法で表現する必要があります。
このコードを実行すると、output.txt
ファイルに「Google マップのURLリンク」と「検索用の文字列」が書き込まれます。
使用素材
コチラの画像で作成していきます。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/test-1.jpg?resize=1000%2C750&ssl=1)
![piyo](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2022/02/siro-ピクセル-31100pxアートボード-1.jpg?w=1256&ssl=1)
青山学院大学の前あたりだよー。毎週土日にやってる、ファーマーズマーケットだよ。
Pythonのバージョン
Python3.12.1のバージョンを使用しています。
PCにPythonが導入されている前提で話を進めます。
導入がまだの方はこちらで導入してね。
Python
↓ここをクリック
Dockを立ち上げる
command+「スペースキー」で検索窓が出てくる>「ターミナル」と記入>
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-03-14.35.13.png?resize=1000%2C386&ssl=1)
「自分のPC名〜%」の後ろに記入していきます。
(例)gotoaya@AGMacBook-Air ~ % ←ここの後ろに記入
Pillowをインストール
Pillowを入れた記憶のない方はコチラを記入してインストール
![piyo](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2022/02/siro-ピクセル-31100pxアートボード-1.jpg?w=1256&ssl=1)
インストール済みの場合はとばしてください。
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。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/image-25.jpg?resize=1000%2C674&ssl=1)
Pythonの拡張子で保存
Pythonの拡張子(.py)で保存して画像と同じフォルダに入れる。
一つのフォルダに動画と.pyコードを格納
今回は「test11」という名前のフォルダに格納しました
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-14-1.15.13.png?resize=852%2C562&ssl=1)
Dockを立ち上げる
command+「スペースキー」で検索窓が出てくる>「ターミナル」と記入>
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-03-14.35.13.png?resize=1000%2C386&ssl=1)
「自分のPC名〜%」の後ろに記入していきます。
(例)gotoaya@AGMacBook-Air ~ % ←ここの後ろに記入
読み込み場所を指定する
cd␣全部格納した、ディレクトリーを記入
cd ディレクトリーを記入
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-14-1.22.46.png?resize=970%2C184&ssl=1)
>Enter
![piyo](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2022/02/siro-ピクセル-31100pxアートボード-1.jpg?w=1256&ssl=1)
cdの後ろにスペースを入れないとダメピヨ!
※フォルダーのディレクトリーが分からない時は、フォルダーをターミナルにドラックすると表示されるよ。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-14-1.22.59.png?resize=972%2C206&ssl=1)
「Python ファイル名」を記入して「Enter」
Python␣読み込むファイル名
Python 読み込むファイル名
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-14-1.23.19.png?resize=996%2C210&ssl=1)
>Enter
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-14-1.23.32.png?resize=994%2C264&ssl=1)
フォルダにデータが格納されます
「output.txt」のフォルダが作成されました。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/image-25.png?resize=850%2C560&ssl=1)
格納された「output.txt」の中はこのように書かれてます。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/スクリーンショット-2024-01-13-22.50.39.png?resize=782%2C242&ssl=1)
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
でコチラのページに来ました
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/2024-01-13-22.52.06.jpg?resize=1000%2C685&ssl=1)
Google マップで検索するための文字列:
35.66182222222222,139.70841944444444
これをコピーしてGoogleマップに貼り付けることで、指定された位置を検索できます。
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/2024-01-13-22.52.38.jpg?resize=1000%2C678&ssl=1)
完成
![](https://i0.wp.com/piyo-piyo-piyo.com/wp-content/uploads/2024/01/2024-01-13-22.53.20.jpg?resize=1000%2C690&ssl=1)
コメント