diff --git a/codes/carteLelbc3.py.bak b/codes/carteLelbc3.py.bak new file mode 100644 index 0000000..cf57495 --- /dev/null +++ b/codes/carteLelbc3.py.bak @@ -0,0 +1,130 @@ +''' 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="

{}


{}