it:dtm

Riassunto

Questa è una breve introduzione su come creare modelli digitali del terreno (DEM e/o DTM) da dare in input a Therion per produrre modelli 3D. Questo documento è in fieri (Gen. 2011).

Pagina originale a cura di Wolfgang Zillig.

Dati di input

Ci sono due insiemi di dati (dataset) liberamente scaricabili.

Il primo è il dataset della NASA raccolto durante la campagna SRTM (Shuttle Radar Topology Mission). Contiene dati di quota per tutto il mondo (esclusi i poli), con una risoluzione di 3 arcsec (circa 90 m). Solo per gli USA i dati sono forniti ad una risoluzione di 1 arcsec (circa 30 m). Entrambi i dataset hanno i dati di quota riferiti ad una griglia coordinata in latitudine/longitudine, perciò è necessaria una conversione di coordinate, per poterli usare.

Il secondo dataset è Viewfinderpanoramas. I dati coprono una zona limitata, ma, per le Alpi sono disponibili con una risoluzione di 1 arcsec (circa 30 m).

Come immagini del terreno da sovraimporre al DEM sono disponibili diverse fonti: immagini satellitari, foto aeree, o mappa topografiche. Il problema è solo per dati non liberamente accessibili.

I dati del satellite Landsat hanno una risoluzione massima di circa 15m/pixel (pan sharpened images). E non sono immagini a colori “veri” perché perte dell'informazione si è persa a causa dell'atmosfera.

Alcune nazioni, come Germania e Austria, forniscono dati attraverso WMS (Web Map Service). Altre nazioni rendono disponibili i dati con ECWP che è uno speciale protocollo per trasferire via rete mappe e ortofoto altamente compresse. Questo protocollo è stato introdotto da Ermapper. Ci sono anche programmi freeware per accedere a questi dati (questo interessa principalmente Italia, Spagna e Regno Unito).

Background information

Per convertire i dati di input devi conoscere un minimo di background sui sistemi di coordinate. EPSG (European Petroleum Survey Group) ha codificato una lista di sistemi di coordinate, per cui se conosci il codice numerico EPSG dei sistemi di coordinate di input e output dei dati, è semplice fare la conversione. Ecco una lista dei codici di alcuni sistemi di coordinate:

Sistema di coordinate Codice EPSG
WGS84 lat/long 4326
Gauss Krüger Zone 2 31466
GK3 31467
GK4 31468
Bundesmeldenetz BMN M28 31284
BMN M31 31285
BMN M34 31286
WGS84 UTM Zone 31N 32631
UTM 32N 32632
UTM 33N 32633
NZ Map Grid 1949 27200
NZ Transverse Mercanter 2000 2193

Le ultime due cifre del UTM definiscono la zona. Un commento per BMN: il falso nord (5000000) non è incluso.

Programmi addizionali

Per preparare i dati per Therion/Loch hai bisogno di altri programmi. Ci sono programmi liberi che puoi usare per questo compito.

GDAL è una collezione di programmi per elaborare dati geografici (raster). Qui si descrivono alcuni programmi; per maggiori dettagli consulta il manuale di GDAL che puoi trovare al link sotto. Per l'istallazione FWTools fornisce eseguibili precompilati. Gli esempi, sotto riportati, spiegano un poco l'uso di GDAL, ma la lettura delle pagine del manuale sul sito di GDAL sicuramente aiuterà.

Ogni programma, se invocato com –help, riporta una succinta descrizione di come usarlo.

gdalinfo fornisce informazioni su un file. In particolare la georeferenziazione (e altre cose forse interessanti).

gdal_translate trasforma i dati da un formato immagine ad un altro. È anche possibile estrarre parte dell'immagine.

gdalwarp trasforma i dati e le immagini da un sistema di coordinate ad un altro. Può fare anche interpolazione, ed è possibile limitare l'output ad un'area definita.

gdal_merge permette di unire diversi input file in un unico output. Opera sia sui dati di quota (srtm) che su immagini (ortofoto, carte topografiche, …), purché correttamente georeferenziate.

Primo esempio

