En 2023, une étude approfondie a été menée pour moderniser et optimiser l’API Altimétrie de l’IGN. Ce projet s’inscrit dans le cadre de la refonte du Géoportail et de la mise en place de la Géoplateforme. Nous avons collaboré avec les partenaires suivants :
Un exemple concret d’utilisation concerne les objets connectés dans le domaine sportif, qui exploitent les données géographiques pour fournir des analyses d’altitude. Par exemple, une montre Garmin peut générer un graphique de suivi de l’altitude.
Grâce à ces relevés, les dénivelés positifs et négatifs peuvent être calculés avec précision.
Objectifs de la refonte
- Moderniser un code devenu obsolète. L’ancienne version, écrite en Java, a été entièrement réécrite en Python.
- Préserver le périmètre fonctionnel existant en maintenant les endpoints actuels.
- Adopter la norme OGC API – Processes, en abandonnant la norme WPS.
- Introduire des évolutions majeures, notamment le choix de la ressource utilisée, l’ajout de nouveaux paramètres, l’homogénéisation et la standardisation des messages d’erreur.
- Concevoir une API répondant aux exigences de l’IGN en matière de performance (temps de réponse, consommation CPU).
Documentation
Par défaut, les résultats s’appuient sur la donnée RGE ALTI. Cependant, en fonction de la ressource choisie, les résultats peuvent varier en raison des différences de résolution et de précision des produits. La liste des ressources disponibles peut être consultée via https://data.geopf.fr/altimetrie/resources.
Pour plus de détails :
Technologies et solutions
- Framework de développement : Python FastAPI
- Gestion des ressources : RabbitMQ
- Stockage des données : AWS S3 avec structuration Rok4
- Librairie utilisée : Rok4 (maintenue par l’IGN avec contributions d’Oslandia). Cette librairie a été choisie après une phase de benchmark incluant des tests de performance approfondis.
Résultats
La refonte a permis d’atteindre des performances largement conformes aux attentes :
Type de calcul | Exigence | Résultat actuel |
---|---|---|
Calcul d’altitude pour un point | 10 requêtes par seconde | 40 requêtes par seconde, temps moyen : 120 ms |
Calcul d’un profil d’élévation | 10 requêtes par seconde | 10 requêtes par seconde, temps moyen : 200 ms |
Utilisation CPU | Consommation < 0,1 CPU | Consommation maximale observée : 0,05 CPU |
Exemples de réponses JSON
Réponse pour une liste de 2 points avec le paramètre measures :
Réponse pour un profil altimétrique :