Système d'information géographique
Fork me on GitHub

Le projet SimTaDyn : Simulation Tableur Dynamique

Présentation

SimTaDyn (acronyme pour Simulation Tableur Dynamiquge) est un prototype de tableur spécialisé dans la gestion dynamique de cartes géographiques. Le but est de dessiner une carte géographique puis de la manipuler comme une feuille de tableur en faisant dessus des calculs complexes grâce à un langage interprété tel que Forth, remplaçant avantageusement Visual Basic.

Des exemples typiques de SimTaDyn seraient:

  • la résolution de système par la méthode des éléments finis;
  • refaire un SimCity;
  • faire un outil de bloc diagrammes;
  • et bien d'autres.

SimTaDyn est à l'origine un projet d'étudiants fait à l'école EPITA en 2003-2004. Il a été écrit en C, Gtk+2.0, Opengl (Legacy), Forth et MySQL. Notons que dans le cadre scolaire où ce projet a été initialement lancé, un interpréteur Forth complet (tel que gForth) n'a pas été utilisé mais a été refait et ce dans un but d'apprentissage. Depuis fin 2016, SimTaDyn a été repris en tant projet personnel et re-développé en C++, Gtkmm-3.0, OpenGL 3.3, Forth.

Aperçus de SimTaDyn legacy

picture picture
Cliquer sur les images pour les agrandir.

Au coeur de SimTaDyn

Un tableur est un éditeur de feuilles de calcul, à savoir des tables de cellules formant un pavage rectangulaire. Chaque cellule contient des données de type divers y compris des fonctions susceptibles de faire du calcul sur son contenu et celui des autres cellules.

Un Système d'Information Géographiques extlink (SIG) est un autre type d'éditeur manipulant des tables contenant des champs ayant des interprétations géographiques. Elles sont représentées par des cartes permettant d'accéder facilement aux champs n'ayant pas d'interprétations géographiques. De plus, les SIG ne contiennent pas de fonctions susceptibles d'agir sur la table donc sur la carte. L'accès aux champs non géographiques est obtenu en pointant sur un objet particulier. Seuls les champs de l'objet désigné sont affichés contrairement aux tableurs qui essaient toujours de montrer l'ensemble des données. Par contre, leurs outils d'édition de cartes sont très puissants.

Les fonctionnalités des tableurs et des SIG ont donc toujours été dissociées. SimTaDyn est un prototype de synthèse de ces deux types de fonctionnalités. Il manipule des tables dynamiques c.à.d. des tables pouvant contenir en plus des données standards des fonctions capables de modifier la table elle-même. Il représente les données géographiques en positionnant les objets correspondants dans le plan. Il essaie de visualiser simultanément tous les objets de même type.

SimTaDyn, à la différence des tableurs standards, ne possède plus forcément un pavage de cellules rectangulaires mais un pavage polygonal quelconque du plan. De plus, les frontières des pavés -- qui sont des lignes brisées donc, finalement, une union de segments -- sont considérées comme des cellules à part entière. De même, les bords des segments sont des sommets eux mêmes considérés comme des cellules à part entière. Donc finalement, SimTaDyn, possède trois types de cellules : les sommets, les segments et les pavés. Les cellules contiennent aussi plusieurs champs, dont certains peuvent être des fonctions mathématiques.

picture

Les calculs sur les cellules sont faits grâce à un langage interprété de type Forth qui a été adapté pour le projet. Forth étant un langage minimaliste mais très puissant car auto-évoluant, il remplace Visual Basic. Mon article est une introduction à ce langage.

downloadTéléchargement

Le code source est disponible sur GitHub github en Open source. La branche git master pointe sur la version 2016 de SimTaDyn en cours de re-écriture (et donc incomplet) alors que la branche git release-EPITA-2004 pointe sur la version legacy de SimTaDyn (codée rapidement mais l'IDE est plus complète) et peut servir de démonstrateur.

Les sources de la version legacy de SimTaDyn peuvent également être téléchargées ici. Cette version fonctionne sur une Ubuntu 16.04 et à l'époque sur Mac Os X 10.3 avec X11. La compilation n'a jamais été testé pour Windows.

Le rapport Les Sources de SimTaDyn 2004 Les Sources de SimTaDyn 2019
pdf tarball tarball
400 Ko --- format PDF 500 Ko --- format TAR.GZ 1.4Mo --- format TAR.GZ

Avancement

La nouvelle version du projet étant en cours de re-écriture, voici les différences avec la version legacy et ce qui reste à améliorer:

  • Interpréteur Forth: fonctionnel mais manque encore des mots de haut niveau pour être pleinement utilisable seul ainsi que l'importation automatique de bibliothèques partagées (codées en C) en mots Forth.
  • Mots Forth manipulant les éléments de la carte: à implémenter. Dans la version legacy c'était loin d'être optimal.
  • Editeur de texte pour Forth: une IDE minimale est faite: coloration syntaxique
  • détection de mots inconnus
  • auto-complétion (ce que ne proposait pas la version legacy). Il manque néanmoins le mode interactif et des outils d'aide (comme l'affichage du dictionnaire, de la pile, du déboguer) qui restent à faire.
  • Visualisation de la carte: la version actuelle avec gtkmm-2.4 utilisant OpenGL legacy affichait les noeuds 2D d'une carte mais le passage à gtkmm-3.0 uniquement compatible avec OpenGL 3.3 a cassé le système d'affichage. La version legacy de SimTaDyn proposait un affichage 3D mais non manipulable.
  • Editeur de carte: complètement à faire alors que la version legacy proposait l'ajout/suppression et déplacement des cellules mais été parfois bogués ou lourds en nombre de clics souris à faire pour l'utilisateur. L'OpenGL moderne est moins souple que son ancienne version pour développer autre chose que des jeux. La nouvelle version de SimTaDyn utilise un graphe de scène extlink pour afficher les cartes.
  • Import/Exportation de fichiers pour/vers des logiciels connus: La version actuelle importe uniquement le format shapefile des GIS, mais prévois d'importer des fichiers de GIS tels que QGIS, OpenStreetMap, PostGIS. La version legacy utilise MySQL pour sauvegarder des cartes. Notons que la nouvelle version va proposer son propre type de fichier de sauvegarde.
  • Application: seule la version legacy proposait un petit exemple.