Il primo esempio è un monte nella Germania meridionale, precisamente lo Sontagshorn. Come sistema di coordinate uso il sistema locale Gauss Grüger, zona 4, il cui codice EPSG è 31468. Il limite dell'area è, a Nord 5286980, a Sud 5279000, ad Ovest 4549000 e ad Est 4556980. Ha perciò dimensione 7980×7980 m. Larghezza ed altezza sono state scelte in modo da avere multipli di 30m che è la risoluzione dei dati.

La regione di questo esempio è contenuta nei dati N47E012. Il file è compresso ZIP e devi decomprimerlo prima di continuare. Poi lo puoi convertire in immagine TIF

  gdalwarp -t_srs EPSG:31468 -te 4548985 5278985 4556995 5286995 -tr 30 30 -r cubic N47E012.hgt dem.tif 

Note.

  • -t_srs EPSG:31468 specifica il sistema di coordinate di output
  • -te x_min y_min x_max y_max specifica l'area della regione di output
  • -tr 30 30 è la risoluzione (qui 30 x 30 metri)
  • -r cubic interpolazione cubica (di solito produce risultati accettabili)

Come puoi notare la regione è stata spostata di 15 metri (mezza risoluzione). Therion definisce il punto di una cella come il suo centro; quindi per avere la quota nel centro della cella bisogna specificare una griglia spostata di metà della dimensione della cella, sia in X che in Y.

Con questo comando viene creato il file “dem.tif”, perché gdalwarp non produce output in formato testo. La conversione viene fatta con un altro programma:

  gdal_translate -of AAIGrid dem.tif dem.txt

Note.

  • -of specifica il formato di output format (qui ArcInfo Asci Grid)

Per usare questo file con Therion devi rimuovere le prima quattro righe che contengono la descrizione della regione.

  surface # declaration of the height model
  grid 4549000 5279000 30 30 267 267 # grid x_min y_min x_resolution y_resolution n_cols n_rows
  # followed by the matrix of the elevation data (from dem.txt):
  1123 1234 ...
  ...
  # (data not shown completely)
  endsurface

Per specificare la generazioen del modello 3D devi editare il file di configurazione .thconfig e aggiungere la riga

  export model -o model.lox  

Note.

  • -o nome del file di output

Se ora esegui therion, ottieni un file “model.lox” che puoi visualizzare con loch, e contiene la superficie in grigio.

In Germania uno può accedere a dati geografici attraverso il WMS (web map service). Il link per il servizio in Bavaria (dove si trova il Sonntagshorn) è:

http://deutschlandviewer.bayern.de/ogc/getogc.cgi?

Per prima cosa devi chiedere al server quali mappe (layers) fornisce:

http://deutschlandviewer.bayern.de/ogc/getogc.cgi?request=getcapabilities&Service=WMS

Il risultato è un file XML (un file di testo). I formati di dati possibili sono elencati dopo la tag <GetMap>. Uso il formato JPEG (immagini compresse). La riga <SRS>EPSG:31468</SRS> ci dice che il server produce i dati già georeferenziati nel sistema di coordinate corretto. Se guardi nel file, troverai i nomi dei layer. Due di interesse sono i layer DOP, che sta per “Digital Ortho Photo”, e TK50, carte topografiche in scala 1:50000. Puoi accedere ad una mappa con il seguente url

http://deutschlandviewer.bayern.de/ogc/getogc.cgi?request=getmap&VERSION=1.1.1& REQUEST=GetMap&SERVICE=WMS&LAYERS=TK50&SRS=EPSG:31468&BBOX=4549000,5279000,4556980,5286980& WIDTH=1995&HEIGHT=1995&FORMAT=image/jpeg

Note.

  • REQUEST=GetMap specifica che richiedi una mappa
  • VERSION=1.1.1 versione del software
  • SERVICE=WMS quale servizio usare (Web Map Service)
  • LAYERS=TK50 nome del layer
  • SRS=EPSG:31468 sistema di coordinate
  • BBOX=4549000,5279000,4556980,5286980 la regione di interesse
  • WIDTH=1995 numero dei pixel nella direzione ovest-est (massimo 2000 pix, potrebbe esser diverso per altri server)
  • HEIGHT=1995 umero dei pixel nella direzione sud-nord (massimo 2000 pix, potrebbe esser diverso per altri server)
  • FORMAT=image/jpeg formato grafico

