12 KiB
12 KiB
Manuale Utente: Elevation Tool
1. Introduzione
Elevation Tool è un'applicazione desktop progettata per ottenere dati di elevazione (altitudine) per specifiche coordinate geografiche (latitudine e longitudine) sulla superficie terrestre. Utilizza i dati DEM (Digital Elevation Model) NASADEM, una versione migliorata dei dati SRTM forniti dalla NASA.
L'applicazione permette di:
- Ottenere l'elevazione per un singolo punto.
- Scaricare automaticamente i "tile" (mattonelle) di dati DEM necessari e le relative immagini di anteprima ("browse images") da server remoti.
- Mantenere una cache locale dei dati scaricati per un accesso offline veloce e per ridurre download ripetuti.
- Pre-scaricare i dati per un'intera area geografica.
- Visualizzare le immagini di anteprima dei singoli tile o un mosaico dell'area scaricata.
- Visualizzare i dati di elevazione di un singolo tile come plot 3D interattivo.
2. Prerequisiti e Installazione
Prima di utilizzare l'applicazione, assicurati di avere quanto segue:
- Python: Una versione recente di Python 3 installata sul tuo sistema.
- Librerie Python: Installa le librerie necessarie tramite
pip:pip install requests rasterio Pillow matplotlib numpy netrc opencv-pythonrequests: Per scaricare dati da internet.rasterio: Per leggere i dati DEM (file HGT).Pillow: Per elaborare le immagini di anteprima.matplotlib: Per visualizzare le immagini 2D e i plot 3D.numpy: Dipendenza fondamentale perrasterioematplotlib.netrc: Per gestire l'autenticazione (spesso già presente).opencv-python: (Attualmente non usata nella versione finale, ma potrebbe essere utile per future elaborazioni 2D).
- Account NASA Earthdata Login: I dati NASADEM richiedono un account gratuito. Registrati su: https://urs.earthdata.nasa.gov/users/new
- File
.netrcper Autenticazione: Per permettere all'applicazione di scaricare i dati protetti, devi creare un file chiamato.netrcnella tua directory home:- Posizione:
- Windows:
C:\Users\TuoNomeUtente\.netrc - Linux/macOS:
/home/tuonomeutente/.netrc(o/Users/tuonomeutente/.netrc)
- Windows:
- Contenuto (usa un editor di testo semplice):
Sostituiscimachine urs.earthdata.nasa.gov login TUA_USERNAME_EARTHDATA password TUA_PASSWORD_EARTHDATATUA_USERNAME_EARTHDATAeTUA_PASSWORD_EARTHDATAcon le tue credenziali reali. - Permessi (Linux/macOS): È cruciale impostare i permessi corretti per sicurezza. Apri un terminale e digita:
chmod 600 ~/.netrc
- Posizione:
3. Panoramica dell'Interfaccia
L'applicazione presenta una singola finestra principale divisa in sezioni:
- Get Elevation for Point:
Latitude: Campo per inserire la latitudine (gradi decimali, es. 45.0).Longitude: Campo per inserire la longitudine (gradi decimali, es. 7.0).Get Elevation(Pulsante): Avvia la ricerca dell'elevazione per il punto specificato. Scarica i dati necessari (HGT e browse image) se non presenti in cache.Result: Etichetta che mostra l'elevazione trovata (in metri), un messaggio di "nodata" o un errore.Show Browse Image (2D)(Pulsante): (Abilitato dopo successo) Apre una finestra separata (usando Matplotlib) mostrando l'immagine di anteprima del tile contenente il punto, con nome e fonte sovraimpressi. Permette zoom e pan.Show DEM Tile (3D)(Pulsante): (Abilitato dopo successo) Apre una finestra separata (usando Matplotlib) mostrando un plot 3D interattivo dei dati di elevazione del tile contenente il punto. Permette rotazione, zoom e pan.
- Pre-Download Tiles for Area:
Min Lat,Max Lat,Min Lon,Max Lon: Campi per definire i limiti di un'area rettangolare da scaricare.Download Area Tiles(Pulsante): Avvia il download (in background) di tutti i dati HGT (estratti) e delle immagini browse per tutti i tile che intersecano l'area specificata.Show Area Browse Images (2D)(Pulsante): (Abilitato dopo successo download area) Apre una finestra separata (usando Matplotlib) mostrando un mosaico delle immagini di anteprima dei tile dell'area scaricata, con una griglia rossa e il nome di ogni tile. Permette zoom e pan.Status: Etichetta che mostra lo stato del download dell'area (Idle, Downloading, Complete, Error).
4. Funzionalità Dettagliate
- Ottenere Elevazione (Get Elevation):
- Inserisci Latitudine e Longitudine valide.
- Clicca "Get Elevation".
- L'applicazione determina il tile DEM 1x1 grado necessario.
- Controlla se il file HGT estratto esiste nella cache locale (
elevation_cache/hgt_tiles/). - Se non esiste:
- Si connette al server NASA usando le credenziali
.netrc. - Scarica il file
.zipcontenente i dati HGT. - Estrae il file
.hgtnella cache locale (hgt_tiles). - Tenta di scaricare l'immagine browse
.jpgpubblica nella cache locale (browse_images).
- Si connette al server NASA usando le credenziali
- Se esiste (o dopo download):
- Apre il file
.hgtlocale. - Legge il valore di elevazione per le coordinate esatte.
- Mostra il risultato nell'etichetta "Result".
- Abilita i pulsanti "Show Browse Image (2D)" e "Show DEM Tile (3D)".
- Apre il file
- Scaricare Area (Download Area Tiles):
- Inserisci i limiti geografici dell'area.
- Clicca "Download Area Tiles".
- L'applicazione calcola quali tile 1x1 grado sono necessari.
- Per ogni tile necessario:
- Controlla se il file HGT estratto esiste già in cache.
- Se non esiste, esegue i passi 5a-5c di "Ottenere Elevazione".
- Indipendentemente dal fatto che l'HGT esistesse già, controlla se l'immagine browse esiste in cache e tenta di scaricarla se manca.
- L'operazione avviene in background per non bloccare l'interfaccia. Lo stato è mostrato nell'etichetta "Status".
- Al termine, un messaggio riassume quanti tile sono stati processati e quanti file HGT sono stati effettivamente scaricati/estratti. Il pulsante "Show Area Browse Images (2D)" viene abilitato.
- Visualizzazione 2D (Browse Image - Singolo Tile):
- Ottieni l'elevazione per un punto con successo.
- Clicca "Show Browse Image (2D)".
- L'applicazione cerca l'immagine browse corrispondente nella cache (
browse_images). - Se trovata, carica l'immagine, aggiunge il nome del tile e la fonte come overlay.
- Mostra l'immagine in una nuova finestra Matplotlib interattiva.
- Visualizzazione 3D (DEM Tile):
- Ottieni l'elevazione per un punto con successo.
- Clicca "Show DEM Tile (3D)".
- L'applicazione cerca il file HGT corrispondente nella cache (
hgt_tiles). - Se trovato, legge i dati di elevazione come array NumPy.
- Genera un plot 3D della superficie usando Matplotlib (con sottocampionamento per performance).
- Mostra il plot in una nuova finestra Matplotlib interattiva.
- Visualizzazione 2D (Area - Mosaico Browse):
- Scarica un'area con successo usando "Download Area Tiles".
- Clicca "Show Area Browse Images (2D)".
- L'applicazione cerca tutte le immagini browse corrispondenti ai tile dell'area richiesta nella cache (
browse_images). - Carica le immagini trovate.
- Crea un'immagine composita "cucendo" insieme le immagini disponibili (usa placeholder grigi se un'immagine manca).
- Disegna una griglia rossa per separare i tile e aggiunge l'etichetta con il nome a ciascun tile.
- Mostra l'immagine composita in una nuova finestra Matplotlib interattiva.
5. Casi d'Uso Comuni
- Trovare l'Altitudine di un Luogo Specifico:
- Avvia l'applicazione.
- Inserisci la latitudine e la longitudine del luogo nei campi appositi.
- Clicca "Get Elevation".
- Leggi il risultato nell'etichetta "Result". Il primo accesso potrebbe richiedere qualche secondo per il download.
- (Opzionale) Clicca "Show Browse Image (2D)" per vedere l'aspetto generale dell'area dal satellite/radar.
- (Opzionale) Clicca "Show DEM Tile (3D)" per esplorare il rilievo del terreno in 3D.
- Verificare l'Elevazione Offline (Dati Già Scaricati):
- Avvia l'applicazione.
- Inserisci latitudine e longitudine di un punto all'interno di un'area i cui dati sono già stati scaricati (nella cache
elevation_cache). - Clicca "Get Elevation".
- Il risultato apparirà quasi istantaneamente perché i dati vengono letti localmente.
- Preparare Dati per un'Area Prima di Andare Offline:
- Avvia l'applicazione (con connessione internet attiva).
- Identifica i limiti (min/max lat/lon) dell'area di interesse.
- Inserisci questi limiti nella sezione "Pre-Download Tiles for Area".
- Clicca "Download Area Tiles".
- Attendi il completamento (monitora l'etichetta "Status" e la console per i log). Potrebbe richiedere tempo a seconda della dimensione dell'area e della velocità di connessione.
- (Opzionale) Clicca "Show Area Browse Images (2D)" per confermare visivamente quali tile sono stati scaricati.
- Ora puoi usare l'applicazione offline per ottenere elevazioni rapide per qualsiasi punto all'interno dell'area scaricata.
- Esplorare Visivamente un Singolo Tile:
- Inserisci le coordinate di un punto qualsiasi all'interno del tile che ti interessa.
- Clicca "Get Elevation" (anche se conosci già l'elevazione, questo assicura che il tile sia disponibile e i pulsanti si attivino).
- Clicca "Show Browse Image (2D)" o "Show DEM Tile (3D)".
- Ottenere una Visione d'Insieme di un'Area:
- Assicurati di aver già scaricato l'area desiderata usando "Download Area Tiles".
- Clicca "Show Area Browse Images (2D)".
- Esplora l'immagine composita usando gli strumenti di zoom/pan di Matplotlib per vedere la disposizione dei tile e l'aspetto generale della regione.
6. Note e Risoluzione Problemi
- Errori di Download:
- 401/403 (Unauthorized/Forbidden): Problema con le credenziali Earthdata Login nel file
.netrc. Verifica username, password e il nomemachine urs.earthdata.nasa.gov. - 404 (Not Found): Il file richiesto (HGT zip o browse jpg) non esiste all'URL specificato. Potrebbe indicare una lacuna nei dati NASA per quell'area o un problema nella costruzione dell'URL (controlla le costanti URL nel codice
elevation_manager.py). - Errori di Rete/Timeout: Problemi temporanei di connessione. Lo script tenta un breve retry, ma errori persistenti richiedono una connessione stabile.
- 401/403 (Unauthorized/Forbidden): Problema con le credenziali Earthdata Login nel file
- File
.netrc: Assicurati che sia nella directory corretta e che i permessi siano restrittivi (Linux/macOS). - Dipendenze Mancanti: Se mancano librerie (Rasterio, Pillow, Matplotlib), l'applicazione mostrerà messaggi di avviso all'avvio e/o errori quando tenti di usare le funzionalità associate. Installa le librerie mancanti con
pip. - Performance 3D: Il rendering 3D di un tile completo può essere intensivo. Il sottocampionamento (
subsample) aiuta, ma per aree molto complesse potrebbe comunque essere lento. - Finestre Bloccanti: Le finestre di visualizzazione Matplotlib (sia 2D che 3D) sono eseguite in processi separati per non bloccare la GUI principale, ma la finestra Matplotlib stessa attenderà la chiusura da parte dell'utente.
- Log: Controlla sempre l'output nella console/terminale da cui hai avviato l'applicazione per messaggi di log dettagliati, specialmente in caso di errori.