La photo de monsieur X
Ce programme affiche une carte, centrée sur la position où a été prise la photo de monsieur X
Simulation : Et si on faisait un programme...
Rendez-vous dans EduPython :
(re) téléchargez cette photo[1]
Dans Edupython, écrire ce programme ( largement commenté)
Enregistrez-le dans un dossier qui doit contenir la photo téléchargée
Exécutez-le
1
# Créé par vstep, le 25/01/2019 en Python 3.42
#chargement des bibliothèques PIL et webbrowser3
from PIL import Image
4
import webbrowser
5
#chargement de l'image ( même dossier que le programme)6
im = Image.open( 'photo.jpg' )
7
'''8
# chargement des données exif, c'est un dictionnaire: les données GPS sont à la clé 348539
# On peut le voir avec l'aide de l'explorateur de variable de l'ide python10
'''11
exif_data = im._getexif()
12
'''13
#chargement des données de la clé 3485314
# on crée un dictionnaire pour contenir les données GPS15
'''16
try:17
18
test={}19
test=exif_data[34853]
20
#vérification21
print(test)
22
'''23
# explorer la variable test pour voir comment elle est structurée24
# ce dico contient des listes25
# la latitude est à la clé 2 qui est une liste de tuples26
# on voit : ((47, 1), (37, 1), (29107360, 1000000)) qui correspond à27
# 47° 37' et 29,107360''28
# le 1er tuple ( degré, 1) le second ( minute,1) le 3ème ( seconde,1000000)29
# on divise le 1er par le second pour avoir le nombre sous forme décimale30
# et on transforme le tout en degré31
'''32
lat_deg=test[2][0][0]/test[2][0][1]
33
lat_min=test[2][1][0]/test[2][1][1]/60
34
lat_sec=test[2][2][0]/test[2][2][1]/3600
35
lat=lat_deg+lat_min+lat_sec
36
print(lat)
37
# idem pour la longitude38
lon_deg=test[4][0][0]/test[4][0][1]
39
lon_min=test[4][1][0]/test[4][1][1]/60
40
lon_sec=test[4][2][0]/test[4][2][1]/3600
41
lon=lon_deg+lon_min+lon_sec
42
print(lon)
43
'''44
# si on est à l'ouest du méridien de greenwich il faut changer le signe de la logitude45
# c'est à la clé 3 que l'on a cette position46
'''47
if test[3]=='W':
48
lon=-lon
49
# on affiche le tout dans openstreetmap50
zoom='18'
51
webbrowser.open('https://www.openstreetmap.org/note/new?lat='+str(lat)+'&lon='+str(lon)+'#map='+zoom+'/'+str(lat)+'/'+str(lon))
52
except:53
print("une erreur sans doute")
Travail à réaliser :
Testez ce programme avec des photos prises avec votre smartphone
Pour les plus courageux :
Ce programme fonctionne-t-il pour une photo prise dans l'hémisphère sud ?
Si non, modifiez le programme pour qu'il en tienne compte...






