Breve introduzione a Therion e note su una nuova interfaccia grafica

Riassunto del seminario catastale presentato al raduno internazionale di speleologia — Costacciaro 2026

Dal 28 ottobre al 1 novembre 2026 si è tenuto il raduno internazionale di speleologia, al quale hanno partecipato cinque componenti della Società di Studi Carsici Lindner. Quest’anno il raduno è stato ospitato nel paese di Costacciaro (PG), ai piedi del monte Cucco. Durante i seminari catastali, organizzati dalla commissione nazionale catasto il gionrno 31/10/2026, uno dei soci (FS) ha presentato una breve introduzione al software di rilievo ipogeo Therion, e all’interfaccia grafica therion studio apparsa recentemente. Di seguito, si riporta un riassunto dell’intervento.

Cos’è therion

Therion (https://therion.speleo.sk/) è un software sviluppato e mantenuto da Stacho Mudrak e Martin Budaj. Come raccontato nel manuale (thbook), i due autori volevano risolvere il seguente problema. Un rilievo è un’entità composta da dati numerici, ovvero le misure, e di elementi grafici, ovvero i disegni. Per ogni campagna di rilievo, la poligonale viene proiettata e usata come scheletro per realizzare i disegni. Nelle campagne successive, nuovi tratti di grotta vengono uniti ai rilievi precedenti. Ogniqualvolta viene misurato un anello chiuso, viene georeferenziata una stazione (vincolo), o vengono eseguite misure di controllo, la poligonale viene deformata per distribuire l’errore cumulato. Di conseguenza, i disegni realizzati in precedenza devono subire precise distorsioni. Il problema che Mudrak e Budaj hanno risolto è stato un algoritmo automatizzato per distribuire l’errore e aggiornare simultaneamente le poligonali e i disegni di una grotta, man mano che il rilievo evolve nel tempo. La soluzione proposta dai due autori si è materializzata nel software libero therion.

Riassumendo, lo scopo di therion è duplice: da un lato, organizzare i dati delle campagne di rilievo in un computer in una forma quanto più simile ai dati, ai disegni e alle note presi in grotta; dall’altro, realizzare disegni di pianta e sezione e modelli tridimensionali aggiornabili e modificabili a piacimento. Inoltre, therion permette di calcolare i valori di sviluppo (spaziale e planimetrico), profondità, dislivello, e molte altre statistiche.

Therion opera su tutti i sistemi operativi più diffusi: Unix, Linux, MacOSX, Win32. Si basa sul linguaggio di Survex, un altro software open-source per il rilievo ipogeo, creato da Olly Betts nel 1990. All’interno di Survex, i dati sono organizzati con una logica gerarchica, che sopravvive tale e quale in therion.

La logica di funzionamento di therion

Come accennato nella sezione precedente, il punto di forza di therion è la logica con cui vengono organizzate le poligonali: piccoli tratti di grotta vengono assemblati in rami, i rami in grotte; più grotte si uniscono in complessi, e più complessi vengono uniti a formare sistemi. Il vantaggio è che la stessa logica si applica tanto a grotte di media taglia che a grandi sistemi.

Tutti gli elementi del rilievo sono contenuti in file di testo. Essi sono di tre tipi:
– file dati, e i file di unione delle poligonali, con estensione th;
– file di disegno, con estensione th2;
– file di configurazione, con estensione thcfg.

Di fondamentale importanza sono i file che uniscono le poligonali parziali e i disegni, chiamati convenzionalmente index (index.th). Il risultato finale viene prodotto attraverso un compilatore, che legge il file di configurazione (CFG.thcfg), esegue delle operazioni sui file di testo e produce gli output desiderati: disegni, modelli 3d, statistiche.

L’interfaccia grafica di therion è xtherion, apribile da terminale digitando xtherion e premendo invio. L’interfaccia grafica contiene un editor di testo per i file dati (estensione th), un editor editor di testo per i file di disegno (estensione th2) e un editor di testo per i file di configurazione.

1. La struttura delle cartelle

Per creare un progetto di rilievo in therion, è importante organizzare in modo logico e ordinato le cartelle. In questo articolo ne presentiamo uno, ma può essere modificato a piacimento a seconda del gusto del rilevatore.

La cartella principale del progetto contiene:
– una cartella th, contenente file dati (estensione .th)
– una cartella th2, contenente i file di disegno (estensione .th2)
– la cartella out, dove verranno esportati tutti i file in output
– la cartella layout, contenente i layout per personalizzare l’aspetto degli elementi grafici, stampare la legenda, la griglia delle coordinate, eccetera.
– il file index.th, necessario ad assemblare il progetto
– il file CFG.thcfg, necessario a compilare il progetto e generare gli output

I file th

I dati della poligonale sono contenuti in file con estensione th. La struttura del file ricorda quella di un normale foglio di campagna. Ogni sessione di rilievo viene chiamata survey, e le viene assegnato un nome. All’interno della survey, campare il libretto di campagna vero e proprio, chiamato centerline. La centerline contiene i dati, ad esempio le misure prese con DistoX2 ed esportate da TopoDroid, nonché l’indicazione della data, declinazione magnetica, e i nomi dei rilevatori. Inoltre, nella centerline vengono specificate le unità di misura (tipicamente metri o piedi per le misure lineari e gradi per gli angoli), nonché la sequenza con cui si vogliono scrivere i dati. Ad esempio: da a, alto basso destra sinistra; oppure da a alto destra basso sinistra. Infine, contiene i comandi extend, che servono a sviluppare le battute verso destra, verso sinistra o verticalmente nella sezione longitudinale estesa.

Per georeferenziare una stazione (ad esempio l’ingresso), prima si indica il sistema di coordinate (cs) utilizzato (ad esempio, specificando l’identificativo EPSG) e poi si usa il comando fix seguito dal nome della stazione, e dai valori di longitudine, latitudine e quota.

Inoltre, è possibile assegnare l’etichetta entrance (ingresso) a ciascun ingresso.


ramo_a.th

survey ramo_a -title “ramo_a”

centerline
date 2026.10.30
team “Asterix”
team “Obelix”

units length meters
units compass clino degrees
data normal from to length compass clino

station 0 “Ingresso” entrance

cs EPSG:6708
fix 0 346231.6 5161376.4 985

0 . 0.94 248.0 85.1 # Alto
0 . 1.09 327.1 -76.5 # Basso
0 . 0.42 63.6 -10.7 # Destra
0 . 0.55 245.2 -6.3 # Sinistra
extend left
0 1 3.22 338.2 3.5
1 . 0.33 200.0 89.4
1 . 3.22 331.4 -82.1
1 . 0.30 10.6 -3.6
1 . 0.21 265.8 -3.00
1 . 1.11 193.3 45.3
extend right
1 2 4.46 184.3 -1.9
extend left
2 3 3.89 48.1 -18.2
3 4 5.10 79.4 -33.0

[…]
endcenterline

endsurvey


Come mostrato nell’esempio, ogni battuta è rappresentata da una riga di 5 valori: stazione di partenza, stazione di arrivo, distanza, azimuth, inclinazione.

Le misure laterali, chiamate splay, sono registrate da una riga di 5 valori: stazione di riferimento, un punto (o un trattino) per indicare lo splay, seguito da: distanza, azimuth, inclinazione.

Prima di ogni battuta, può essere indicato il verso in cui deve essere sviluppata nella sezione longitudinale estesa. Ciascun extend si applica all’intero gruppo di battute sottostanti, a meno che non compaia un nuovo comando extend. Questo consente di raggruppare più battute sotto uno stesso comando extend. Ad esempio, le battute 2—3 e 3—4 verranno sviluppate a sinistra.

Una survey può contenere varie centerline. Inoltre, una survey può contenere delle sotto-survey, ma non tratteremo questo caso nel presente articolo.

2. Il file index.th

Come anticipato all’inizio di questa sezione, il file index.th contiene le istruzioni per assemblare le poligonali parziali e i disegni. Generalmente, la sua struttura è semplice. Ne riportiamo un esempio, in questo caso contenente solo dati delle poligonali e nessun file di disegno:


index.th

survey index_GrottaX -title “GrottaX”

input th/ramo_a.th
input th/ramo_b.th

[…]

# EQUATES
equate 0@ramo_b 8@ramo_a
equate 3@ramo_b 6@ramo_c  4.1@ramo_d

endsurvey


Nelle prime righe vengono caricati i dati delle poligonali parziali. Successivamente, si elencano le stazioni che vanno identificate, attraverso il comando equate. Il numero di stazioni identificate è arbitrario, e possono provenire sia da survey diverse che dalla stessa survey. E’ necessario indicare a quale survey appartiene ciascuna stazione, usando l’associazione [nome_stazione]@[nome_survey].

3. Il file .thcfg

Nel file di configurazione si specificano gli output desiderati e si caricano i layout. Questi ultimi sono piccoli file di testo (estensione .thc) che servono a personalizzare l’aspetto degli output. Essi danno un controllo fine sul risultato finale, infatti attraverso di essi si può, ad esempio, fissare la scala della rappresentazione (ad es. 1:200), stampare una legenda, stampare il Nord e la scala, stampare la lista dei rilevatori, cambiare i colori della poligonale e dello sfondo, far comparire i nomi delle stazioni, eccetera.

La struttura più semplice di un file di configurazione è la seguente:


CFG.thcfg

source index.th

layout stations
  debug station-names
endlayout

# Disegni 2D
export map -projection plan -output “out/Pianta.pdf” -layout stations
export map -projection extended -output “out/SezioneLong.pdf” -layout stations

# Modelli (3D, kml)
export model -fmt kml -output “out/Grotta.kml”
export model -fmt loch -output “out/Grotta.lox”

# Statistiche
export survey-list -fmt txt -output “out/survey_data.txt”


All’inizio del file, viene caricato il file index, attraverso il comando source. In questo esempio, il file di layout è stato scritto direttamente dento al file di configurazione, ma potrebbe essere richiamato dalla cartella layout. Nel layout, viene attivata la stampa dei nomi delle stazioni (debug stations-names). Rimandiamo il lettore al manuale di therion (thbook) per la lista completa dei comandi.

Le righe più importanti riguardano l’esportazione. Il comando export map è riservato all’esportazione dei disegni bidimensionali della pianta e della sezione in formato PDF. Il comando export map è seguito dal tipo di proiezione: -projection plan per la pianta e -projection extended per la sezione longitudinale. Poi, viene indicato il nome e la posizione del file che conterrà il disegno finito. Infine, viene caricato il layout da utilizzare nella creazione dell’output.

Nell’esempio, viene mostrato anche come esportare i modelli tridimensionali e i KML georeferenziati. I modelli vengono esportati con il comando export model, seguito dall’indicazione del formato (-fmt) e dalla destinazione dell’output.

Infine, therion permette di esportare delle statistiche sui dati, attraverso il comando export survey-list, in formato testo o html.

Il file di configurazione viene aperto nella finestra di xtherion. Premendo il tasto di compilazione, therion genera gli output desiderati, stampa un log file e segnala eventuali errori, qualora la compilazione non fosse andata a buon fine. E’ importante ricordare che i risultati sulla compensazione degli errore, in particolare la chiusura degli anelli e la distribuzione dell’errore al loro interno, sono contenuti nel file log (esso viene creato nella cartella principale del progetto, non nella cartella out).

3. I file .th2

Le righe di testo che codificano gli elementi grafici sono contenuti in file con estensione th2. Tali file vengono creati e modificati nella finestra di xtherion relativa ai disegni. Si comincia creando un nuovo file th2 e salvandolo nella relativa cartella th2. Tale file va popolato con degli schizzi, chiamati scrap. Gli scrap sono piccole porzioni di disegno che possono contenere punti (ad es. stazioni, quote, commenti), linee (ad es. pareti, isoipse, bordi dei pozzi) o aree (ad es. riempimenti). Questi elementi grafici possono essere inseriti usando i tasti corrispondenti nell’editor grafico dei disegni.

Una delle operazioni più importanti nella stesura di un file th2 è quella di riferire le stazioni alle loro coordinate. Per farlo, esiste la maschera denominata “opzioni” (options). Per ogni stazione, si digita la stringa -name [nome_stazione]@[nome_survey] con i dati corrispondenti alla stazione. Ad esempio, alla stazione numero 10 nella survey ramo_a, verrà associata l’opzione -name 10@ramo_a. Solo riferendo le stazioni al dato corrispondente nei file th è possibile deformare il disegno, aggiornandolo ogniqualvolta vengano aggiunti segmenti di rilievo.

Ad ogni elemento grafico corrisponde una stringa di testo. In effetti, il file th2 è un file di testo, con una struttura simile a quella riportata di seguito


Pianta.th2

encoding utf-8
##XTHERION## xth_me_area_adjust 0 0 256 256
##XTHERION## xth_me_area_zoom_to 100
##MAPIAH## image_insert_v1 {format=xvi;filename=..%2Fout%2FPianta.xvi;xx=-19;yy=-6;xScale=0.5;yScale=0.5;rotationCenterDx=-76.0545700659894;rotationCenterDy=-0.158759032447544;rotationDeg=0;pivotSet=true;xviRoot=}

scrap scrap_a_1p -projection plan -scale [0 0 1600 0 0.0 0.0 40.64 0.0 m]

  point 263.9 219.8 station -subtype fixed -name 0@ramo_a
  point 279.5 173.9 station -subtype fixed -name 1@ramo_a
  […]
  point 139.7 193.1 station -subtype fixed -name 10@ramo_a

  line wall -id sx_a -reverse off
  281.1 223.4
  269.2 220.6 268.4 222.7 281.6 188.7
  […]
  100.7 92.8 100.5 92.9 99.9 93.0
  99.2 93.2 99.0 96.0 98.4 94.8
  mark END
  endline

  area mudcrack
   line-1
  endarea

[…]
endscrap

scrap scrap_a_2p – …

[…]


Analogamente, verrà preparato un file di disegno per la sezione longitudinale. La sintassi è identica a quella usata per la pianta, ma ogni scrap avrà una proiezione di tipo extended (scrap [nome_scrap] -projection extended … ).

4. index_disegni.th2

Analogamente ai segmenti di poligonale, anche i disegni (ovvero gli scrap) vanno uniti fino a formare il disegno completo, scrivendo un file index_disegni.th2 (notare l’estensione th2). Anche in questo caso, la logica ricalca quella dei file th, con i file th2 che sostituiscono i file th, e con gli scrap che sostituiscono le survey.

Inoltre, gli scrap vengono inseriti nell’ambiente mappa (map), il cui scopo è simile a quello di una tela da pittore: racchiude alcuni schizzi che rappresentano una porzione (o la totalità) della grotta. Più mappe possono essere combinate insieme fino a formare il disegno finale. Solo gli elementi di tipo mappa possono essere traslati nello spazio: questa funzione è particolarmente utile quando si vogliano rendere visibili dei passaggi che altrimenti risulterebbero sovrapposti.
con una struttura simile alla seguente:


index_disegni.th2

input Pianta.th2

# JOIN
join scrap_a_1p scrap_a_2p
join scrap_a_2p scrap_b_1p

map Pianta_map1 -projection plan
scrap_a_1p
scrap_a_2p
scrap_b_1p
endmap


Il file index_disegni.th2 può essere salvato nella cartella th2.

Per chiudere il cerchio, il file index_disegni.th2 deve essere aggiunto al file index.th, come segue:


index.th

survey index_GrottaX -title “GrottaX”

input th/ramo_a.th
input th/ramo_b.th

# EQUATES
equate 0@ramo_b 8@ramo_a
equate 3@ramo_b 6@ramo_c  4.1@ramo_d

# DISEGNI
input th2/index_disegni.th2

endsurvey


Infine, nel file di configurazione va selezionata la mappa con il comando select:

select Pianta_map1@index_GrottaX

A questo punto, il file CFG.thcfg potrà generare gli output grafici specificati dai comandi export.

Therion-studio: una nuova interfaccia grafica per therion.

Tra il 2025 e il 2026 si è assistito a una proliferazione di app e software il cui scopo è rendere più intuitivo l’uso di software di rilievo consolidati, tra cui Therion. Dei molti programmi proposti, a novembre 2026 therion-studio appare come uno tra i più sviluppati e mantenuti. Therion-studio è stato sviluppato da Ladislav Blazek. Esso permette di navigare facilmente tra i file di un rilievo therion; accedere facilmente ai file output senza dover lascare l’editor; supporta tutte le funzionalità dell’editor originale xtherion; facilita la navigazione tra gli ambienti survey, centreline, map e scrap. Ad esempio, distingue i comandi con un codice di colori. Inoltre, contiene un visualizzatore per i modelli tridimensionali. Un aspetto utile è il manuale, molto completo (anche se migliorabile nella qualità del testo, che è stato generato con una intelligenza artificiale). A seconda dell’ambiente in cui ci si trova e dei comandi che vengono digitati, in una finestra dell’editor compaiono suggerimenti pertinenti estratti dal manuale. Therion-studio non include therion nel pacchetto di installazione, e dunque quest’ultimo deve essere installato separatamente. Velocizzando la navigazione nei progetti di therion, therion-studio aiuta indirettamente nell’apprendimento e nell’uso di questo software, spesso ritenuto ostico da imparare nell’ambiente speleologico. Tuttavia, per poter realizzare un rilievo, rimane assolutamente imprescindibile conoscere la sintassi e i comandi di therion. A questo scopo, il manuale di riferimento resta il manuale thbook (link), la pagina wiki di therion, e alcune guide come quella intitolata Therion by examples, curata da Marco Corvi.

Riferimenti web

Therion, sito ufficale: https://therion.speleo.sk/

Survex, sito ufficiale: https://survex.com/

Marco Corvi, Therion by Examples https://www.marcocorvi.altervista.org/caving/tbe/index.htm

Se vuoi condividere: