''' Programme de placement de tags images sur un fond OpenStreetMap On place des images géotaguées dans un répertoire Le programme en extrait les coordonnées GPS et la date Il crée des tags avec comme titre le nom des fichiers et la date et les place sur le fond de carte aux coordonnées GPS ''' #importation des module import os(*@\label{ligne:lemoduleos}@*) import folium(*@\label{ligne:modulefolium}@*) import exifread(*@\label{ligne:exifread}@*) def lalatitude(ref,GPSLatitude): ''' Convertit les coordonnées GPS EXIF en degrés à virgule flottante :param ref, GPSLongitude: :type ref: string, GPSLongitude: exifread.utils.Ratio :rtype: float ''' d = GPSLatitude.values[0].num(*@\label{ligne:num1}@*) m = GPSLatitude.values[1].num s = GPSLatitude.values[2].num(*@\label{ligne:num2}@*) if ref == 'N': latitude = d + (m / 60.) + (s / 3600.) elif ref == 'S': latitude = -1*(d + (m / 60.0) + (s / 3600.0)) else: print('La latitude est fausse !') return latitude def lalongitude(ref,GPSLongitude): ''' Convertit les coordonnées GPS EXIF en degrés à virgule flottante :param ref, GPSLongitude: :type ref: string, GPSLongitude: exifread.utils.Ratio :rtype: float ''' d = GPSLongitude.values[0].num(*@\label{ligne:num3}@*) m = GPSLongitude.values[1].num s = GPSLongitude.values[2].num(*@\label{ligne:num4}@*) if ref == 'W': longitude = -1*(d + (m / 60.0) + (s / 3600.0)) elif ref == 'E': longitude = d + (m / 60.0) + (s / 3600.0) else: print('La longitude est fausse !') return longitude # Récupération du facteur de zoom print('Facteur de zoom (nombre entier) :\n\ 9 : grande zone\n\ 11 : zone\n\ 13 : village ou ville\n\ 16 : petite route') facteurZoom = input('Veuillez entrer le facteur de zoom : ')(*@\label{ligne:input}@*) print('Facteur de zoom : {}'.format(facteurZoom)) # Ouverture de l'image en mode de lecture binaire path = './images/' fichiers=os.listdir(path)(*@\label{ligne:listdir}@*) i = 0 #indice des images(*@\label{ligne:compteurimages}@*) for nom in fichiers:(*@\label{ligne:boucleprincipale}@*) print("{} : {}".format(i,nom)) adresseImage = "./images/"+nom titre = nom.split('.')[0] f = open(adresseImage, 'rb') # Récupération des tags EXIF tags = exifread.process_file(f, details=False) for tag in tags.keys(): if tag in ('GPS GPSLatitudeRef', 'GPS GPSLatitude', 'GPS GPSLongitudeRef', 'GPS GPSLongitude', 'Image ImageDateTime'): latitude = lalatitude(tags['GPS GPSLatitudeRef'].values, tags['GPS GPSLatitude']) longitude = lalongitude(tags['GPS GPSLongitudeRef'].values, tags['GPS GPSLongitude']) date = tags['EXIF DateTimeOriginal'] try:(*@\label{ligne:try1}@*) print("Latitude : {}, longitude : {}, date : {}".format(latitude, longitude, date))(*@\label{ligne:try2}@*) except NameError:(*@\label{ligne:except}@*) print('Fichier sans données GPS : ',nom) else:(*@\label{ligne:else}@*) #création de l'objet Python carte, centrée sur les coordonnées #latitude et longitude de la première image if i == 0: carte = folium.Map(location=[latitude, longitude],zoom_start=facteurZoom)(*@\label{ligne:carte}@*) #création d'un marqueur folium.Marker([latitude, longitude],(*@\label{ligne:markgoutte}@*) popup="

{}


{}