157 lines
12 KiB
Markdown
157 lines
12 KiB
Markdown
**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`:
|
|
```bash
|
|
pip install requests rasterio Pillow matplotlib numpy netrc opencv-python
|
|
```
|
|
* `requests`: 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 per `rasterio` e `matplotlib`.
|
|
* `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](https://urs.earthdata.nasa.gov/users/new)
|
|
* **File `.netrc` per Autenticazione:** Per permettere all'applicazione di scaricare i dati protetti, devi creare un file chiamato `.netrc` nella tua directory home:
|
|
* **Posizione:**
|
|
* Windows: `C:\Users\TuoNomeUtente\.netrc`
|
|
* Linux/macOS: `/home/tuonomeutente/.netrc` (o `/Users/tuonomeutente/.netrc`)
|
|
* **Contenuto** (usa un editor di testo semplice):
|
|
```
|
|
machine urs.earthdata.nasa.gov
|
|
login TUA_USERNAME_EARTHDATA
|
|
password TUA_PASSWORD_EARTHDATA
|
|
```
|
|
Sostituisci `TUA_USERNAME_EARTHDATA` e `TUA_PASSWORD_EARTHDATA` con le tue credenziali reali.
|
|
* **Permessi (Linux/macOS):** È cruciale impostare i permessi corretti per sicurezza. Apri un terminale e digita: `chmod 600 ~/.netrc`
|
|
|
|
**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):**
|
|
1. Inserisci Latitudine e Longitudine valide.
|
|
2. Clicca "Get Elevation".
|
|
3. L'applicazione determina il tile DEM 1x1 grado necessario.
|
|
4. Controlla se il file HGT estratto esiste nella cache locale (`elevation_cache/hgt_tiles/`).
|
|
5. **Se non esiste:**
|
|
* Si connette al server NASA usando le credenziali `.netrc`.
|
|
* Scarica il file `.zip` contenente i dati HGT.
|
|
* Estrae il file `.hgt` nella cache locale (`hgt_tiles`).
|
|
* Tenta di scaricare l'immagine browse `.jpg` pubblica nella cache locale (`browse_images`).
|
|
6. **Se esiste (o dopo download):**
|
|
* Apre il file `.hgt` locale.
|
|
* 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)".
|
|
* **Scaricare Area (Download Area Tiles):**
|
|
1. Inserisci i limiti geografici dell'area.
|
|
2. Clicca "Download Area Tiles".
|
|
3. L'applicazione calcola quali tile 1x1 grado sono necessari.
|
|
4. 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.
|
|
5. L'operazione avviene in background per non bloccare l'interfaccia. Lo stato è mostrato nell'etichetta "Status".
|
|
6. 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):**
|
|
1. Ottieni l'elevazione per un punto con successo.
|
|
2. Clicca "Show Browse Image (2D)".
|
|
3. L'applicazione cerca l'immagine browse corrispondente nella cache (`browse_images`).
|
|
4. Se trovata, carica l'immagine, aggiunge il nome del tile e la fonte come overlay.
|
|
5. Mostra l'immagine in una nuova finestra Matplotlib interattiva.
|
|
* **Visualizzazione 3D (DEM Tile):**
|
|
1. Ottieni l'elevazione per un punto con successo.
|
|
2. Clicca "Show DEM Tile (3D)".
|
|
3. L'applicazione cerca il file HGT corrispondente nella cache (`hgt_tiles`).
|
|
4. Se trovato, legge i dati di elevazione come array NumPy.
|
|
5. Genera un plot 3D della superficie usando Matplotlib (con sottocampionamento per performance).
|
|
6. Mostra il plot in una nuova finestra Matplotlib interattiva.
|
|
* **Visualizzazione 2D (Area - Mosaico Browse):**
|
|
1. Scarica un'area con successo usando "Download Area Tiles".
|
|
2. Clicca "Show Area Browse Images (2D)".
|
|
3. L'applicazione cerca tutte le immagini browse corrispondenti ai tile dell'area richiesta nella cache (`browse_images`).
|
|
4. Carica le immagini trovate.
|
|
5. Crea un'immagine composita "cucendo" insieme le immagini disponibili (usa placeholder grigi se un'immagine manca).
|
|
6. Disegna una griglia rossa per separare i tile e aggiunge l'etichetta con il nome a ciascun tile.
|
|
7. Mostra l'immagine composita in una nuova finestra Matplotlib interattiva.
|
|
|
|
**5. Casi d'Uso Comuni**
|
|
|
|
* **Trovare l'Altitudine di un Luogo Specifico:**
|
|
1. Avvia l'applicazione.
|
|
2. Inserisci la latitudine e la longitudine del luogo nei campi appositi.
|
|
3. Clicca "Get Elevation".
|
|
4. Leggi il risultato nell'etichetta "Result". Il primo accesso potrebbe richiedere qualche secondo per il download.
|
|
5. (Opzionale) Clicca "Show Browse Image (2D)" per vedere l'aspetto generale dell'area dal satellite/radar.
|
|
6. (Opzionale) Clicca "Show DEM Tile (3D)" per esplorare il rilievo del terreno in 3D.
|
|
* **Verificare l'Elevazione Offline (Dati Già Scaricati):**
|
|
1. Avvia l'applicazione.
|
|
2. Inserisci latitudine e longitudine di un punto all'interno di un'area i cui dati sono già stati scaricati (nella cache `elevation_cache`).
|
|
3. Clicca "Get Elevation".
|
|
4. Il risultato apparirà quasi istantaneamente perché i dati vengono letti localmente.
|
|
* **Preparare Dati per un'Area Prima di Andare Offline:**
|
|
1. Avvia l'applicazione (con connessione internet attiva).
|
|
2. Identifica i limiti (min/max lat/lon) dell'area di interesse.
|
|
3. Inserisci questi limiti nella sezione "Pre-Download Tiles for Area".
|
|
4. Clicca "Download Area Tiles".
|
|
5. 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.
|
|
6. (Opzionale) Clicca "Show Area Browse Images (2D)" per confermare visivamente quali tile sono stati scaricati.
|
|
7. Ora puoi usare l'applicazione offline per ottenere elevazioni rapide per qualsiasi punto all'interno dell'area scaricata.
|
|
* **Esplorare Visivamente un Singolo Tile:**
|
|
1. Inserisci le coordinate di un punto qualsiasi all'interno del tile che ti interessa.
|
|
2. Clicca "Get Elevation" (anche se conosci già l'elevazione, questo assicura che il tile sia disponibile e i pulsanti si attivino).
|
|
3. Clicca "Show Browse Image (2D)" o "Show DEM Tile (3D)".
|
|
* **Ottenere una Visione d'Insieme di un'Area:**
|
|
1. Assicurati di aver già scaricato l'area desiderata usando "Download Area Tiles".
|
|
2. Clicca "Show Area Browse Images (2D)".
|
|
3. 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 nome `machine 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.
|
|
* **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.
|
|
|
|
|