Salva l'immagine come file overlay.jpg

Dobbiamo aggiungere una riga all'esempio precedente

  surface # declaration of the height model
  grid 4549000 5279000 30 30 267 267 # grid x_min y_min x_resolution y_resolution n_cols n_rows
  ## bitmap "file name" [ x y X Y xx yy XX YY] 
  ## small letters in picture coordinates (0 0 is lower left)
  ## and capital letters in real coordinates (X Y)
  bitmap ./overlay.jpg [0 0 4549000 5279000 1995 1995 4556980 5286980]
  
  # followed by the matrix of the elevation data (from dem.txt):
  ...
  # (data not shown here)
  endsurface

Fusione di file DEM

Non è difficile metter insieme i dati di quota per regioni coperte da due o più file. Supponiamo per esempio di dover unire i file N47E012.hgt e N47E013.hgt. Per prima cosa usiamo gdal_merge (un'altra delle GDAL utilities) per unire i dati di questi due file in un solo file, poi estraiamo la regione di interesse:

  gdal_merge -o N47E012E013.tif N47E012.hgt N47E013.hgt

Note.

  • -o none del file di output seguito dai nomi dei file di input

Questo comando crea un file TIF con i dati di quota (numeri interi). La maggior parte degli editor di immagini non visualizzano questo file come ci si potrebbe aspettare, perché non contiene la definizione della mappa dei colori. Perciò appare quasi completamente nero. Non devi preoccuparti: infatti se esegui il comando sotto ottieni le informazioni geografiche del file (sistema di coordinate, ellissoide, limiti della regione coperta, risoluzione, …)

 
  gdalinfo -mm N47E012E013.tif

Note.

  • -mm mostra anche i valori minimo e masssimo

A questo punto puoi usare questo file come input per estrarre la regione di interesse come descritto prima.

Altri formati di input

GDAL può leggere (e scrivere) diversi differenti formati di file. Usa il comando gdalinfo quando hai dei dati, per vedere se GDAL li riconosce.

Mappe scannerizzate

GDAL è utile per georeferenziare le mappe che hai scannerizzato tu stesso. Per cominciare devi conoscere le coordinate reali (nel sistema di riferimento) e in pixel (nell'immagine) di alcuni punti: aggiungi queste informazioni a gdal_translate con l'opzione −gcp pixel line easting northing. Puoi usare OpenEV (che trovi in FWTools) per ottenere questi numeri. Il secondo passo è il comando gdalwarp che “rettifica” l'immagine. Consulta la documentazione online per ulteriori dettagli. (Penso che questo vada un po' troppo in là per un wiki di Therion).

Domande & note

Prima di tutto, puoi modificare questa pagina! Poi, manda una email sulla lista di therion, oppure contattami direttamente wollez (äht) gmx (doht) net .

Un esempio

http://ubss.org.uk/terraintool/terraintool.php

Fa tutte le cose complicate, e produce l'output come file .th. Certi offset potrebbero essere necessari a seconda del sistema di coordinate usato.

Se si blocca, prova a cancellare il file “terrain.properties” dalla cartella che contiene i file *.jar del programma. La prossima volta che lo esegui ne crea uno nuovo che sembra funzionare (dovrai rimettere i tuoi valori di default).

Bruce M.

Il formato dati dei file HGT è molto semplice. Personalmente uso un programma C che estrae il DEM dai file HGT. Produce file con sintassi Therion pronti da includere (col comando “input”) nel progetto therion. Funziona solo per le Alpi e per certi sistemi di coordinate in uso in Italia. Richiede che i file HGT siano stati scaricati e decompressi preventivamente. (Magari dopo metto il link).

Marco C.

  • it/dtm.txt
  • Last modified: 14 years ago
  • by marco_corvi