Localisation, cartographie et mobilité

La photo de monsieur X

Ce programme affiche une carte, centrée sur la position où a été prise la photo de monsieur X

SimulationEt 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.4
2
#chargement des bibliothèques PIL et webbrowser
3
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é 34853
9
# On peut le voir avec l'aide de l'explorateur de variable de l'ide python
10
'''
11
exif_data = im._getexif()
12
'''
13
#chargement des données de la clé 34853
14
# on crée un dictionnaire pour contenir les données GPS
15
'''
16
try:
17
18
    test={}
19
    test=exif_data[34853]
20
    #vérification
21
    print(test)
22
    '''
23
    # explorer la variable test pour voir comment elle est structurée
24
    # ce dico contient des listes
25
    # la latitude est à la clé 2 qui est une liste de tuples
26
    # 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écimale
30
    # 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 longitude
38
    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 logitude
45
    # c'est à la clé 3 que l'on a cette position
46
    '''
47
    if test[3]=='W':
48
        lon=-lon
49
    # on affiche le tout dans openstreetmap
50
    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...

  1. cette photo
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)