**Manuale Utente: GeoElevation Tool (Italiano - Aggiornato)** **1. Introduzione** GeoElevation 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 (visualizzazioni statiche). * Visualizzare i dati di elevazione di un singolo tile come plot 3D interattivo (visualizzazione statica). * **Esplorare dati di elevazione e mappe tiled interattivamente tramite un visualizzatore mappa dedicato, con funzionalità di pan e zoom.** **2. Prerequisiti e Installazione** Prima di utilizzare l'applicazione, assicurati di avere quanto segue: * **Python:** Una versione recente di Python 3.8 o superiore installata sul tuo sistema. * **Librerie Python:** Installa le librerie necessarie tramite `pip`. Per l'esperienza completa con il visualizzatore mappa e le visualizzazioni avanzate, raccomandiamo di installare tutte le seguenti: ```bash pip install requests rasterio Pillow matplotlib numpy netrc opencv-python mercantile pyproj scipy ``` * `requests`: Per scaricare dati da internet (richiesto). * `rasterio`: Per leggere i dati DEM (file HGT) (richiesto per funzionalità elevazione). * `Pillow` (PIL): Per elaborare immagini (browse, compositi) e disegnare overlay (richiesto per visualizzazioni immagine e map viewer). * `matplotlib`: Per visualizzare immagini 2D e plot 3D (richiesto per visualizzazioni statiche). * `numpy`: Dipendenza fondamentale per `rasterio`, `matplotlib`, `scipy` e `opencv-python` (richiesto). * `netrc`: Per gestire l'autenticazione Earthdata (spesso già presente, richiesto per download NASADEM protetti). * `opencv-python`: Per la gestione della finestra e degli eventi mouse del visualizzatore mappa interattivo (richiesto per il map viewer). * `mercantile`: Per i calcoli sui tile mappa Web Mercator (richiesto per il map viewer). * `pyproj`: Per calcoli geodetici (bounding boxes, distanze) (richiesto per alcune funzioni map viewer e utili come deg<->dms). * `scipy`: Per funzionalità avanzate nei plot 3D (smoothing/interpolazione) (opzionale per visualizzazioni 3D). * **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 Grafica (GUI)** 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 Get Elevation) Apre una finestra Matplotlib separata con l'immagine di anteprima del tile DEM contenente il punto. * `Show DEM Tile (3D)` (Pulsante): (Abilitato dopo successo Get Elevation) Apre una finestra Matplotlib separata con un plot 3D interattivo dei dati DEM del tile. * `View Point on Map` (Pulsante): (Abilitato dopo successo Get Elevation, richiede librerie Map Viewer) Apre o porta in primo piano la finestra del visualizzatore mappa interattivo, centrata sul punto specificato con uno zoom automatico per mostrare il tile DEM circostante. * **Pre-Download Tiles for Area:** * `Min Lat`, `Max Lat`, `Min Lon`, `Max Lon`: Campi per definire i limiti di un'area rettangolare. * `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 Composite (2D)` (Pulsante): (Abilitato dopo successo Download Area Tiles e se sono disponibili immagini browse) Apre una finestra Matplotlib separata con un mosaico delle immagini di anteprima dei tile scaricati, con una griglia e etichette. * `View Area on Map` (Pulsante): (Abilitato dopo successo Download Area Tiles, richiede librerie Map Viewer) Apre o porta in primo piano la finestra del visualizzatore mappa interattivo, mostrando l'area coperta dai tile DEM scaricati. * `Status`: Etichetta che mostra lo stato del download dell'area. * **Map Display Options:** (Visibile solo se le librerie del Map Viewer sono disponibili) * `Map Display Scale`: Combobox per selezionare un fattore di scala per l'immagine della mappa visualizzata nella finestra interattiva. Questo cambia la dimensione della finestra. * **Map Info:** (Visibile solo se le librerie del Map Viewer sono disponibili) * Questa sezione mostra informazioni relative al punto cliccato sulla mappa interattiva o all'area visualizzata. * `Latitude (Dec)`: Latitudine del punto cliccato in gradi decimali (copiabile). * `Longitude (Dec)`: Longitudine del punto cliccato in gradi decimali (copiabile). * `Latitude (DMS)`: Latitudine del punto cliccato in formato Gradi, Minuti, Secondi (copiabile). * `Longitude (DMS)`: Longitudine del punto cliccato in formato Gradi, Minuti, Secondi (copiabile). * `Elevation`: Elevazione stimata nel punto cliccato sulla mappa (in metri, "NoData", "Unavailable", o stato di fetch) (copiabile). * `Map Area Size`: Dimensioni approssimative (Larghezza x Altezza in km) dell'area geografica visualizzata nella finestra mappa interattiva, con indicato il livello di zoom corrente (copiabile). * **Finestra Visualizzatore Mappa Interattivo:** * Si apre quando si clicca su "View Point on Map" o "View Area on Map". * Mostra mappe tiled (come OpenStreetMap) con potenziali overlay (bordi tile DEM, marker click). * **Schermata "Map Loading":** Una piccola finestra di progresso appare e scompare automaticamente sopra la GUI principale durante il caricamento o l'aggiornamento dei tile nella finestra mappa. **4. Funzionalità Dettagliate** * **Ottenere Elevazione (Get Elevation):** (Descrizione esistente invariata - si riferisce all'input manuale e al risultato nell'etichetta "Result") * **Scaricare Area (Download Area Tiles):** (Descrizione esistente invariata - si riferisce al download dei dati DEM HGT/browse nella cache) * **Visualizzazioni Statiche (Show Browse Image, Show DEM Tile, Show Area Composite):** (Descrizioni esistenti invariate - si riferiscono alle finestre Matplotlib non interattive per pan/zoom con strumenti standard di Matplotlib) * **Visualizzatore Mappa Interattivo (View on Map buttons):** * Attiva una finestra separata (basata su OpenCV) che visualizza mappe online. * Quando aperto tramite "View Point on Map", la mappa è centrata sul punto e zoomata automaticamente per mostrare il tile DEM corrispondente (con un leggero buffer). Il bordo del tile DEM HGT è disegnato in rosso. * Quando aperto tramite "View Area on Map", la mappa mostra l'intera estensione combinata di tutti i tile DEM disponibili (nella cache) per l'area definita. Il bordo dell'area richiesta (secondo i limiti inseriti) è disegnato in blu, e i bordi dei singoli tile DEM HGT disponibili sono disegnati in rosso con le loro etichette. * La finestra mappa risponde agli eventi mouse: * **Click Sinistro (Standard):** 1. Identifica le coordinate geografiche del punto cliccato. 2. Richiede all'ElevationManager l'elevazione per quel punto. 3. Aggiorna i campi "Map Info" nella GUI principale con le coordinate (Decimali e DMS), l'elevazione trovata ("NoData", "Unavailable", o valore in metri), e la dimensione dell'area visualizzata. 4. Disegna un marker sulla mappa nel punto cliccato. 5. Durante il fetch dell'elevazione (che potrebbe richiedere download), la schermata "Map Loading" potrebbe apparire brevemente. * **Ctrl + Click Sinistro (Pan):** 1. Identifica le coordinate geografiche del punto cliccato. 2. Aggiorna la vista mappa in modo che il punto cliccato diventi il nuovo centro. 3. **Il livello di zoom corrente viene mantenuto.** 4. Vengono fetched e stitched i nuovi tile mappa necessari per la nuova area centrata. 5. Aggiorna i campi "Map Info" (nuovo centro, elevazione N/A, dimensione area visualizzata e zoom). 6. Durante il fetch/stitching, appare la schermata "Map Loading". * **Click Destro (Zoom Out + Recenter):** 1. Identifica le coordinate geografiche del punto cliccato. 2. Aggiorna la vista mappa in modo che il punto cliccato diventi il nuovo centro. 3. **Diminuisce il livello di zoom di 1** (con limite minimo a zoom 0). 4. Vengono fetched e stitched i nuovi tile mappa necessari per la nuova area e il nuovo zoom. 5. Aggiorna i campi "Map Info" (nuovo centro, elevazione N/A, dimensione area visualizzata e zoom). 6. Durante il fetch/stitching, appare la schermata "Map Loading". * **Shift + Click Sinistro (Zoom In + Recenter):** 1. Identifica le coordinate geografiche del punto cliccato. 2. Aggiorna la vista mappa in modo che il punto cliccato diventi il nuovo centro. 3. **Aumenta il livello di zoom di 1** (con limite massimo al zoom supportato dal servizio mappa, es. 19 per OSM). 4. Vengono fetched e stitched i nuovi tile mappa necessari per la nuova area e il nuovo zoom. 5. Aggiorna i campi "Map Info" (nuovo centro, elevazione N/A, dimensione area visualizzata e zoom). 6. Durante il fetch/stitching, appare la schermata "Map Loading". **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". Leggi il risultato nell'etichetta "Result". (Questo garantisce che il tile DEM sia disponibile e attiva i pulsanti). 4. Clicca "View Point on Map". Si aprirà la finestra mappa interattiva centrata sul punto. 5. (Opzionale) Clicca su un punto qualsiasi della mappa per ottenere l'elevazione precisa in quel punto e vedere le coordinate e l'elevazione aggiornarsi nel pannello "Map Info". Un marker rosso apparirà nel punto cliccato. * **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 DEM sono già stati scaricati (nella cache `geoelevation_dem_cache`). 3. Clicca "Get Elevation". Il risultato apparirà quasi istantaneamente perché i dati HGT vengono letti localmente. 4. Clicca "View Point on Map". La mappa si caricherà utilizzando i tile mappa OpenStreetMap dalla cache locale (se disponibili) o scaricandoli se online, ma l'elevazione per il punto cliccato (passo 5 del caso d'uso precedente) sarà rapida se il DEM è in cache. * **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". Attendi il completamento (monitora l'etichetta "Status" e la console). 5. Ora puoi usare l'applicazione offline per ottenere elevazioni rapide per qualsiasi punto all'interno dell'area DEM scaricata e visualizzare l'area in "View Area on Map" (la mappa tiled potrebbe non caricarsi offline se i suoi tile non sono in cache, ma i bordi DEM appariranno). * **Esplorare Visivamente un'Area sulla Mappa Interattiva:** 1. Assicurati di aver già scaricato l'area desiderata usando "Download Area Tiles". 2. Clicca "View Area on Map". Si aprirà la finestra mappa interattiva mostrando l'area dei tile DEM scaricati. Vedrai i bordi dell'area richiesta (blu) e i bordi dei singoli tile DEM disponibili (rossi con etichette). 3. Usa **Ctrl + Click Sinistro** per spostarti (pan) sulla mappa mantenendo lo zoom. 4. Usa **Shift + Click Sinistro** per zoommare IN e ricentrare su un punto. 5. Usa **Click Destro** per zoommare OUT e ricentrare su un punto. 6. Clicca Sinistro standard su un punto per ottenere l'elevazione e vedere le info nel pannello "Map Info". **6. Note e Risoluzione Problemi** * **Errori di Download:** (Descrizione esistente invariata) * **File `.netrc`:** (Descrizione esistente invariata) * **Dipendenze Mancanti:** Se mancano librerie cruciali per il visualizzatore mappa (Pillow, OpenCV, Mercantile, Pyproj), i pulsanti "View on Map" saranno disabilitati e/o appariranno messaggi di errore all'avvio. Se mancano librerie per le visualizzazioni statiche (Matplotlib, SciPy, Pillow), i relativi pulsanti "Show..." saranno disabilitati. Installa le librerie mancanti con `pip`. * **Performance:** * Il download di aree molto grandi può richiedere tempo. * Il rendering 3D di un tile completo può essere intensivo. * Il fetch e lo stitching di un gran numero di tile mappa per la visualizzazione interattiva (a livelli di zoom bassi o per aree estese) può richiedere tempo e memoria; la schermata "Map Loading" apparirà in questi casi. * **Finestre Sepate:** Le finestre di visualizzazione (sia Matplotlib statiche che OpenCV interattiva) sono eseguite in processi separati per non bloccare la GUI principale. Potrebbero apparire in posizioni inaspettate sul tuo desktop. * **Finestra "Map Loading":** Questa finestra è impostata per rimanere sempre in primo piano per garantire che tu la veda. Selezionando la finestra principale della GUI o la finestra mappa non la nasconderà. Su alcuni sistemi operativi o gestori di finestre, il comportamento "always on top" potrebbe variare leggermente. * **Log:** Controlla sempre l'output nella console/terminale da cui hai avviato l'applicazione per messaggi di log dettagliati. ---