Créer une carte umap avec des photos géotaggées
Aller à la navigation
Aller à la recherche
umap, Piwigo, cela permet de faire des choses amusantes, et en particulier une carte sur laquelle apparaissent des photos là où elles ont été prises.
Cela méritera quelques explications mais voici le script utilisé (généré par ChatGPT en quelques itérations) pour créer les données à charger dans umap, cf. ci-dessous.
Et une illustration du résultat dans une carte umap, https://umap.openstreetmap.fr/fr/map/au-gre-du-vent-2023_1025182#8/45.543/3.296
from PIL import Image from PIL.ExifTags import TAGS import os def convert_gps_to_decimal(gps_data): lat_deg, lat_min, lat_sec = gps_data[2] lon_deg, lon_min, lon_sec = gps_data[4] lat = lat_deg + lat_min / 60.0 + lat_sec / 3600.0 lon = lon_deg + lon_min / 60.0 + lon_sec / 3600.0 # Ajuster en fonction de la direction (N, S, E, W) lat = lat if gps_data[1] == 'N' else -lat lon = lon if gps_data[3] == 'E' else -lon return lat, lon def create_image_url(chemin_base, fichier): # Ajouter le suffixe "-xx" juste avant l'extension .jpg nom_fichier, extension = os.path.splitext(fichier) fichier_avec_suffixe = f"{nom_fichier}-xx{extension}" # Construire l'URL complète avec le nom du fichier image_url = f"{{{{http://{chemin_base}/{fichier_avec_suffixe}}}}}" return image_url def extract_and_convert_gps_info(chemin_photos, chemin_base): for fichier in os.listdir(chemin_photos): chemin_complet = os.path.join(chemin_photos, fichier) try: with Image.open(chemin_complet) as img: exif_data = img._getexif() if exif_data is not None: # Extraire les données GPS gps_info = {TAGS[key]: exif_data[key] for key in exif_data.keys() if key in TAGS and TAGS[key] == 'GPSInfo'} if gps_info: # Convertir les coordonnées GPS en décimal coordinates_decimal = convert_gps_to_decimal(gps_info['GPSInfo']) if coordinates_decimal: # Créer l'URL avec le nom du fichier image_url = create_image_url(chemin_base, fichier) # Imprimer le résultat sous forme de chaîne result_str = f"{image_url},{coordinates_decimal[0]},{coordinates_decimal[1]}" print(result_str) except Exception as e: print(f"Erreur lors de l'extraction des données Exif pour {chemin_complet}: {str(e)}") # Chemin du répertoire contenant les photos chemin_photos = r'\\192.168.0.28\piwigo_share2\2023\07\30' # Chemin de base pour la création de l'URL chemin_base = 'piwigo38.mooo.com/i.php?/upload/2023/07/30' # Appeler la fonction pour extraire et convertir les informations GPS extract_and_convert_gps_info(chemin_photos, chemin_base)