
Introduction et Contexte
Au travers de cet article nous proposons d'explorer le concept de "SIG autonome", une nouvelle génération de systèmes d'information géographique (SIG) assistés par l'intelligence artificielle (IA). Pour cette étude nous proposons de nous appuyer sur l'utilisation et l'adaptation du package LLM-Geo développé par Huan Ning.
L’objectif de cette expérimentation est d’intégrer les modèles de langage étendus (LLMs), comme GPT-4mini, pour automatiser le traitement des données spatiales, sans intervention humaine et au final de tester la faisabilité d’un SIG autonome.
Qu'est-ce qu'un SIG autonome ?
Un SIG autonome représente une nouvelle génération de systèmes d'information géographique intégrant l'intelligence artificielle. Il s'appuie sur les capacités avancées des modèles de langage (LLM) en compréhension du langage naturel, raisonnement et programmation, afin de résoudre des problématiques spatiales par la collecte, l’analyse et la visualisation automatisées de données géographiques.
Pourquoi un SIG autonome ?
L’essor des agents autonomes (ex : voitures autonomes, assistants IA) montre leur potentiel à effectuer des tâches complexes sans supervision.
L’IA appliquée aux SIG (GeoAI) s’est développée récemment, mais elle est encore limitée à des tâches spécifiques, nécessitant des ajustements humains.
L’intégration des LLMs permettrait aux SIG autonomes de comprendre le langage naturel, d’analyser des données et de produire des résultats de manière autonome.
Objectifs et définition du SIG autonome
L'expérimentation identifie cinq principes clés pour un SIG autonome :
- Auto-génération : capacité à générer des analyses et solutions automatiquement.
- Auto-organisation : structuration et gestion des données sans intervention.
- Auto-vérification : validation automatique des résultats pour assurer leur fiabilité.
- Auto-exécution : capacité à exécuter les analyses spatiales de manière autonome.
- Auto-croissance : apprentissage et amélioration continue du système basé sur ses expériences.
Ces objectifs se rapprochent du fonctionnement des agents autonomes en IA, mais appliqués aux SIG.
Développement du Prototype LLM-Geo
Notre expérimentation se base sur LLM-Geo (https://github.com/gladcolor/LLM-Geo), un prototype basé sur GPT-4-mini, qui automatise les analyses spatiales via un processus en trois étapes :
1. Génération d’un plan de traitement (Solution Graph)
Lorsqu’un utilisateur pose une question spatiale (ex : "Affiche moi une carte de Genève avec les arrêts de bus de la ligne 14 "), le système décompose la tâche en plusieurs sous-étapes.
Il crée un graphique dirigé représentant les étapes nécessaires à l’analyse (chargement des données, traitement, visualisation).
2. Implémentation des opérations
LLM-Geo génère automatiquement du code Python pour chaque étape du plan. Si des erreurs d'exécution du code python se produisent (exemple : erreur car une variable nécessite une conversion du système de projection), le système est capable de se reprogrammer jusqu'à 10 fois maximum.
Le système s’appuie sur des bibliothèques SIG comme GeoPandas pour exécuter les tâches et Folium pour la gestion de cartes vectorielles.
3. Exécution et restitution des résultats
Une fois le programme assemblé, LLM-Geo exécute les analyses et produit des résultats sous forme de :
- Cartes interactives
- Graphiques
- Tableaux de données
- Résumés textuels
L’ensemble du processus se fait sans intervention humaine, démontrant le potentiel d’un SIG autonome.
Études de cas et Résultats
Trois études de cas ont été réalisées pour tester LLM-Geo, avec l'utilisation du moteur gt4-mini:
Cas 1 : afficher les arrêts de bus de la ligne 14 des TPG à Genève en direction de Gravière
Objectif : Créer une carte vectorielle avec les emplacements des arrêts de tram de la ligne 14 (uniquement en direction de la Gravière) sur une carte de Genève qui affiche le nom des communes Données utilisées :
|
![]() |
1) Crée une carte de Genève en incluant le nom des arrêts de bus de la ligne 14 uniquement en direction de Gravière, en bleu.
2) Puis affiche le contour des communes en rouge et ajoute une légende.
Cas n° 2 : utiliser les jointures spatiales
Objectif : Créer une carte vectorielle en positionnant correctement les arrêts de tram et bus uniquement sur les communes de Bernex et de Meyrin Données utilisées :
Fonctionne également avec les API ESRI du SITG https://vector.sitg.ge.ch/arcgis/rest/services/ (geoJSON).
|
![]() |
Crée une carte de Genève et affiche le contour de toutes les communes en rouge.
Ajoute le nom des arrêts de bus situés dans la commune de bernex et de meyrin.
Ajoute une légende.
Cas n° 3 : requêter les données population
Objectif : Interroger les statistiques concernant l'âge des populations des 5 communes du canton les plus peuplées, faire générer un graphique composé de camemberts ainsi qu'un fichier excel.
Données utilisées :
Résultat :
|
![]() |
1) Affiche la ventilation des 5 communes les plus peuplées. Utilise des camemberts mais PAS DE CARTE
2) Ajoute tous les camemberts dans une seule image de 1024 x 1024 pixels
3) génère un fichier excel avec les résultats
Remarque : Comme "Open AI" utilise de l'intelligence artificielle générative, si on exécute le script (qui génrère du code python) plusieurs fois sans donner d'indications précises sur la forme attendue, nous avons des résultats différents à chaque fois, ce qui peut être problématique.
Exemple :
Cas n° 4 : communes ayant le plus d'établissements de santé
Objectif : Faire afficher une carte choroplèthe vectorielle (variations couleur selon une valeur) des communes genevoises ayant le plus d'établissements de santé (hôpital, clinique et autres) . Données utilisées :
Résultat :
|
![]() |
1) affiche une carte choroplèthe des communes de Genève ayant le plus d'établissements de santé sur sa zone géographique. Pour le calcul additionne la somme des établissements situés dans le polygone géographique de chaque commune
2) Affiche les établissements ainsi que la légende
3) Pour chaque commune affiche un tableau contenant la somme des hopitaux et des cliniques
Défis et Limites
Bien que prometteur, l'utilisation des larges langages dans ce contexte géographique présente encore des limites :
1. Fiabilité et Explicabilité
- Les modèles de langage peuvent générer des erreurs ou halluciner des résultats faux.
- Il faut améliorer la vérification automatique des résultats pour éviter des erreurs critiques.
- Le même prompt exécuté plusieurs fois ne générera pas le même script python et donc les résultats peuvent varier.
- Il faut parfois retravailler le prompt plusieurs fois pour obtenir le résultat attendu.
2. Adaptabilité et Apprentissage
- LLM-Geo n'apprend pas encore de ses erreurs.
- Il faut intégrer un système de mémoire et de correction automatique.
- Il est nécessaire de donner des instructions techniques précises (dans un prompt commun), comme si on s'adressait à un véritable programmeur informatique. Exemple : "en cas de jointures spatiales, toutes les données doivent avoir le même système de projection".
- Le code python peut se régénérer jusqu'à 10x pour corriger ses erreurs mais si une direction technique est prise, elle ne sera jamais remise en question et ce jusqu'à la fin de l'exécution.
3. Recherche et Filtrage des Données
- Actuellement, LLM-Geo dépend de l’utilisateur pour fournir des sources de données. Dans notre exemple nous avons pu extraire les données à partir de fichier ZIP mais aussi de webservices ESRI (geoJson), ils sont cités dans le chapitre "Ressources".
- Idéalement un vrai SIG autonome devrait être capable de trouver et de sélectionner lui-même les bonnes données sur internet.
4. Modèle de Grande Échelle (Large Spatial Model – LSM)
- Les modèles actuels de type GPT-4 n’ont pas de conscience spatiale réelle.
- L’idée d’un modèle spatial entraîné sur d’énormes bases de données géographiques pourrait améliorer la compréhension des SIG par l’IA.
Perspectives et conclusion
Le SIG autonome est une technologie prometteuse qui devrait révolutionner la manière dont nous analysons l’espace et les données géographiques.
Les futures évolutions attendues :
- Intégration avec des logiciels SIG existants (ex : ArcGIS, QGIS).
- Création d'un assistant SIG intelligent type chatbot capable d'aider les utilisateurs.
- Développement d’un système de mémoire pour l’amélioration continue.
- Automatisation complète de la recherche de données et des analyses.
- Entraînement d’un "Large Spatial Model" pour améliorer la compréhension des données géographiques par l’IA.
On peut toutefois conclure que les SIG autonomes vont très certainement rendre l'analyse spatiale plus accessible, rapide et efficace et que l'interface du futur se fera très probablement à l'aide de prompts.
Ce ne sera plus à l'utilisateur de comprendre et de s'adapter à l'interface machine mais à la machine de comprendre l'humain, cependant, des défis techniques et éthiques doivent être surmontés avant leur adoption à grande échelle.
Ressources
Fichiers CSV en ligne
- arrêts TPG
https://ge.ch/sitg/geodata/SITG/OPENDATA/1350/CSV_TPG_ARRETS.zip - communes de Genève
https://ge.ch/sitg/geodata/SITG/OPENDATA/5661/SHP_CAD_COMMUNE.zip - population de genève
https://ge.ch/sitg/geodata/SITG/OPENDATA/2021/CSV_OCS_POPULATION_SSECTEUR.zip
API SITG
- arrêts TPG
https://vector.sitg.ge.ch/arcgis/rest/services/Hosted/TPG_ARRETS/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryMultipoint&inSR=&defaultSR=&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=*&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&gdbVersion=&historicMoment=&returnDistinctValues=false&returnIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&multipatchOption=xyFootprint&resultOffset=&resultRecordCount=&returnTrueCurves=false&returnCentroid=false&returnEnvelope=false&timeReferenceUnknownClient=false&maxRecordCountFactor=&sqlFormat=none&resultType=&datumTransformation=&lodType=geohash&lod=&lodSR=&cacheHint=false&f=geojson - communes de Genève
https://vector.sitg.ge.ch/arcgis/rest/services/Hosted/CAD_COMMUNE/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryPolygon&inSR=4326&defaultSR=4326&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=*&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&gdbVersion=&historicMoment=&returnDistinctValues=false&returnIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&multipatchOption=xyFootprint&resultOffset=&resultRecordCount=&returnTrueCurves=false&returnCentroid=false&returnEnvelope=false&timeReferenceUnknownClient=false&maxRecordCountFactor=&sqlFormat=none&resultType=&datumTransformation=&lodType=geohash&lod=&lodSR=&cacheHint=false&f=geojson - etablissements de santé à genève
https://vector.sitg.ge.ch/arcgis/rest/services/Hosted/DAS_HOPITAUX_CLINIQUES/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryPoint&inSR=&defaultSR=&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=*&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&gdbVersion=&historicMoment=&returnDistinctValues=false&returnIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&multipatchOption=xyFootprint&resultOffset=&resultRecordCount=&returnTrueCurves=false&returnCentroid=false&returnEnvelope=false&timeReferenceUnknownClient=false&maxRecordCountFactor=&sqlFormat=none&resultType=&datumTransformation=&lodType=geohash&lod=&lodSR=&cacheHint=false&f=geojson