fiche mémo : 2.7. Travailler avec des bibliothèques externes.¶

Importation et utilisation des bibliothèques externes à des fins géographiques.¶

Vincent GODARD - V1 - 27/04/2025¶

Cours Introduction à la programmation¶

Département de géographie - L3 - Université de Paris 8¶

Traduction librement (largement) éloignée de : https://www.kaggle.com/code/colinmorris/working-with-external-libraries

Sources :

Kaggle : https://www.kaggle.com/learn



Téléchargement des documents nécessaires :

Dossier compressé à télécharger => (ici).

Dans ce tutoriel, vous apprendrez ce que sont les importations en Python, vous obtiendrez quelques conseils pour travailler avec des bibliothèques inconnues (et les objets qu'elles renvoient), et mais vous ne découvrirez pas la surcharge définition d'opérateur (operator overloading) restée dans la version anglaise de https://www.kaggle.com/code/colinmorris/working-with-external-libraries.

1. Importations (Imports)¶¶

Jusqu'ici, nous avons parlé des types et des fonctions intégrés (built-in) au langage.

Mais l'un des atouts majeurs de Python (surtout si vous voulez devenir data scientist) réside dans le grand nombre de bibliothèques personnalisées et de haute qualité qui ont été développées pour lui.

Certaines de ces bibliothèques sont disponibles dans la « bibliothèque standard », ce qui signifie que vous pouvez les trouver partout où vous exécutez Python. D'autres bibliothèques peuvent être facilement ajoutées, même si elles ne sont pas toujours fournies avec Python.

Dans tous les cas, nous accéderons à ce code via les importations.

Nous allons importer une bibliothèque externe pour lire les données GPS (https://fr.wikipedia.org/wiki/Global_Positioning_System) en Python, mais avant cela, nous allons préciser ce que sont ces données.

1.1. Le positionnement par satellites¶

Couramment appelé GPS pour Global Positioning System, ce n'est qu'un des systèmes de positionnement par satellites (https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_positionnement_par_satellites). Il en existe bien d'autres.

Voir :

• http://margaux.ipt.univ-paris8.fr/vgodard/enseigne/teled2/memotele/mem51tel.htm

• http://margaux.ipt.univ-paris8.fr/vgodard/enseigne/teled2/memotele/mem52tel.htm

1.2. Les données GPS¶

Tous les smartphones sont maintenant équipés d'une cartes de réceptions des signaux émis par les système de positionnement par satellites (https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_positionnement_par_satellites) de type GPS. En revanche, tous vos téléphones ne disposent pas forcément d'une application pour exporter les données de vos activités en extérieur.

Le format d'export utilisé ici sera le GPX [https://fr.wikipedia.org/wiki/GPX_(format_de_fichier)].

1.1.1. Applications Android pour exporter des fichiers GPX¶

Si vous ne trouvez pas dans votre téléphone d'applications qui le permette (allez voir dans les applications de santé ou de sport), il existe des applications à télécharger (allez voir sur internet) comme celle de l'IGN (Iphigénie, https://www.iphigen.ie/) ou visorando (https://www.visorando.com/) ou GPX Viewer qui vont vous permettre un export des traces et points dans plusieurs formats dont le gpx.

1.1.2. Applications iOS pour exporter des fichiers GPX¶

Le même type de recherches pour iOS apporte des résultats similaires même si les applications diffèrent un peu. Vous retrouverez, par exemple, visorando (https://www.visorando.com/) ou MaRando, l'application officielle de la FFRandonnée (https://www.ffrandonnee.fr/s-informer/actualites/marando-l-application-officielle-de-la-ffrandonnee).

Choisissez de préférence des applications open source et surtout :¶

Une fois vos transferts réalisés ne laissez rien (aucun gpx) sur le plateformes (surtout privées) => Exemple de Strava¶

https://www.lemonde.fr/pixels/article/2024/10/27/strava-une-histoire-emaillee-de-failles-de-securite_6361676_4408996.html

https://www.lemonde.fr/international/article/2024/11/04/stravaleaks-en-pleine-guerre-des-milliers-de-soldats-israeliens-identifiables-par-le-biais-de-l-application-sportive_6375590_3210.html

https://www.bbc.com/afrique/monde-42871631


1.3. Import de la bibliothèque gpxpy¶

Il s'agit d'une bibliothèque Python simple pour l'analyse et la manipulation de fichiers GPX. GPX est un format XML pour les traces GPS (https://pypi.org/project/gpxpy/).

In [ ]:
# Installation des bibliothèques, encore appelées dépendances, manquantes
!pip install gpxpy folium
In [ ]:
# Import des bibliothèques

#import pandas as pd
import gpxpy
import folium
import os

2. Cartographie de l'emprise d'une zone d'étude¶

Pour répondre à la question : "Où la famille Godard a-t-elle passé des vacances (: ?", il peut-être utile de fouiller dans son GPS !

Un GPS a enregistré leurs balades pour vous permettre d'appliquer vos nouvelles connaissances en Python^^ !

2.1. Lecture de la zone d'emprise (bounds) avec gpxpy¶

Lecture d'un premier fichier gpx [https://fr.wikipedia.org/wiki/GPX_(format_de_fichier)] situé dans le répertoire du premier jour de randonnée (130429).

In [ ]:
#import gpxpy

# Chargement/ouverture du fichier gpx pour en faire un fichier (file = f) python
# "parse" analyse et décomposition des données ou du texte en éléments plus petits et structurés afin d'en extraire des informations utiles et d'en comprendre la structure
with open('data/130429/track-rando1_SaoJorge.gpx', 'r') as f:
    gpx = gpxpy.parse(f)
    
# Extraction des limites (bounds) géographiques (remarquez l'usage de if et else)
if gpx.bounds:
    # Assignation des limites géographiques à des variables
    bounds = gpx.bounds  # On récupère l'objet bounds
    min_latitude = bounds.min_latitude
    max_latitude = bounds.max_latitude
    min_longitude = bounds.min_longitude
    max_longitude = bounds.max_longitude

    # Affichage des limites géographiques
    print(f"Max Latitude: {max_latitude}")
    print(f"Max Longitude: {max_longitude}")
    print(f"Min Latitude: {min_latitude}")
    print(f"Min Longitude: {min_longitude}")
else:
    print("Aucune limite définie dans le fichier GPX.")
    

Vérifiez que l'on a bien les mêmes limites (bounds) que dans le bloc-notes.

2.2. Calcul du centre géographique de la zone d'emprise (bounds)¶

Pour centrer la future carte.

In [ ]:
# Calcul du centre géographique
centre_lat = (min_latitude + max_latitude) / 2
centre_lon = (min_longitude + max_longitude) / 2
    
print(f"Centre Latitude: {centre_lat}")
print(f"Centre Longitude: {centre_lon}")

2.3. Création de la carte avec Folium¶

In [ ]:
#import folium

m = folium.Map(
    location=[centre_lat, centre_lon],
    zoom_start=14,
    tiles='OpenStreetMap',
    width=800,
    height=600
)

# Ajout des limites via un rectangle
folium.Rectangle(
    bounds=[[bounds.min_latitude, bounds.min_longitude],
            [bounds.max_latitude, bounds.max_longitude]],
    color='#ff7800',
    fill=True
).add_to(m)

#m.save('results/track-rando1_SaoJorge.html') # Votre première carte si vous avez décommenté !

m

Ok ! Mais où la famille Godard passe-t-elle ses vacances ? Dézoomer pour le savoir !

3. Cartographie de l'emprise de plusieurs zones d'étude¶

Cette fois-ci, il s'agit de représenter plusieurs emprises en utilisant des boucles allant lire dans différents dossiers organisés à l'identique.

Pourriez-vous représenter les deux zones d'études fournies dans les dossiers en PJ ?

3.1. Représentation de l'emprise¶

In [ ]:
 

3.2. Titrage et nommage des emprises¶

Est-il possible de mettre un titre général et de nommer les emprises du nom des dossiers (date des traces) ?

In [ ]:
 
In [ ]:
 

3.3. Affichage d'une échelle graphique¶

Si ce n'est fait, est-il possible d'afficher une échelle graphique sur la carte ?

In [ ]:
 

4. Exploiter le contenu d'un fichier GPX¶

4.1. Afficher la trace¶

Il est possible d'ajouter la trace de leurs exploits sur la carte !

In [ ]:
 

4.2. Distance parcourue¶

Quelle est la distance enregistrée dans le fichier GPX ?

Plusieurs calculs sont possibles : "à plat", linéaires, en tenant compte de la courbure de la Terre...

In [ ]:
 
In [ ]:
 

4.3. Dénivelées¶

Quelles sont les dénivelées enregistrées dans le fichier GPX ?

Plusieurs calculs sont possibles : "à plat", linéaires, en tenant compte de la courbure de la Terre...

In [ ]:
 
In [ ]: