GHTopo
But du projet:
Un enjeu de taille: Proposer aux spéléologues une solution libre Windows et Linux pour le traitement des données TOPOROBOT.
A l'heure actuelle, l'excellent outil TOPOROBOT n'existe que sur Macintosh jusqu'à Mac OS 9 et son développement est définitivement arrêté depuis 2007 au moins (le site officiel n'existe plus).
NOUVEAU (2024): On peut télécharger un package Toporobot + émulateur MacOS 9 ici: https://github.com/toporobot/LimeLight/releases
Il était encore possible il y a peu de temps de se procurer LimeLight_X sur www.ogh.ch/news/toporobot-limelight-x-download, mais le lien est désormais mort. La seule manière connue est maintenant de le télécharger directement sur ce blog, ou ici.
Le projet GHTopo a fêté ses 20 ans en 2023.
On peut lire les Recommandations pour l’utilisateur de TOPOROBOT (M. Heller), qui s'appliquent aussi à GHTopo.
Conseils pour les topographes occasionnels:
Bien que GHTopo puisse être utilisé pour toute cavité, il donne sa puissance dans l'étude des grands réseaux, pour lesquels il a été conçu.
L'auteur de GHTopo conseille aux topographes occasionnels et aux spéléologues qui présentent les examens spéléologiques (BE et diplômes fédéraux) d'utiliser Visual Topo, plus simple et plus permissif quant à la numérotation des stations (format libre)
Fonctionnalités principales (voir screenshots)
- Support complet du format Tab de TOPOROBOT. Par construction, les 'autoloops pures' (séries se refermant sur elles-mêmes sans départ dans la boucle) ne sont pas supportées. GHTopo le signale et 'ouvre la boucle'.
- Moteur de calcul fortement accéléré (méthode du gradient conjugué)
- Import PocketTopo TXT
- Import / Export Topodroid natif
- Import / Export SexyTopo
- Formats supplémentaires de sauvegarde de premier ordre ( = pouvant être des formats de travail à part entière): XML, JSON et SQLite
- Extraction de MNT depuis les serveurs de l'IGN et d'OpenTopoMap
- Génération de profils verticaux ("coupes scanner" avec interface CTScan-like)
- Calcul d'itinéraires entre deux points
- Support des croquis et annotations
- Support des visées en antenne
- Système de filtres très puissant (MétaFiltre)
- Sections supplémentaires: Réseaux et Secteurs
- Détection de proximités (mise en place de bouclages)
- Croquis et annotations sur le plan
- Support des "points d'intérêt" (POI)
- Visualisateurs 2D et 3D
- Editeur de coupes développées avec système de script
- Export vers Visual Topo et Therion
- Génération de fichiers KML et Leaflet OpenStreetMap ( cartes interactives).
Silhouettes avec un seul polygone par série - Statistiques détaillées
- Version "tablette PC" de GHTopo avec support du BRIC4 et des croquis
- Génération d'étiquettes de terrain avec ou sans code QR
- Calculette et convertisseur de coordonnées intégré
- Génération des polygonales pour le logiciel de dessin topo GHCaveDraw
- Conversion de coordonnées selon la notation EPSG
- Calcul automatique des déclinaisons magnétiques (modèle WMM)
- Dans le calcul topo, l'étape de recensement des branches, auparavant assez longue, est devenue instantanée.
- Import depuis le format TOPOROBOT Text, utilisé par PocketTopo. L'export est possible dans le cadre des échanges avec PocketTopo (l'entrée de menu correspondante est Export vers Toporobot / PocketTopo Text)
- Support amélioré des visées rayonnantes
- Code source unifié pour les versions Windows et Linux (détection automatique par le compilateur FPC)
- GHTopoRevival: Utilitaire de digitalisation de vieilles topos et d'images, produit une topographie GHTopo
Téléchargement
Distribution de GHTopo du 31/10/2024 avec quelques exemples:
Carrières souterraines de Citon I (33)
Grottes du Roy (65)
Grottes de Sakany (09)
Le binaire courant, qui remplace GHTopo.exe sans nécessiter une réinstallation complète (il est bien sûr conseillé de sauvegarder l'ancienne version celui-ci). Déposer ce fichier dans le dossier de GHTopo et le dézipper.
Les sources Lazarus de GHTopo - Les sources du convertisseur de coordonnées (à mettre dans un sous-dossier des sources de GHTopo) - Parcourir le dossier
Un éventail de données GHTopo
Composants Lazarus:
- PowerPDF, pour génération de PDF
- RXLib: Composants de widgets
- LazQRCodes: Génération de FlashCodes
- LazSerial: Support du port série (pour le DistoX)
- TBGRABitMap: Support du graphisme transparent
Installation: Déplier le fichier zip dans un dossier de votre choix. C'est tout !
Fichier d’aide au format XML (à mettre dans le dossier de GHTopo)
Galerie
Mises à jour:
30/10/2024
- Import / export Topodroid (lecture-écriture du fichier distox14.sqlite)
- Import / Export SexyTopo
- Extraction de MNT pour le monde entier (vian services REST d'OpenTopoMap)
- Mode "plus court chemin" directement sur la vue en plan (pseudo-calque)
- Annotations et croquis sur le plan
- Surlignage de cheminements
- Génération de timelapses (par an, par séance, par réseaux, etc ...) au format PNG et SVG
- Dialogue "Distance entre deux points": Affiche désormais de nombreux détails ainsi que le parcours entre les points
- Recherche de proximités
- Fenêtre permanente de recherche dans les tables, avec centrage sur le plan si l'item recherché est rattaché à un point topo
- Formats supplémentaires de sauvegarde: GTX (XML), JSON et SQLite
- MétaFiltre: Ajour du Filtrage sur années et par lasso de sélection
- GHTopoRevival: Utilitaire de création d'un réseau GHTopo par digitalisation d'une image
- Utilitaires pour la signalisation de terrain sous forme de fiches à plastifier: génération de fiches topo avec localisation, amorce des visées précédentes et suivantes et surlignage d'un parcours. Génération de fiches vierges.
- Export de vues 3D métafiltrées au format HTML Babylon.js
20/05/2023
- Implémentation de la méthode du gradient conjugué dans le moteur de calcul. Très forte accélération de la vitesse de calcul, très faible empreinte mémoire. Le réseau de Langoiran (90 km, 6950 branches, 6017 noeuds) est calculé en moins de 30 secondes
- Support de l'échange vers Topodroid via ses bases SQLite (librairies libsqlite indispensables, la version 32 bits est à installer dans le dossier de GHTopo)
- Pour la France: Génération de MNT par interrogation du site IGN
- Extraction de profils (coupes scanner) par sélection de zone
29/03/2022
- Export vers le nouveau format de Visual Topo TROX
- Nouveau mode de travail: Le calcul d'itinéraires peut se faire directement dans la vue en plan (overlay); unifié avec la version RPI de GHTopo
- Refonte totale des visualisateurs 3D
- Génération de plans avec repérage type plan de ville (notation A1)
- Mise à jour du repository de GHTopo
- Liste des noeuds: La sélection d'un noeud centre le plan dessus
- Liste des terminus liés: Possibilité d'installer un bouclage
- Statistiques: Remplacement de tous les TGrid par des TListBox, avec possibilité de copier-coller
- Liste des POIs (points d'intérêt)
- GHTopoToolbox: Métadonnées d'une image, nouveaux scripts de localisation de photos et d'extraction de profils topo
27/03/2021
- Import Pocket Topo TXT. Indispensable en raison d'un bug de PocketTopo pouvant rendre inopérant l'export en Toporobot Text et requérant l'intervention de son concepteur en SAV.
- Génération des fiches stations avec QRCode pour le segment terrain du système de signalisation/navigation dans une carrière souterraine
- GHTopoToolbox (Interpréteur PascalScript): Ajout de fonctions permettant d'ajouter des séries et des visées, de créer des séries de profils. Possibilité de générer des dessins et graphismes. Cet interpréteur est voué à être un environnement de programmation semi-généraliste. GHTopoToolbox est un outil incorporé dans GHTopo, et existe aussi comme programme autonome
- GHTopoToolbox: Calcul de caractéristiques de sections (aire, centre de gravité, moments quadratiques)
- GHTopoToolbox: Génération de textures et écriture du code Pascal associé
01/02/2021
- Refonte de l'export Leaflet HTML
- Export des centerlines au format JSON
- Outil de calcul du plus court chemin entre deux point topo et tracé du parcours
- Génération d'un fichier HTML-Javascript autonome contenant le graphe du réseau et permettant le calcul et le tracé du plus court chemin entre deux points
28/04/2020
- Détection de points topo au voisinage d'une fin de série, affichage dans une liste avec proposition de mise en place d'un bouclage. Lors de la sélection d'un élément de cette liste, la carte se centre sur le point correspondant
- Importante revue de code, correction de bugs
- Export amélioré en KML et surtout carte interactive Leaflet (voir cet exemple)
- Déclinaison de GHTopo sous forme d'une application de type "tablette PC", avec support du DistoX
- Possibilité de faire des croquis (qui suivent la polygonale) avec textes, fonctionnalité destinée à la version "tablette PC" et supportée dans GHTopo standard
- Unification du code avec Linux
- Support complet des déclinaisons magnétiques avec calcul automatique
- Détection des erreurs améliorée
- Gestion des points d'intérêt (POIs); la directive $POI: suivie d'un commentaire dans un commentaire de visée permet de générer une liste de POIs avec mise en évidence sur le plan
- MétaFiltre amélioré: il est maintenant possible de sélectionner une portion de série (instruction de la forme SERIE=666:23-45;
- Formulaire "Code" : Possibilité de spécifier des paramètres de correction: erreur de tourillon, diamètre des boules utilisées dans certaines configurations (en scan 3D notamment), correction des azimuts et pentes via une fonction trigonométrique à paramètres
- Vue 2D: Refonte de l'interface, avec notamment de nouveaux boutons en remplacement des barres de défilement
- Possibilité de surligner certaines parties du réseau
- Fusion de cavités: refonte totale des boites de dialogues associées
- Utilitaire de maintenance du document remanié
- Statistiques: Remplacement de la plupart des grilles TStringGrid par des listes TListBox, améliorant considérablement la vitesse de traitement
- Construction de coupes développées: Importantes corrections, et surtout définition d'un mini-langage de script permettant la reconstruction de la coupe dans l'éditeur
- GHTopoToolBox: Amélioration de l'utilitaire de conversion de coordonnées en masse: présélection de automatique de colonnes (ex: X, Y, Z, Lat, Lon, Etiquette, Nom) basée sur des noms usuels de colonnes. Si une colonne COUCHES existe et est utilisée dans le jeu de données, il est possible d'exporter en KML ou Leaflet avec le support des couches.
Interpréteur PascalScript amélioré - Support des MNT et extractions de profils topographiques avec trace des galeries recoupées
14/11/2018
- Refonte du vérificateur de document: nouveaux contrôles, ajout d'un attribut de type d'erreur (note, avertissement, erreur potentielle, erreur fatale), son rapport s'affiche en tant que liste simple dans la fenêtre des listes simples.
- Améliorations dans l'export vers Therion
- Pas mal de nettoyage de code mort ou peu utilisé
- Début du travail d'unification du contexte de dessin de la vue en plan: le futur contexte de dessin sera celui de GHCaveDraw.
11/10/2018
- Refonte du code de calcul, capacité testée avec 5800 branches et 4750 noeuds, accélération d'un facteur 50
- Unification de l'interface
- Gestion des POI (points d'intérêts)
- Profils topographiques sur MNT ( = transects)
- Statistiques étendues, nouveaux diagrammes
- Tous les graphismes utilisent TBGRABitmap
- Fusion de documents topo
- Extraction de sous-réseaux
- Utilitaire de maintenance du document
- Fixation de nombreux bugs, factorisation de très nombreuses sections de code
- Suppression de fonctionnalités inutiles ou obsolètes
- Toolbox enrichie: calculette, générateur de QRCodes, convertisseur de coordonnées, interpréteur PascalScript
- Centre d'impression réactivé
06/09/2018:
- Retour à une interface à fenêtres flottantes pour la version standard
- Possibilité de version mono-fenêtre
- Notion d'espace de noms
- Le code de calcul a considérablement été optimisé
- Modèle de stockage de matrices TArray2D: testé OK avec un réseau de 4.560 noeuds: 280 Mo mobilisés
- Modèle de stockage de matrices LOL (List of Lists): faible empreinte mémoire (30 Mo pour le même réseau) mais temps de calcul plus élevés.
- Diagrammes des directions paramétrables
- Diagrammes altimétriques paramétrables
- Tous les contextes graphiques utilisent désormais TBGRABitmap
- Fermeture d'un bouclage en sélectionnant deux points sur le plan
- Support de l'erreur de centrage des stations et de l'erreur de tourillon
- Unification de l'interface
- Outil de maintenance du document: nettoyage des antennes, réaffectation en masse de paramètres pour les différentes tables, changement de système de coordonnées pour un réseau
- Exportation d'un sous-ensemble d'un réseau
- Outil de fusion de fichiers XTB
- Nouveau dialogue d'ouverture des fichiers
- Toolbox enrichie (comportant une calculatrice, un convertisseur de coordonnées géographiques avec tableau intégré, un calculateur de déclinaisons magnétiques, un générateur de QRCodes et un interpréteur PascalScript doté d'un éditeur de code)
28/12/2016
- Fixation de nombreux bugs
- Editeur de coupes développées
- Export des coupes développées vers GHCaveDraw. (exemple sur le Gouffre des Charentais retiré en raison du comportement du Zynklinalführer qui gère le gouffre).
- Améliorations dans les vues en plan
- Ajout de séries depuis la vue en plan (utile pour la topographie des carrières souterraines)
- Importantes corrections et ajouts dans l'éditeur de séries: copier-coller amélioré, la fonte du tableur passe en Arial 10 Normal
- Ajout d'annotations sur le plan
- En bêta: Interpréteur de listes de visées (au format Longueur, Azimut, Pente; données issues du DistoX2), générant automatiquement les visées d'une série
- Améliorations notables dans la boîte à outils intégrée (cet outil est aussi disponible comme logiciel indépendant): récupération de fichiers à colonnes séparées par des espaces, intégration du copier-coller, ...
- Version de GHTopo destinée au Raspberry Pi 3 (interface adaptée aux écrans 800x480), une alternative plus simple à GHTopo standard. Captures d’écran.
10/10/2016
- Nouvelle refonte de l'interface: Regroupement des trois fenêtres principales dans une seule. La vue en plan est située dans un onglet.
- Compilation sous Linux OK
- Suppression de fonctionnalités peu utilisées et boguées
- Ajout d'un outil de recherche dans les listes (Recherche rapide)
- Visualisateurs 2D et coupe développée: Fixation d'un bug qui laissait affiché des rectangles ou lignes parasites lors du tracé des rectangles ou lignes de sélection
- L'utilitaire de calcul GHConvertisseur (comportant une calculette, un convertisseur de coordonnées, un calculateur de déclinaisons magnétiques, un générateur de QRCodes et un importateur de tableaux) est intégré (accessible par le bouton Calculatrice de la barre d'outils principale).
- Coupe développée: Outil opérationnel mais réflexion en cours sur l'utilisabilité (procédure de construction, méthodes de sauvegarde)
07/05/2016
- La méthode de zoom et de déplacement est unifiée (AutoCAD like). Elle reprend celle de GHCaveDraw: 1. Sélection de l'outil; 2: Pointage du premier point (click); 3: Pointage du second point (click) puis exécution
- Vue 3D GDI: Support du drag n drop pour sélectionner le point de vue 3D
09/05/2016:
- Les coupes développées peuvent maintenant partir de n'importe quelle série
- Corrections dans le panneau Statistiques
- Suppression de code mort et de certains composants d'interface inutilisés ou non prêts
- Suppression de fonctionnalités boguées ou très peu utilisées
20/05/2016:
- Les coupes développées sont basées sur les matrices d’incidence, ce qui permet entre autres de réutiliser le code de calcul de GHTopo et de traiter les séries relevées en 'partant du fond'
- Sauvegarde des coupes développées (ici: le début du Réseau d'Arrestelia (PSM))
22/07/2016:
- Correction de bugs, notamment dans l'éditeur de coupes développées
- Bulles d'aide dans le tableau de saisie des points topo
- Localisation de points topo sur le plan
08/08/2016:
- Editeur de séries pleine page, avec navigateur latéral. Cet éditeur se présente comme un grand tableau qui n'est pas sans rappeler celui de VisualTopo.
Un contrôle d'erreurs de saisie et une fonction de recherche parcourt la table et affiche toutes les occurrences (erreurs ou résultats de recherche) dans le panneau inférieur. Un click sur une ligne de ce panneau amène directement sur la ligne du tableau concernée.
26/08/2016:
Aucun ajout de fonctionnalités mais:
- Correction de bugs
- Compilé OK et testé OK sur plateforme Raspberry Pi (la vue 3D OpenGL, le support du DistoX et l'éditeur de coupes développées sont désactivés)
- Compilé OK sur MacBouse OS X Snow Leopard, mais s'exécute très mal sur cette plateforme (la VCL pour MacOSX, basée sur Carbon, est extrêmement boguée et inutilisable en pratique)
Codes sources de GHTopo, GHTyro, GHCaveDraw
Composants Lazarus
Ces composants sont nécessaires pour la compilation. Ce sont des paquets Lazarus à installer
RXLib: Contrôles d'édition
TLazSerial: Composant de liaison série (utilisé par le module DistoX2)
TBGRABitmap: Composants graphiques dont le TBGRABitmap, supportant la transparence
Lazbarcodes: Générateur de QRCodes
PowerPDF: Génération de PDF
Synapse: Composants FTP, HTTP pour fonctionnalités de téléchargement
Sources du convertisseur de coordonnées, à déployer dans un sous-dossier des sources de GHTopo et
Dépôts Github
Ces dépôts Github font foi. Ils sont actualisés régulièrement
https://github.com/JPCASSOU/GHTopo
https://github.com/JPCASSOU/GHCaveDraw
https://github.com/JPCASSOU/PyGHTopo
https://github.com/JPCASSOU/JavaGHTopo
Codes sources (27/03/2021)
Ces dossiers internes sont en secours en cas d'indisponibilité des dépôts Github.
Télécharger GHTopo_src - Parcourir le dossier
Télécharger GHCaveDraw_src - Parcourir le dossier
Télécharger GHTyro_src - Parcourir le dossier
Réseau Sakany
Sakany: Une grotte laboratoire pour topographes
Grotte-laboratoire pour topographes, cette cavité a été choisie pour
- Sa facilité d'accès
- Son faible engagement
- Sa technicité
- Sa facilité
- Sa complexité
- Son caractère de Cavité de classe III, adaptée au handicap neurologique du topographe
Le logiciel GHTopo a en très grande partie développé autour de cette cavité.
Les séances de topographie se sont déroulées entre 2001 et 2008, en deux campagnes.
Le labyrinthe de Sakany
Article conjoint JP CASSOU - JY BIGOT
Spéléométrie du complexe
Plusieurs réseaux composant la cavité, la spéléométrie est détaillée dans le tableau suivant:
Réseau | Développement |
Réseau principal de Sakany | 5532 m |
Petite Grotte des Echelles | Jonctionnée avec le réseau principal |
Grotte de la Conduite dite 'Sakanette' | 456 m |
Gouffre près des entrées Accident Supérieur | 87 m |
Petite grotte sous le Grand Porche | 14 m |
Fenêtre en falaise au-dessus des Amoureux | 10 m |
Réseau de Sakany VII (entrée perchée à 5 m près entrée Faille) | 460 m |
Galerie près de l'entrée Faille | 12 m |
Réseau indépendant sous la galerie d'entrée des Amoureux | 74 m |
TOTAL | 6800 m environ |
Dénivelé | 138 m |
Indice de cavernement linéaire (indice de Choppy) | 36,10. |
Un plan provisoire du réseau (GHCaveDraw)
Le synoptique d'équipement du réseau (ce type de document a été inventé par Dominique CASSOU)
La topo en langage GHCaveDraw
Reseau_sakany.zip
Les chiffres GHTopo (TOPOROBOT étendu)
Quelques secteurs:
Sakany_collecteur.pdf: Ce réseau 'ramasse' tous les écoulements provenant du reste du complexe, ainsi que les spéléologues qui font la traversée
Sakany_faille_jumeaux.pdf: Une très intéressante traversée qui traverse le complexe de part en part
Sakany_grille.pdf: La seule partie du réseau qui se parcourt sans corde
Sakany_collecteur.pdf: LA traversée du réseau, pour ceux qui ne veulent pas monter vers les entrées supérieures
Coupe_Sakany_faille_grille.pdf: Une des 960 traversées possibles ...
Java GHTopo
Portage de GHTopo en langage Java
Après le portage du moteur de calcul en Python, une version en Java a été démarrée.
L'objectif est de répondre à la demande de nombreux spéléologues.
Il était prévu de développer une version Android de GHTopo, en liaison avec les appareils de topographie électronique comme le DistoX2, mais devant le véritable calvaire qu'est la programmation sous Android, très mal pensé, ce volet du projet est définitivement annulé. Le moteur de la version Java de GHTopo est toutefois réutilisable.
Le projet est actuellement suspendu: le langage Lazarus est de plus en plus stable et supporté sur davantage de plateformes. La politique du concepteur est de développer des applications simples, portables et légères; de plus, il n'aime pas le langage Java.
Les sources de GHTopo sont en l'état sur Github. Toutefois, les améliorations du moteur de GHTopo sont reportées sur les versions Java et Python.
Performances
Le calcul d'un réseau est extrêmement rapide du fait de l'optimisation des ArrayList(), utilisées intensivement.
En ce qui concerne le seul calcul matriciel, la version native de GHTopo présente un léger avantage.
Fonctionnalités actuelles
- Conteneur mémoire TToporobotStructure: Validé. Sauvegarde en XML OK
- Chargeur de fichiers XTB: Validé
- Fonctions utilitaires de calcul: Validées
- Méthode des Noeuds: Version isotrope implémentée et validée
- Constructeur du graphe: Validé (méthode de la matrice d'incidence)
- Solveur matriciel: Validé (factorisation de Cholesky)
- Calcul des centerlines (cheminements): Validé
- Calcul des contours: Validé
- MétaFiltre: Validé
- Conteneur TBDDEntites: Opérationnel
- Convertisseur de coordonnées universel: OK (Java Geotools)
- Calcul de déclinaisons magnétiques (modèles IGRF et WMM): OK
- Export vers OpenStreetMap: OK
- Export vers GHCaveDraw: OK
- Visualisation en plan
- Vue 3D (GDI)
- Frontal: en cours de développement.
Téléchargement
Le gestionnaire de versions utilisé est Maven et l'EDI employé est Netbeans.
Version Android (non fonctionnel; squelette de l'appli, coquille vide):
PyGHTopo: Le moteur de calcul de GHTopo en Python
Objectif de ce travail
Ce petit projet a pour objectif principal de créer une version légère de GHTopo sur tablettes de type Android, sur lequel existe un interpréteur du langage Python.
En effet, le développement sur Android est un véritable cauchemar qui a déjà fait abandonner la programmation à plus d'un informaticien chevronné.
Le langage Python est très léger et très facile à apprendre. Langage de script, le déploiement des applications est un jeu d'enfant (une simple copie de fichiers).
D'autre part, QGis va être de plus en plus utilisé et ce SIG a pour langage de développement le Python.
En outre, l'ordinateur monocarte Raspberry Pi 3 utilise Python
Avancement actuel
Projet nouveau, seul le moteur du logiciel (gestion de la base et calcul topo) est implémenté, avec une fenêtre de visualisation rapide de la polygonale:
Une petite vidéo d'un calcul sur le Réseau de Saint Marcel, avec GHTopo et PyGHTopo: Vidéo GHTopo et PyGHTopo
Nouveautés
Support des visées rayonnantes.
Adapté au Python 3.3 et 3.5
Téléchargement
Version du 20/06/2016: PyGHTopo - Parcourir le dossier
En cas d'erreur avec les fichiers texte, changer le paramètre de page dans PyGHTopoGUI.py, fonction OuvrirUneTopo(), aux alentours de la ligne 110:
en
--