Cartographie TP 3

Écrire votre nom

ici

Obtenir les données de géolocalisation d'une photo

Voici une photo :

photo1

Téléchargez la, et faites afficher ses propriétés (clic droit). Vous devriez voir les coordonnées GPS de l'endroit où a été prise la photo

Notez ci-dessous les coordonnées GPS


Réponse:


Les unités

Les coordonnées GPS sont en degrés : minutes et secondes

Pour la latitude on lit : 33;52;31.658935546875

Pour exploiter ces données il faut les convertir en degré décimal :

C'est à dire : latitude = 33+52/60+31.658935546875/3600

In [3]:
# ce qui donne :
latitude = 33+52/60+31.658935546875/3600
print(latitude)
33.87546081542969

À faire:

Déterminer la valeur de la longitude en degré décimal

In [0]:
# Écrire le calcul ici

Un détail ?

Comment faire pour savoir s'il s'agit de latitude Nord ou Sud et de longitude Est ou Ouest ?

Nous avons 4 cas possibles :

  • Cas 1: ( Nord et Est )
    • lat = 33.87546081542969
    • lon = 116.3016196017795
  • Cas 2: ( Nord et ouest )
    • lat = 33.87546081542969
    • lon = -116.3016196017795
  • Cas 3: ( Sud et Est )
    • lat = -33.87546081542969
    • lon = 116.3016196017795
  • Cas 4: ( Sud et ouest )
    • lat = -33.87546081542969
    • lon = -116.3016196017795

Testez ces 4 cas sur le web ( Géoportail ou autres...)

Avez vous une idée du lieu de cette photo ?


Réponse:


Comment régler ce détail

Ces informations sont contenues dans la photo, il suffit pour cela de faire afficher les données EXIFS de cette photo.

Sur le Web, on trouve des sites qui permettent de le faire

Faites afficher les données Exifs de cette photo sur ce site par exemple

Donnez les coordonnées complète de la photo :


Réponse:


Un programme

Ce programme affiche les coordonnées du lieu où la photo a été prise:

Les bibliothèques utilisées sont :

  • pilow (PIL)pour la lecture des données EXIFS
  • requests pour l'import depuis une url
  • io pour la lecture de fichier image
In [0]:
#pip install pillow
In [1]:
#chargement des bibliothèques 
from PIL import Image
import requests
from io import BytesIO

# chargement de la photo se trouvant à l'adresse donnée
url=" https://isn-icn-ljm.pagesperso-orange.fr/photo/photo1.jpg"
response = requests.get(url)
im = Image.open(BytesIO(response.content))

# Si la photo est dans le même dossier que le programme
#chargement de l'image ( même dossier que le programme)
#im = Image.open( 'photo.jpg' )

# chargement des données exif, c'est un dictionnaire les données gps sont à la clé 34853
# repéré à l'aide de l'explorateur de variable de l'ide python
exif_data = im._getexif()
#chargement des données de la clé 34853
# on crée un dictionnaire pour contenir les données GPS
test={}
test=exif_data[34853]
# eplorer la variable test pour savoir comment elle est structurée
print(test)

# ce dico contient les données recherchées
# la latitude est à la clé 2 qui est un tuple
# la longitude à l clé 4
# il faut les transformer en nombres (float)

# récupération de la latitude
lat_deg=float(test[2][0])
lat_min=float(test[2][1])/60
lat_sec=float(test[2][2])/3600
lat=lat_deg+lat_min+lat_sec 
# signe en fonction de Nord /Sud
if test[1]=='S':
    lat=-lat
print(lat)
# récupération de la longitude
lon_deg=float(test[4][0])
lon_min=float(test[4][1])/60
lon_sec=float(test[4][2])/3600
lon=lon_deg+lon_min+lon_sec
# signe en fonction de Est/Ouest
if test[3]=='W':
    lon=-lon
print(lon)
{0: b'\x02\x00\x00\x00', 1: 'N', 2: (33.0, 52.0, 31.658935546875), 3: 'W', 4: (116.0, 18.0, 5.83056640625), 5: b'\x00', 6: 304.0, 18: 'WGS-84'}
33.87546081542969
-116.3016196017795

À faire :

En vous aidant des TP précédents et du programme ci-dessus, faites afficher sur une carte un marqueur sur le lieu où la photo a été prise

In [ ]:
#Écrire le code ici

À faire:

Reprendre le travail précédent avec cette photo :

l'URL est : https://isn-icn-ljm.pagesperso-orange.fr/photo/IMG1.jpg

photo1

In [0]:
#Écrire le code ici

À faire:

Reprendre le travail précédent avec une photo prise par votre smartphone (autorisez la géolocalisation)

On chargera la photo dans le programme depuis le dossier qui contient ce notebook avec les instructions :

In [ ]:
#chargement des bibliothèques 
from PIL import Image


# Si la photo est dans le même dossier que le programme
#chargement de l'image ( même dossier que le programme)
im = Image.open( 'photo1.jpg' )

# chargement des données exif, c'est un dictionnaire les données gps sont à la clé 34853
# repéré à l'aide de l'explorateur de variable de l'ide python
exif_data = im._getexif()
#chargement des données de la clé 34853
# on crée un dictionnaire pour contenir les données GPS
test={}
test=exif_data[34853]
# eplorer la variable test pour savoir comment elle est structurée
print(test)

Compléter le code ci-dessus pour faire ce travail

In [0]:
#Écrire le code ici


Enregistrez ce travail sous le nom : cartographie_tp_1_votre_nom.ipynb et déposez le là où on vous le dira

Pour enregistrer:

  1. File
  2. Save notebook as
  3. Pour le récupérer cliquez sur le dossier à gauche en haut...
  4. cliquez droit sur le fichier et download

Autre méthode

Dans home sélectionnez le fichier et download

In [0]: