banner2-6810a24d85ab8558989354.jpg

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 :

  1. Auto-génération : capacité à générer des analyses et solutions automatiquement.
  2. Auto-organisation : structuration et gestion des données sans intervention.
  3. Auto-vérification : validation automatique des résultats pour assurer leur fiabilité.
  4. Auto-exécution : capacité à exécuter les analyses spatiales de manière autonome.
  5. 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. Fichier CSV des arrêts de bus (ressources SITG).
  2. Fichier CSV des communes du canton de Genève (ressources SITG).

 

Génération carte vectorielle à la volée, arrêts de bus et tram
Prompt utilisé
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 :

  1. Fichier CSV des arrêts de bus (ressource SITG en ligne).

  2. Fichier CSV des communes du canton de Genève (ressource SITG en ligne).

Fonctionne également avec les API ESRI du SITG https://vector.sitg.ge.ch/arcgis/rest/services/ (geoJSON). 

 

Les jointures spatiales permettent de ne retenir que des points géographiques situés dans un polygone
Prompt utilisé
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 :

  • Fichier CSV de la population (ressource SITG en ligne).

Résultat :

  • Images contenants les camemberts

  • Fichier Excel contenant les résultats

 

 

Génération automatique d'un fichier Excel résultat

Faire générer automatiquement des camemberts avec les données du SITG
Prompt utilisé
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 :

L'AI étant génératif, les paramètres d'affichages peuvent changer à chaque exécution

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 :

  1. API SITG communes
  2. API SITG hopitaux et cliniques

Résultat :

  1. Zones colorées selon la valeur
  2. Emplacement des établissements
  3. Tableau de valeurs

Tableau Excel contenant le nombre d'établissements de santé, généré automatiquement

Génération automatique d'une carte choroplèthe montrait la densité d'établissements de santé
Prompt utilisé
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.

Auteur : P.Montier - chef de projet innovation - Direction de l'information du territoire - Département du Territoire

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