Skip navigation.
Home
Istituto Scienze della Terra - SUPSI

Calcolo completo di curve di livello in Grass a partire da file puntuali

Contesto Generale

Moltissimi ambiti d'attività legati alla progettazione architettonica e territoriale necessitano di dati relativi la conoscenza dettagliata del terreno. Elementi antropici, copertura vegetale ed asperità naturali ne sono un esempio. Per questo motivo, in questa sezione, si propone il calcolo di curve di livello dettagliate a partire da un modello delle altezze. Questo é generato a sua volta su base di punti quotati che possono derivare dal risultato di un rilievo o da un volo Lidar, piuttosto che da fotogrammetria aerea.

L'esempio illustrato nel .pdf a link utilizza la soluzione Grass, software potente di calcolo OpenSource.

PDF : CALCOLO GRASS CURVE DI LIVELLO A PARTIRE DA FILE PUNTI MODELLO NUMERICO

Informazioni supplementari

Alcune informazioni supplementari non presenti nel documento .pdf, in particolare tappe principali per lo smoothing delle curve di livello da dtm 2m :

Tappa 1) con v.generalize primo calcolo di smoothing con logaritmo appropriato.

Generalization algorithm : snakes o hermite per esempio

snakes : liscia le curve in modo vistoso (vedi immagine)

hermite : ha piuttosto l'effetto di limare la polilinea oiginale in modo quasi impercettibile ma efficace per smussare gli angoli

(attivare Copy attributes e Type : solo line e non boundary e area, senò problemi nella gestione degli attributi ovvero indicazione sulla quola "level")

Maximal tolerance algorithm ed altri parametri, lasciare per default. Si tratta di valori di tolleranza che consentono di giocare sul grado di generalizzazione. Più la tolleranza é grande e più la polilinea originale verrà semplificata. Quando la tolleranza tende ad infinito la polilinea tende ad una linea retta originata dai due estremi. Per più informazioni sul concetto di tolleranza vedi il sito seguente : http://www.sli.unimelb.edu.au/gisweb/LGmodule/LGModule.htm

 curve di livello originali (dopo r.contour, in nero) e curve smoothig con snakes (in viola)

 

Tappa 2) Sempre con v.generalize rimuovere le linee più piccole di un valore stabilito (anche qui attivare Copy attributes e Type solo line). Questa operazione consente un filtro per eliminare curve di piccola taglia.

(.) Remove lines and areas smaller than threshold

Generalization algorithm : remove_small

maximal tolerance value : esempio valore 5 (elimina le polilinee con lunghezza totale < 5 m)

 curve di livello dopo v.generalize di snakes e remove_small

 

Tappa 3) Solite operazioni di export in shp e successivo export (fuori da Grass) per ottenere dwg)

Conclusioni L'estrazione delle curve di livello da dtm precisi esige senz'altro uno smoothing. Ma quale é il migliore e rappresenta meglio la situazione reale? In assenza di analisi comparative tra dati ottenuti e curve ufficiali di altri prodotti (piani corografici, indicazioni Swisstopo, indicazioni Cantone, piani progetto privati, ecc.) la soluzione migliare partendo da un dtm 2m ci sembra l'algoritmo di hermit seguito da un filtro per le curve < 5. Questo perché non vado a modificare troppo le curve generate dal dtm ma al tempo stesso rendo tutto più leggibile.

Riassunto con linee di comando in Grass

In Grasseto nome dei file in entrata e uscita (variabili)

Si parte con il dtm già caricato in Grass

1) Settare la region con le estensioni geografiche di mio interesse

g.region n=150000 s=90000 e=750000 w=725000 res=2 save=progetto_GC_region

2) Creare curve di livello a equidistanza da definire e solo nella region settata al punto 1)

r.contour input=1353_23@dtm2m_estratti_studenti output=curve1m_par step=1 cut=0

3) Smoothing di Snakes delle curve ottenute

v.generalize -c input=curve1m_par@dtm2m_estratti_studenti output=curve1m_par_snakes 
type=line method=snakes threshold=1.0 look_ahead=7 reduction=50 slide=0.5 angle_thresh=3 
degree_thresh=0 closeness_thresh=0 betweeness_thresh=0 alpha=1.0 beta=1.0 iterations=1 layer=1

4) Rimozione delle curve più piccole di 5 m

v.generalize -c input=curve1m_par_snakes@dtm2m_estratti_studenti output=curve1m_par_snakes_removesmall5 
type=line method=remove_small threshold=5.0 look_ahead=7 reduction=50 slide=0.5 angle_thresh=3 
degree_thresh=0 closeness_thresh=0 betweeness_thresh=0 alpha=1.0 beta=1.0 iterations=1 layer=1

5) Export in shp

v.out.ogr input=curve1m_par_snakes_removesmall5@dtm2m_estratti_studenti type=line,boundary 
dsn=curve1m_paradiso layer=1 format=ESRI_Shapefile  

Ing. Alessio Spataro