SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
1. Scopo del progetto

Lo scopo del progetto consiste nella realizzazione di un’interfaccia grafica che consenta di navigare
sul modello digitale del territorio della provincia di Trento per ottenere informazioni di carattere
statistico considerando il “comune” come unità territoriale di riferimento.
Il programma è stato scritto in C++ partendo dal progetto mfcSimple fornito con il pacchetto del
codice sorgente di VTP.



2. Strumenti utilizzati

L’applicazione realizzata è stata sviluppata utilizzando i seguenti strumenti:

Ambiente VTP
VTP (Virtual Terrain Project, http://www.vterrain.org), un sistema composto di più applicazioni
open-source C++ che consentono l’elaborazione di DTM ed ortofoto georeferenziati allo scopo di
ottenere ambienti virtuali tridimensionali.
In particolare sono state utilizzate le due applicazioni:
    • VTBuilder: applicativo in grado di visualizzare un ambiente bidimensionale e gestire le
        informazioni necessarie per la generazione dell’ambiente tridimensionale
    • mfcSimple: è un semplice visualizzatore 3D, utilizzato come modello base dove sono state
        introdotte nuove funzionalità implementate

MFC (Microsoft Foundation Class)
E’ una libreria di classi C++ incapsulante le Windows API. MFC contiene tutto ciò che è
indispensabile per gestire un’interfaccia grafica e si trova già integrata nei sistemi operativi
Microsoft.

PostGis
E’ un free software database per i dati geografici. Implementa il supporto per oggetti geografici
all’interno del database relazionale PostgreSQL, consentendo l’archiviazione di dati vettoriali con
coordinate 2D e 3D.
Le geometrie che si possono manipolare ed utilizzare grazie a PostGis sono: point, polygon,
multipoint, multiline, multipolygon, geometrycollections.
I dati spaziali relativi alla provincia di Trento, sono stati importati in PostGis utilizzando i seguenti
comandi:

   shp2pgsql comuni [public.]comuni > c:tempcomuni.sql
   pgsql -U postgres -d postgis -f c:tempcomuni.sql

Il comando shp2pgsql consente di generare un file di testo con le query di inserimento delle
geometrie e dei dati a partire dai dati contenuti in uno shapefile (nel nostro caso lo shapefile
comuni, che contiene le informazioni relative ai comuni della provincia di Trento).
Il comando pgsql permette invece di importare le informazioni così generate nella base dati PostGis
(effettua sia la definizione della tabella che il popolamento della stessa).
La connessione alla base dati postGIS avviene tramite un’origine dati DSN (Data Source Name) che
specifica gli estremi per l’accesso al database e che chiaramente deve essere definita tra le origini
dati ODBC prima di avviare l’applicazione.
L’origine dati ODBC deve avere nome postgis-dsn.

                                                   2
Ms Access
MS Access è uno degli strumenti di persistenza dei dati di Microsoft ed lo strumento che è stato
utilizzato in questo progetto per memorizzare le informazioni di carattere statistico che una volte
selezionate devono poi essere visualizzate sull’ambiente tridimensionale.
La base dati, che deve essere posizionata nella stessa cartella dell’applicazione mfcSimple, è
costituita dal file avente nome dati.mdb.
Trattando lo stesso tipo di informazione ovvero, la suddivisione categorica (ad es. “stranieri
residenti” piuttosto che “popolazione residente”) della popolazione per sesso, i dati sono stati
organizzati in tabelle tutte riportanti la medesima struttura:
     • Comune           codice ISTAT del comune
     • Anno             anno di riferimento del dato
     • Maschi           informazione numerica relativa ai maschi
     • Femmine          informazione numerica relativa alle femmine


2.1 VTBuilder

Tramite l’applicazione VTBulider, preposta alla gestione dei dati GIS georeferenziati in due
dimensioni ed alla loro visualizzazione tridimensionale, è stato definito il file pat.bt (bt = Binary
Terrain).
Per la generazione di tale file si è fatto uso della griglia di elevazione definita nel file in formato
ascii dtm1280.asc che rappresenta il DTM (Digital Terrain Model) ovvero il profilo altimetrico del
terreno, avente ampiezza di cella pari a 1280 m.
Dopo essere stato caricato in VTBuilder, il file DTM è stato posizionato all’interno della mappa
cartografica mondiale (proiezione: UTM, zona: 32) e quindi ricampionato nel file pat.bt.


2.2 mfcSimple

mfcSimple.sln è una semplice applicazione fornita col pacchetto “VTP software” che mostra un
esempio di utilizzo delle librerie VTP con MFC.
Quest’applicazione è un sistema interattivo di navigazione runtime tridimensionale sul terreno
tramite l’utilizzo del mouse.
All’applicazione mfcSimple “base” sono state aggiunte due nuove funzionalità oltre a quelle di
navigazione già esistenti:
    • pick: consente di effettuare il picking sul territorio individuando la corrispondenza tra il
        punto cliccato ed il poligono che lo contiene e che rappresenta l’area comunale della quale si
        forniranno le informazioni statistiche
    • info: consente di selezionare, attraverso una finestra di dialogo, le informazioni statistiche di
        interesse
Entrambe le funzionalità sono attivabili tramite la pressione di due tasti (PICK ed INFO) aggiunti
alla toolbar.
Nella finestra di dialogo sono presenti due combo-box che, all’avvio dell’applicazione, vengono
inizializzate rispettivamente con:
    • le informazioni statistiche rappresentabili (ovvero con l’elenco delle tabelle presenti nella
        base dati dati.mdb)
    • gli anni di riferimento relativi all’informazione statistica selezionata (tramite un comando di
        raggruppamento SQL eseguito sulla tabella selezionata, ovvero la voce corrente della prima
        combo-box)


                                                  3
Questo significa che, aggiungendo alla base dati ulteriori tabelle informative aventi la medesima
struttura, esse verranno presentate automaticamente senza la necessità di apportare variazioni
all’applicazione.
Per l’individuazione del comune sulla base del punto cliccato sul territorio si è fatto uso come già
accennato della base dati postGis, nella quale è stato preventivamente importato il file in formato
ESRI shapefile relativo ai confini comunali relativi alla provincia di Trento.
Lo ESRI (Environmental Systems Research Institute) shapefile è un formato per dati geospaziali
vettoriali utilizzato dai sistemi GIS (Geografic Information System) per descrivere spazialmente
punti, poligoni e multilinee. A ciascun di questi elementi possono essere associati ulteriori attributi;
nel nostro caso ai poligoni identificanti il comune sono associati codice ISTAT e descrizione del
comune stesso.
Per ottenere codice e descrizione del comune è stata eseguita quindi una semplice interrogazione
SQL fornendo in input le coordinate x,y del punto selezionato:

   SELECT comuni.comu, comuni.desc
   FROM public.comuni
   WHERE CONTAINS(the_geom,GeometryFromText('POINT(coordX coordY)',-1));




3. Architettura del sistema

Il sistema è rappresentabile secondo la seguente architettura:




                    Figura 1 – l’architettura dell’applicazione nell’ambiente VTP




                                                   4
Librerie VTP sono:
   • vtlib (VTP Terrain Library): insieme di classi C++ per la generazione di terreni e colture in
        ambiente 3D (in particolare le funzionalità per la visualizzazione di quanto descritto
        nell’albero di scena: luci, immagini e modelli 3D)
   • vtdata (VTP Data Library): insieme di classi C++ per gestire dati geospaziali
   • vtui (VTP User Interface): insieme delle funzioni che consentono la visualizzazione e
        l’interazione tra utente ed interfaccia grafica del programma (compresa la gestione della
        navigazione sul terreno)

Librerie di supporto necessarie sono invece:
   • mfc (Microsoft Foundation Class): libreria che contiene tutto ciò che è necessario per gestire
        un’interfaccia grafica (già integrata nei sistemi operative Microsoft)
   • GDAL (Geospatial Data Abstraction Library): libreria per georeferenziazione dei dati territoriali
        da visualizzare (supporta le operazioni necessarie per le conversioni dei dati cartografici nei
        diversi sistemi di riferimento)
   • libjpeg, libpng, zlib: sono le 3 librerie che consentono di le immagini nel formati JPG, PNG e
        gzip-compressi (texture che si applicano agli oggetti tridimensionali, compresa l’ortofoto
        applicata al DTM)
   • OpenGL (Open Graphics Library): è la libreria grafica di basso livello che si interfaccia
        direttamente alle funzioni 3D implementate direttamente dalla scheda madre
   • OSG (Open Scene Graph): sistema grafico utilizzato per la gestione dell’albero di scena
        (ovvero il modo strutturato per descrivere il mondo virtuale da rappresentare)
   • libMini: libreria per il rendering del terreno. Si integra con OSG e consente di gestire in
        maniera più accurata il livello di dettaglio (LOD, Level Of Detail)




4. Organizzazione dei dati

I dati in input utilizzati dall’applicazione mfcSimple sono stati catalogati in cartelle a loro volta
contenute nella cartella Data:
    • Elevation        contiene il profilo altimetrico in formato BT della zona da visualizzare
    • Fonts            contiene i caratteri utilizzati per i testi (formato ttf)
    • GeoSpecific contiene l’ortofoto in formato JPG (pat.jpg) da sovrapporre al modello
                       digitale del terreno
    • Terrains         contiene il file XML con le informazioni che descrivono la scena

Il file XML, che viene caricato all’avvio di mfcSimple come prima operazione, definisce le
caratteristiche dell’ambiente da visualizzare:

<?xml version="1.0" encoding="utf-8"?>
<Terrain_Parameters>
      <Name>Provincia di Trento</Name>
      <Elevation_Filename>pat.bt</Elevation_Filename>
      <Vertical_Exag>1.000000</Vertical_Exag>
      <Min_Height>20.000000</Min_Height>
      <Nav_Style>0</Nav_Style>
      <Nav_Speed>3000.000000</Nav_Speed>
      …
      <Texture_Filename>pat.jpg</Texture_Filename>
      …
</Terrain_Parameters>

                                                  5
5. Organizzazione delle classi

Il progetto mfcSimple è costituito da una serie di classi che implementano la visualizzazione del
terreno e le funzioni per la navigazione su di esso; i files che le includono (e relativi header files)
sono:
    • MainFrm.cpp
    • mfcSimple.cpp
    • mfcSimple.rc
    • mfcSimpleDoc.cpp
    • mfcSimpleView.cpp

Le nuove classi implementate sono incluse invece in due nuovi files:
   • Engines.cpp, che implementa le classi:
          o TerrainPicker: individuazione di un punto selezionato col mouse sul terreno
          o db: accesso alle basi dati postGIS e Ms Access
   • SelectDlg.cpp, che implementa la classe CSelectDlg la quale gestisce la finestra di dialogo
      per la selezione delle informazioni




5.1 Descrizione delle classi implementate/modificate

Come accennato, per la realizzazione dell’applicazione sono state apportate modifiche ad alcune
delle classi esistenti nel progetto mfcSimple e ne sono state realizzate alcune nuove.
In breve, le classi modificate e le relative variazioni apportate sono:

classe                variazioni apportate

CMainFrame            - aggiunta la gestione della finestra di dialogo per la selezione delle
                        informazioni

CSimpleApp            - aggiunta la gestione degli eventi di pressione del tasto per il picking dei
                        punti sul terreno
                      - aggiunte le variabili per la memorizzazione delle informazioni selezionate
                        (codice del comune, descrizione del comune, informazione statistica e
                        relativo anno)

CSimpleView           - aggiunte le procedure per la visualizzazione delle scritte e degli oggetti
                         cilindrici sulla scena tridimensionale
                      - aggiunta la gestione dell’oggetto TerrainPicker
                      - modificato l’evento click del mouse per integrarlo con le operazioni da
                        eseguire quando viene effettuato il picking sul terreno (lettura e
                        rappresentazione grafica delle informazioni)




                                                  6
class CSimpleView : public CView

void CSimpleView::OnLButtonDown(UINT nFlags, CPoint point)
in questo metodo è stata aggiunta la gestione del Terrain Picking con la conseguente visualizzazione
delle informazioni e degli oggetti grafici in caso di picking sul territorio provinciale;
in questa procedura vengono inoltre calcolate le altezze da attribuire ai due oggetti cilindrici che
rappresentano le percentuali delle informazioni statistiche relative al comune selezionato
void addCylinder(DPoint2 g, float fCylHeight)
costruisce sul punto bidimensionale fornito in input un oggetto cilindrico di larghezza fissa
(l’altezza è fornita in input ed è regolata dal dato da rappresentare)
void addLabel(DPoint2 g, float fOffsetY, CString strLab)
stampa sul punto bidimensionale fornito in input la label (sempre fornita in input) utilizzando il set
di caratteri memorizzati nella cartella Data/Fonts; a seconda della necessità il testo viene stampato
dopo essere stato traslato in altezza (di una distanza pari a fOffsetY)


Ad ogni evento di picking sul territorio, gli oggetti aggiunti (cilindri o labels che siano) vengono
aggiunti ad un vettore (m_Markers) con lo scopo di tener traccia dei nodi di tipo vtTransform che
vengono aggiunti al territorio. Tale vettore viene quindi poi utilizzato al picking successivo per
eliminare dalla scena gli oggetti visualizzati in precedenza.
Infatti, ogni aggiunta di oggetti alla scena avviene tramite un puntatore all’oggetto vtTransform
(classe che appartiene alla libreria vtlib) aggiunto nel punto desiderato (in coordinate mondiali)
attraverso il metodo PlantModelAtPoint dell’oggetto vtTerrain (anch’esso di vtlib).
vtTransform è una classe che consente di effettuare trasformazioni geometriche mediante le quali è
possibile traslare, ruotare o scalare un oggetto posizionato sul terreno (nel nostro caso è stato
utilizzato solo per traslare).
Le labels (informazioni testuali) sono state visualizzate in colore giallo e gestite tramite la classe
vtTextMesh (vtlib) che consente di specificare font e dimensione dei caratteri da rappresentare.



I metodi implementati nelle nuove classi realizzate sono:

class TerrainPicker : public vtLastMouse

TerrainPicker()
costruttore, inizializza la variabile per l’altezza del terreno e la variabile che indica se il picking è
avvenuto sul terreno
void OnMouse(vtMouseEvent &event)
gestisce l’evento di click sul territorio col mouse invocando la funzione FindGroundPoint()
bool GetCurrentEarthPos(DPoint3 &p)
restituisce vero se il picking è avvenuto sul terreno (falso in caso contrario) ed il punto
tridimensionale selezionato (in coordinate mondiali)
void FindGroundPoint();
cerca le coordinate mondiali relative al punto cliccato tramite il metodo CastRayToSurface
dell’oggetto vtHeightField3d (classe che appartiene alla libreria vtdata)




                                                   7
class db

CString getIdCom(DPoint3 &p, CString &strDesCom)
fornito in input un punto 3D sul terreno, questo metodo interroga la base dati postGIS e restituisce il
codice e la descrizione del comune al quale il punto appartiene; restituisce 0 se il punto in input
risulta essere al di fuori dei confini provinciali

void initComboInfo(CComboBox &m_cbInfo)
metodo per inizializzare la combo-box con le informazioni statistiche (nome tabelle db MS Access)
void initComboAnno(CString strTab, CComboBox &m_cbAnno)
metodo per inizializzare la combo-box con i periodi (anni) relativi all’informazione statistica (nome
della tabella db MS Access) fornita in input
void getData(CString strIdCom, CString strTab, CString strAnno, CString
             &strMas, CString &strFem)
questo metodo, dati in input il codice del comune, il tipo di informazione statistica desiderata e
l’anno di riferimento, restituisce i valori corrispondenti per maschi e femmine
CString getDbAccessPath()
restituisce il percorso assoluto della base dati MS Access dati.mdb
CString getDbAccessConnString()
restituisce la stringa di connessione alla base dati MS Access dati.mdb



class CSelectDlg : public CDialog

CSelectDlg(CWnd* pParent = NULL)
costruttore, inizializza le variabili di indicizzazione delle combo-box
void initComboInfo(CComboBox &m_cbInfo)
inizializza la combo-box richiamando il metodo initComboInfo della classe db
void initComboAnno(CString strInfo)
inizializza la combo-box richiamando il metodo initComboAnno della classe db, fornendo in input
il nome della tabella selezionata nella combo-box delle informazioni statistiche (initComboInfo)
virtual BOOL OnInitDialog()
inizializza la finestra di dialogo popolando le combo-box
afx_msg void OnSelchangeInfo()
gestisce l’evento di selezione dell’elemento dalla combo-box delle informazioni statistiche
afx_msg void OnCbnSelchangeAnno()
gestisce l’evento di selezione dell’elemento dalla combo-box degli anni riferimento




                                                   8
5.2 Sequence ed activity diagrams

Le figure 2 e 3 illustrano rispettivamente il diagramma di sequenza di collaborazione tra i vari
oggetti al momento del picking sul territorio ed il corrispondente diagramma delle attività.




            Figura 2 – sequence diagram relativo all’operazione di picking sul terreno




                      Figura 3 – activity diagram dell’operazione di picking

                                                9
6. Utilizzo dell’applicazione

Avviando l’applicazione, il terreno tridimensionale visualizzato è direttamente quello relativo alla
provincia di Trento (tramite il file pat.bt definito con VTBuilder).
Come già accennato è possibile navigare sul territorio con l’ausilio del mouse (le istruzioni
sull’utilizzo si possono trovare all’indirizzo http://vterrain.org/Doc/Enviro/Navigation/index.html).
Pigiando sul pulsante INFO è possibile selezionare, tramite la finestra di dialogo, l’informazione
statistica in riferimento ad uno specifico anno che si desidera visualizzare sul territorio (figura 4).
Per default viene considerata la prima informazione presente nella base dati MS Access in ordine
alfabetico.
L’informazione così selezionata viene visualizzata sulla barra di stato posta in fondo alla finestra
dell’applicazione.




    Figura 4 - l’immagine mostra il dialog box che consente di effettuare la selezione del tipo di
                           informazione statistica per anno di interesse



Una volta selezionata l’informazione ed il periodo è sufficiente navigare sul territorio e, tramite il
pulsante PICK, cliccare in un punto (all’interno della provincia di Trento) per visualizzare il
comune selezionato e le informazioni statistiche ad esso relative (figura 5).
Le informazioni vengono visualizzate, oltre che in maniera testuale, anche graficamente tramite due
oggetti cilindrici rappresentanti rispettivamente le percentuali dei valori riscontrati relativi agli
individui di sesso maschile e femminile.


                                                  10
Figura 5 – l’immagine mostra come avviene la visualizzazione dell’informazione selezionata
                                   tramite il picking sul terreno



In caso di picking al di fuori del territorio provinciale, sulla barra di stato viene visualizzato il testo
“nessun comune selezionato” e niente sul territorio.
Il carattere utilizzato per la rappresentazione testuale è Insaniburger.ttf (collocato nella cartella
Data/Fonts).
Disattivando il pulsante PICK, si ritorna in modalità di navigazione con la possibilità di spostarsi
nuovamente sul territorio.




10. Riferimenti/bibliografia

•   VTP (Virtual Terrain Project): http://www.vterrain.org
•   OSG (Open Scene Graph): http://www.openscenegraph.org
•   OpenGL: http://www.opengl.org
•   postGis: http://postgis.refractions.net
•   tesi di laurea di Marco Pergher: “Analisi di immagini e generazione di ambienti tridimensionali
    virtuali finalizzati al supporto decisionale”
•   tesi di laurea di Luca Passerella: “Generazione di ambienti tridimensionali geo-referenziati
    come strumento per il supporto alle decisioni”

                                                    11

Mais conteúdo relacionado

Destaque

Haas effect, Optimum reverberation time, Anechoic chamber
Haas effect, Optimum reverberation time, Anechoic chamberHaas effect, Optimum reverberation time, Anechoic chamber
Haas effect, Optimum reverberation time, Anechoic chamberFarhat Surve
 
Presentacion.
Presentacion.Presentacion.
Presentacion.NOEMY
 
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttiva
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttivaLezione 22 Java - Integrazione con le basi di dati. scheda introduttiva
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttivaBrainProject221b
 
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...clapir
 
Mvc 架构
Mvc 架构Mvc 架构
Mvc 架构cyla993
 
Pronet for slideshare
Pronet for slidesharePronet for slideshare
Pronet for slidesharePRONET
 

Destaque (8)

Haas effect, Optimum reverberation time, Anechoic chamber
Haas effect, Optimum reverberation time, Anechoic chamberHaas effect, Optimum reverberation time, Anechoic chamber
Haas effect, Optimum reverberation time, Anechoic chamber
 
Presentacion.
Presentacion.Presentacion.
Presentacion.
 
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttiva
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttivaLezione 22 Java - Integrazione con le basi di dati. scheda introduttiva
Lezione 22 Java - Integrazione con le basi di dati. scheda introduttiva
 
Scanner for zotero
Scanner for zoteroScanner for zotero
Scanner for zotero
 
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...
Il gioco della Matematòca 4: Esplorazione delle tessere della Matematòca alge...
 
induismo
induismoinduismo
induismo
 
Mvc 架构
Mvc 架构Mvc 架构
Mvc 架构
 
Pronet for slideshare
Pronet for slidesharePronet for slideshare
Pronet for slideshare
 

Semelhante a Graphical Interface for Statistical Information of Trento Province based on VTP

Relazione esame informatica grafica
Relazione esame informatica graficaRelazione esame informatica grafica
Relazione esame informatica graficaSimone Compagnone
 
Scianna: Gis Day Social Innovation For Resource Management
Scianna: Gis Day Social Innovation For Resource ManagementScianna: Gis Day Social Innovation For Resource Management
Scianna: Gis Day Social Innovation For Resource ManagementFrancesco Passantino
 
JGrass intro Italiano
JGrass intro ItalianoJGrass intro Italiano
JGrass intro Italianosilli
 
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...giovannibiallo
 
Corso GIS Base a03 - gis strumento di lavoro alla base della cartografia e d...
Corso GIS Base a03 - gis  strumento di lavoro alla base della cartografia e d...Corso GIS Base a03 - gis  strumento di lavoro alla base della cartografia e d...
Corso GIS Base a03 - gis strumento di lavoro alla base della cartografia e d...City Planner
 
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...laboratoridalbasso
 
CIMA Foundation - 1 dicembre 2016 - seconda parte
CIMA Foundation - 1 dicembre 2016 - seconda parteCIMA Foundation - 1 dicembre 2016 - seconda parte
CIMA Foundation - 1 dicembre 2016 - seconda parteAle ZenaIT
 
progetto di architetture
progetto di architettureprogetto di architetture
progetto di architettureAndrea Sbarra
 
Presentazione tesi maja_crljenko
Presentazione tesi maja_crljenkoPresentazione tesi maja_crljenko
Presentazione tesi maja_crljenkoMaja Crljenko
 
Marco Broccoli, Fabrizio De Fausti Big data for official statistics: nuovi s...
Marco Broccoli, Fabrizio De Fausti  Big data for official statistics: nuovi s...Marco Broccoli, Fabrizio De Fausti  Big data for official statistics: nuovi s...
Marco Broccoli, Fabrizio De Fausti Big data for official statistics: nuovi s...Istituto nazionale di statistica
 
Il sistema informativo statistico sulla popolazione e le statistiche demograf...
Il sistema informativo statistico sulla popolazione e le statistiche demograf...Il sistema informativo statistico sulla popolazione e le statistiche demograf...
Il sistema informativo statistico sulla popolazione e le statistiche demograf...Vincenzo Patruno
 
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...OpenGeoDataItalia
 
Introduzione a openstreetmap e casi d'uso disi 23-04-2012
Introduzione a openstreetmap e casi d'uso   disi 23-04-2012Introduzione a openstreetmap e casi d'uso   disi 23-04-2012
Introduzione a openstreetmap e casi d'uso disi 23-04-2012Ale ZenaIT
 
Smart water 3 novembre
Smart water 3 novembreSmart water 3 novembre
Smart water 3 novembrecanaleenergia
 
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014Coworking Login
 
Coworking Login: GIS open source per la pianificazione territoriale
Coworking Login: GIS open source per la pianificazione territorialeCoworking Login: GIS open source per la pianificazione territoriale
Coworking Login: GIS open source per la pianificazione territorialeCity Planner
 
Evento PIM - Novità QGis 2.8: database e mappe online / webgis
Evento PIM - Novità QGis 2.8: database e mappe online / webgisEvento PIM - Novità QGis 2.8: database e mappe online / webgis
Evento PIM - Novità QGis 2.8: database e mappe online / webgisCity Planner
 

Semelhante a Graphical Interface for Statistical Information of Trento Province based on VTP (20)

Presentazione SitVI 2.0 Foss4g-IT 2016
Presentazione SitVI 2.0 Foss4g-IT 2016Presentazione SitVI 2.0 Foss4g-IT 2016
Presentazione SitVI 2.0 Foss4g-IT 2016
 
Relazione esame informatica grafica
Relazione esame informatica graficaRelazione esame informatica grafica
Relazione esame informatica grafica
 
Scianna: Gis Day Social Innovation For Resource Management
Scianna: Gis Day Social Innovation For Resource ManagementScianna: Gis Day Social Innovation For Resource Management
Scianna: Gis Day Social Innovation For Resource Management
 
JGrass intro Italiano
JGrass intro ItalianoJGrass intro Italiano
JGrass intro Italiano
 
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...
OpenGeoData Italia 2014 - Emanuele Geri "Secondo modulo del corso: esperienza...
 
Corso GIS Base a03 - gis strumento di lavoro alla base della cartografia e d...
Corso GIS Base a03 - gis  strumento di lavoro alla base della cartografia e d...Corso GIS Base a03 - gis  strumento di lavoro alla base della cartografia e d...
Corso GIS Base a03 - gis strumento di lavoro alla base della cartografia e d...
 
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...
Ldb 25 strumenti gis e webgis_2014-05-29 spannicciati - 4 gestione ed elabora...
 
CIMA Foundation - 1 dicembre 2016 - seconda parte
CIMA Foundation - 1 dicembre 2016 - seconda parteCIMA Foundation - 1 dicembre 2016 - seconda parte
CIMA Foundation - 1 dicembre 2016 - seconda parte
 
Gpe e geomedia
Gpe e geomediaGpe e geomedia
Gpe e geomedia
 
progetto di architetture
progetto di architettureprogetto di architetture
progetto di architetture
 
Presentazione tesi maja_crljenko
Presentazione tesi maja_crljenkoPresentazione tesi maja_crljenko
Presentazione tesi maja_crljenko
 
Marco Broccoli, Fabrizio De Fausti Big data for official statistics: nuovi s...
Marco Broccoli, Fabrizio De Fausti  Big data for official statistics: nuovi s...Marco Broccoli, Fabrizio De Fausti  Big data for official statistics: nuovi s...
Marco Broccoli, Fabrizio De Fausti Big data for official statistics: nuovi s...
 
Il sistema informativo statistico sulla popolazione e le statistiche demograf...
Il sistema informativo statistico sulla popolazione e le statistiche demograf...Il sistema informativo statistico sulla popolazione e le statistiche demograf...
Il sistema informativo statistico sulla popolazione e le statistiche demograf...
 
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...
Dati Territoriali: strumenti e regole per l’uso - Maurizio De Gennaro (Region...
 
Introduzione a openstreetmap e casi d'uso disi 23-04-2012
Introduzione a openstreetmap e casi d'uso   disi 23-04-2012Introduzione a openstreetmap e casi d'uso   disi 23-04-2012
Introduzione a openstreetmap e casi d'uso disi 23-04-2012
 
BIM - Building Information Modeling
BIM - Building Information ModelingBIM - Building Information Modeling
BIM - Building Information Modeling
 
Smart water 3 novembre
Smart water 3 novembreSmart water 3 novembre
Smart water 3 novembre
 
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014
Gis Opensource per la pianificazione territoriale @coworking Login 24 09-2014
 
Coworking Login: GIS open source per la pianificazione territoriale
Coworking Login: GIS open source per la pianificazione territorialeCoworking Login: GIS open source per la pianificazione territoriale
Coworking Login: GIS open source per la pianificazione territoriale
 
Evento PIM - Novità QGis 2.8: database e mappe online / webgis
Evento PIM - Novità QGis 2.8: database e mappe online / webgisEvento PIM - Novità QGis 2.8: database e mappe online / webgis
Evento PIM - Novità QGis 2.8: database e mappe online / webgis
 

Mais de graphitech

A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationgraphitech
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationgraphitech
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationgraphitech
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationgraphitech
 
Rescue Mission
Rescue MissionRescue Mission
Rescue Missiongraphitech
 
Rescue Mission
Rescue MissionRescue Mission
Rescue Missiongraphitech
 
Mashup - Sustainability
Mashup - SustainabilityMashup - Sustainability
Mashup - Sustainabilitygraphitech
 
Mashup - Sustainability
Mashup - SustainabilityMashup - Sustainability
Mashup - Sustainabilitygraphitech
 
Multiple Screens
Multiple ScreensMultiple Screens
Multiple Screensgraphitech
 
Multiple Screens
Multiple ScreensMultiple Screens
Multiple Screensgraphitech
 
Graph Matching
Graph MatchingGraph Matching
Graph Matchinggraphitech
 
Shape Analysis
Shape AnalysisShape Analysis
Shape Analysisgraphitech
 
Human Interaction Library
Human Interaction LibraryHuman Interaction Library
Human Interaction Librarygraphitech
 
Human Interaction Library
Human Interaction LibraryHuman Interaction Library
Human Interaction Librarygraphitech
 
WebCams Mapping on Nasa World Wind
WebCams Mapping on Nasa World WindWebCams Mapping on Nasa World Wind
WebCams Mapping on Nasa World Windgraphitech
 
Street Builder
Street BuilderStreet Builder
Street Buildergraphitech
 
Street Builder
Street BuilderStreet Builder
Street Buildergraphitech
 
Live Video in World Wind
Live Video in World WindLive Video in World Wind
Live Video in World Windgraphitech
 
Live Video in World Wind
Live Video in World WindLive Video in World Wind
Live Video in World Windgraphitech
 
Terrain Modification
Terrain ModificationTerrain Modification
Terrain Modificationgraphitech
 

Mais de graphitech (20)

A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolation
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolation
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolation
 
A graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolationA graphic library and an application for simple curve manipolation
A graphic library and an application for simple curve manipolation
 
Rescue Mission
Rescue MissionRescue Mission
Rescue Mission
 
Rescue Mission
Rescue MissionRescue Mission
Rescue Mission
 
Mashup - Sustainability
Mashup - SustainabilityMashup - Sustainability
Mashup - Sustainability
 
Mashup - Sustainability
Mashup - SustainabilityMashup - Sustainability
Mashup - Sustainability
 
Multiple Screens
Multiple ScreensMultiple Screens
Multiple Screens
 
Multiple Screens
Multiple ScreensMultiple Screens
Multiple Screens
 
Graph Matching
Graph MatchingGraph Matching
Graph Matching
 
Shape Analysis
Shape AnalysisShape Analysis
Shape Analysis
 
Human Interaction Library
Human Interaction LibraryHuman Interaction Library
Human Interaction Library
 
Human Interaction Library
Human Interaction LibraryHuman Interaction Library
Human Interaction Library
 
WebCams Mapping on Nasa World Wind
WebCams Mapping on Nasa World WindWebCams Mapping on Nasa World Wind
WebCams Mapping on Nasa World Wind
 
Street Builder
Street BuilderStreet Builder
Street Builder
 
Street Builder
Street BuilderStreet Builder
Street Builder
 
Live Video in World Wind
Live Video in World WindLive Video in World Wind
Live Video in World Wind
 
Live Video in World Wind
Live Video in World WindLive Video in World Wind
Live Video in World Wind
 
Terrain Modification
Terrain ModificationTerrain Modification
Terrain Modification
 

Último

Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 

Último (19)

Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 

Graphical Interface for Statistical Information of Trento Province based on VTP

  • 1.
  • 2. 1. Scopo del progetto Lo scopo del progetto consiste nella realizzazione di un’interfaccia grafica che consenta di navigare sul modello digitale del territorio della provincia di Trento per ottenere informazioni di carattere statistico considerando il “comune” come unità territoriale di riferimento. Il programma è stato scritto in C++ partendo dal progetto mfcSimple fornito con il pacchetto del codice sorgente di VTP. 2. Strumenti utilizzati L’applicazione realizzata è stata sviluppata utilizzando i seguenti strumenti: Ambiente VTP VTP (Virtual Terrain Project, http://www.vterrain.org), un sistema composto di più applicazioni open-source C++ che consentono l’elaborazione di DTM ed ortofoto georeferenziati allo scopo di ottenere ambienti virtuali tridimensionali. In particolare sono state utilizzate le due applicazioni: • VTBuilder: applicativo in grado di visualizzare un ambiente bidimensionale e gestire le informazioni necessarie per la generazione dell’ambiente tridimensionale • mfcSimple: è un semplice visualizzatore 3D, utilizzato come modello base dove sono state introdotte nuove funzionalità implementate MFC (Microsoft Foundation Class) E’ una libreria di classi C++ incapsulante le Windows API. MFC contiene tutto ciò che è indispensabile per gestire un’interfaccia grafica e si trova già integrata nei sistemi operativi Microsoft. PostGis E’ un free software database per i dati geografici. Implementa il supporto per oggetti geografici all’interno del database relazionale PostgreSQL, consentendo l’archiviazione di dati vettoriali con coordinate 2D e 3D. Le geometrie che si possono manipolare ed utilizzare grazie a PostGis sono: point, polygon, multipoint, multiline, multipolygon, geometrycollections. I dati spaziali relativi alla provincia di Trento, sono stati importati in PostGis utilizzando i seguenti comandi: shp2pgsql comuni [public.]comuni > c:tempcomuni.sql pgsql -U postgres -d postgis -f c:tempcomuni.sql Il comando shp2pgsql consente di generare un file di testo con le query di inserimento delle geometrie e dei dati a partire dai dati contenuti in uno shapefile (nel nostro caso lo shapefile comuni, che contiene le informazioni relative ai comuni della provincia di Trento). Il comando pgsql permette invece di importare le informazioni così generate nella base dati PostGis (effettua sia la definizione della tabella che il popolamento della stessa). La connessione alla base dati postGIS avviene tramite un’origine dati DSN (Data Source Name) che specifica gli estremi per l’accesso al database e che chiaramente deve essere definita tra le origini dati ODBC prima di avviare l’applicazione. L’origine dati ODBC deve avere nome postgis-dsn. 2
  • 3. Ms Access MS Access è uno degli strumenti di persistenza dei dati di Microsoft ed lo strumento che è stato utilizzato in questo progetto per memorizzare le informazioni di carattere statistico che una volte selezionate devono poi essere visualizzate sull’ambiente tridimensionale. La base dati, che deve essere posizionata nella stessa cartella dell’applicazione mfcSimple, è costituita dal file avente nome dati.mdb. Trattando lo stesso tipo di informazione ovvero, la suddivisione categorica (ad es. “stranieri residenti” piuttosto che “popolazione residente”) della popolazione per sesso, i dati sono stati organizzati in tabelle tutte riportanti la medesima struttura: • Comune codice ISTAT del comune • Anno anno di riferimento del dato • Maschi informazione numerica relativa ai maschi • Femmine informazione numerica relativa alle femmine 2.1 VTBuilder Tramite l’applicazione VTBulider, preposta alla gestione dei dati GIS georeferenziati in due dimensioni ed alla loro visualizzazione tridimensionale, è stato definito il file pat.bt (bt = Binary Terrain). Per la generazione di tale file si è fatto uso della griglia di elevazione definita nel file in formato ascii dtm1280.asc che rappresenta il DTM (Digital Terrain Model) ovvero il profilo altimetrico del terreno, avente ampiezza di cella pari a 1280 m. Dopo essere stato caricato in VTBuilder, il file DTM è stato posizionato all’interno della mappa cartografica mondiale (proiezione: UTM, zona: 32) e quindi ricampionato nel file pat.bt. 2.2 mfcSimple mfcSimple.sln è una semplice applicazione fornita col pacchetto “VTP software” che mostra un esempio di utilizzo delle librerie VTP con MFC. Quest’applicazione è un sistema interattivo di navigazione runtime tridimensionale sul terreno tramite l’utilizzo del mouse. All’applicazione mfcSimple “base” sono state aggiunte due nuove funzionalità oltre a quelle di navigazione già esistenti: • pick: consente di effettuare il picking sul territorio individuando la corrispondenza tra il punto cliccato ed il poligono che lo contiene e che rappresenta l’area comunale della quale si forniranno le informazioni statistiche • info: consente di selezionare, attraverso una finestra di dialogo, le informazioni statistiche di interesse Entrambe le funzionalità sono attivabili tramite la pressione di due tasti (PICK ed INFO) aggiunti alla toolbar. Nella finestra di dialogo sono presenti due combo-box che, all’avvio dell’applicazione, vengono inizializzate rispettivamente con: • le informazioni statistiche rappresentabili (ovvero con l’elenco delle tabelle presenti nella base dati dati.mdb) • gli anni di riferimento relativi all’informazione statistica selezionata (tramite un comando di raggruppamento SQL eseguito sulla tabella selezionata, ovvero la voce corrente della prima combo-box) 3
  • 4. Questo significa che, aggiungendo alla base dati ulteriori tabelle informative aventi la medesima struttura, esse verranno presentate automaticamente senza la necessità di apportare variazioni all’applicazione. Per l’individuazione del comune sulla base del punto cliccato sul territorio si è fatto uso come già accennato della base dati postGis, nella quale è stato preventivamente importato il file in formato ESRI shapefile relativo ai confini comunali relativi alla provincia di Trento. Lo ESRI (Environmental Systems Research Institute) shapefile è un formato per dati geospaziali vettoriali utilizzato dai sistemi GIS (Geografic Information System) per descrivere spazialmente punti, poligoni e multilinee. A ciascun di questi elementi possono essere associati ulteriori attributi; nel nostro caso ai poligoni identificanti il comune sono associati codice ISTAT e descrizione del comune stesso. Per ottenere codice e descrizione del comune è stata eseguita quindi una semplice interrogazione SQL fornendo in input le coordinate x,y del punto selezionato: SELECT comuni.comu, comuni.desc FROM public.comuni WHERE CONTAINS(the_geom,GeometryFromText('POINT(coordX coordY)',-1)); 3. Architettura del sistema Il sistema è rappresentabile secondo la seguente architettura: Figura 1 – l’architettura dell’applicazione nell’ambiente VTP 4
  • 5. Librerie VTP sono: • vtlib (VTP Terrain Library): insieme di classi C++ per la generazione di terreni e colture in ambiente 3D (in particolare le funzionalità per la visualizzazione di quanto descritto nell’albero di scena: luci, immagini e modelli 3D) • vtdata (VTP Data Library): insieme di classi C++ per gestire dati geospaziali • vtui (VTP User Interface): insieme delle funzioni che consentono la visualizzazione e l’interazione tra utente ed interfaccia grafica del programma (compresa la gestione della navigazione sul terreno) Librerie di supporto necessarie sono invece: • mfc (Microsoft Foundation Class): libreria che contiene tutto ciò che è necessario per gestire un’interfaccia grafica (già integrata nei sistemi operative Microsoft) • GDAL (Geospatial Data Abstraction Library): libreria per georeferenziazione dei dati territoriali da visualizzare (supporta le operazioni necessarie per le conversioni dei dati cartografici nei diversi sistemi di riferimento) • libjpeg, libpng, zlib: sono le 3 librerie che consentono di le immagini nel formati JPG, PNG e gzip-compressi (texture che si applicano agli oggetti tridimensionali, compresa l’ortofoto applicata al DTM) • OpenGL (Open Graphics Library): è la libreria grafica di basso livello che si interfaccia direttamente alle funzioni 3D implementate direttamente dalla scheda madre • OSG (Open Scene Graph): sistema grafico utilizzato per la gestione dell’albero di scena (ovvero il modo strutturato per descrivere il mondo virtuale da rappresentare) • libMini: libreria per il rendering del terreno. Si integra con OSG e consente di gestire in maniera più accurata il livello di dettaglio (LOD, Level Of Detail) 4. Organizzazione dei dati I dati in input utilizzati dall’applicazione mfcSimple sono stati catalogati in cartelle a loro volta contenute nella cartella Data: • Elevation contiene il profilo altimetrico in formato BT della zona da visualizzare • Fonts contiene i caratteri utilizzati per i testi (formato ttf) • GeoSpecific contiene l’ortofoto in formato JPG (pat.jpg) da sovrapporre al modello digitale del terreno • Terrains contiene il file XML con le informazioni che descrivono la scena Il file XML, che viene caricato all’avvio di mfcSimple come prima operazione, definisce le caratteristiche dell’ambiente da visualizzare: <?xml version="1.0" encoding="utf-8"?> <Terrain_Parameters> <Name>Provincia di Trento</Name> <Elevation_Filename>pat.bt</Elevation_Filename> <Vertical_Exag>1.000000</Vertical_Exag> <Min_Height>20.000000</Min_Height> <Nav_Style>0</Nav_Style> <Nav_Speed>3000.000000</Nav_Speed> … <Texture_Filename>pat.jpg</Texture_Filename> … </Terrain_Parameters> 5
  • 6. 5. Organizzazione delle classi Il progetto mfcSimple è costituito da una serie di classi che implementano la visualizzazione del terreno e le funzioni per la navigazione su di esso; i files che le includono (e relativi header files) sono: • MainFrm.cpp • mfcSimple.cpp • mfcSimple.rc • mfcSimpleDoc.cpp • mfcSimpleView.cpp Le nuove classi implementate sono incluse invece in due nuovi files: • Engines.cpp, che implementa le classi: o TerrainPicker: individuazione di un punto selezionato col mouse sul terreno o db: accesso alle basi dati postGIS e Ms Access • SelectDlg.cpp, che implementa la classe CSelectDlg la quale gestisce la finestra di dialogo per la selezione delle informazioni 5.1 Descrizione delle classi implementate/modificate Come accennato, per la realizzazione dell’applicazione sono state apportate modifiche ad alcune delle classi esistenti nel progetto mfcSimple e ne sono state realizzate alcune nuove. In breve, le classi modificate e le relative variazioni apportate sono: classe variazioni apportate CMainFrame - aggiunta la gestione della finestra di dialogo per la selezione delle informazioni CSimpleApp - aggiunta la gestione degli eventi di pressione del tasto per il picking dei punti sul terreno - aggiunte le variabili per la memorizzazione delle informazioni selezionate (codice del comune, descrizione del comune, informazione statistica e relativo anno) CSimpleView - aggiunte le procedure per la visualizzazione delle scritte e degli oggetti cilindrici sulla scena tridimensionale - aggiunta la gestione dell’oggetto TerrainPicker - modificato l’evento click del mouse per integrarlo con le operazioni da eseguire quando viene effettuato il picking sul terreno (lettura e rappresentazione grafica delle informazioni) 6
  • 7. class CSimpleView : public CView void CSimpleView::OnLButtonDown(UINT nFlags, CPoint point) in questo metodo è stata aggiunta la gestione del Terrain Picking con la conseguente visualizzazione delle informazioni e degli oggetti grafici in caso di picking sul territorio provinciale; in questa procedura vengono inoltre calcolate le altezze da attribuire ai due oggetti cilindrici che rappresentano le percentuali delle informazioni statistiche relative al comune selezionato void addCylinder(DPoint2 g, float fCylHeight) costruisce sul punto bidimensionale fornito in input un oggetto cilindrico di larghezza fissa (l’altezza è fornita in input ed è regolata dal dato da rappresentare) void addLabel(DPoint2 g, float fOffsetY, CString strLab) stampa sul punto bidimensionale fornito in input la label (sempre fornita in input) utilizzando il set di caratteri memorizzati nella cartella Data/Fonts; a seconda della necessità il testo viene stampato dopo essere stato traslato in altezza (di una distanza pari a fOffsetY) Ad ogni evento di picking sul territorio, gli oggetti aggiunti (cilindri o labels che siano) vengono aggiunti ad un vettore (m_Markers) con lo scopo di tener traccia dei nodi di tipo vtTransform che vengono aggiunti al territorio. Tale vettore viene quindi poi utilizzato al picking successivo per eliminare dalla scena gli oggetti visualizzati in precedenza. Infatti, ogni aggiunta di oggetti alla scena avviene tramite un puntatore all’oggetto vtTransform (classe che appartiene alla libreria vtlib) aggiunto nel punto desiderato (in coordinate mondiali) attraverso il metodo PlantModelAtPoint dell’oggetto vtTerrain (anch’esso di vtlib). vtTransform è una classe che consente di effettuare trasformazioni geometriche mediante le quali è possibile traslare, ruotare o scalare un oggetto posizionato sul terreno (nel nostro caso è stato utilizzato solo per traslare). Le labels (informazioni testuali) sono state visualizzate in colore giallo e gestite tramite la classe vtTextMesh (vtlib) che consente di specificare font e dimensione dei caratteri da rappresentare. I metodi implementati nelle nuove classi realizzate sono: class TerrainPicker : public vtLastMouse TerrainPicker() costruttore, inizializza la variabile per l’altezza del terreno e la variabile che indica se il picking è avvenuto sul terreno void OnMouse(vtMouseEvent &event) gestisce l’evento di click sul territorio col mouse invocando la funzione FindGroundPoint() bool GetCurrentEarthPos(DPoint3 &p) restituisce vero se il picking è avvenuto sul terreno (falso in caso contrario) ed il punto tridimensionale selezionato (in coordinate mondiali) void FindGroundPoint(); cerca le coordinate mondiali relative al punto cliccato tramite il metodo CastRayToSurface dell’oggetto vtHeightField3d (classe che appartiene alla libreria vtdata) 7
  • 8. class db CString getIdCom(DPoint3 &p, CString &strDesCom) fornito in input un punto 3D sul terreno, questo metodo interroga la base dati postGIS e restituisce il codice e la descrizione del comune al quale il punto appartiene; restituisce 0 se il punto in input risulta essere al di fuori dei confini provinciali void initComboInfo(CComboBox &m_cbInfo) metodo per inizializzare la combo-box con le informazioni statistiche (nome tabelle db MS Access) void initComboAnno(CString strTab, CComboBox &m_cbAnno) metodo per inizializzare la combo-box con i periodi (anni) relativi all’informazione statistica (nome della tabella db MS Access) fornita in input void getData(CString strIdCom, CString strTab, CString strAnno, CString &strMas, CString &strFem) questo metodo, dati in input il codice del comune, il tipo di informazione statistica desiderata e l’anno di riferimento, restituisce i valori corrispondenti per maschi e femmine CString getDbAccessPath() restituisce il percorso assoluto della base dati MS Access dati.mdb CString getDbAccessConnString() restituisce la stringa di connessione alla base dati MS Access dati.mdb class CSelectDlg : public CDialog CSelectDlg(CWnd* pParent = NULL) costruttore, inizializza le variabili di indicizzazione delle combo-box void initComboInfo(CComboBox &m_cbInfo) inizializza la combo-box richiamando il metodo initComboInfo della classe db void initComboAnno(CString strInfo) inizializza la combo-box richiamando il metodo initComboAnno della classe db, fornendo in input il nome della tabella selezionata nella combo-box delle informazioni statistiche (initComboInfo) virtual BOOL OnInitDialog() inizializza la finestra di dialogo popolando le combo-box afx_msg void OnSelchangeInfo() gestisce l’evento di selezione dell’elemento dalla combo-box delle informazioni statistiche afx_msg void OnCbnSelchangeAnno() gestisce l’evento di selezione dell’elemento dalla combo-box degli anni riferimento 8
  • 9. 5.2 Sequence ed activity diagrams Le figure 2 e 3 illustrano rispettivamente il diagramma di sequenza di collaborazione tra i vari oggetti al momento del picking sul territorio ed il corrispondente diagramma delle attività. Figura 2 – sequence diagram relativo all’operazione di picking sul terreno Figura 3 – activity diagram dell’operazione di picking 9
  • 10. 6. Utilizzo dell’applicazione Avviando l’applicazione, il terreno tridimensionale visualizzato è direttamente quello relativo alla provincia di Trento (tramite il file pat.bt definito con VTBuilder). Come già accennato è possibile navigare sul territorio con l’ausilio del mouse (le istruzioni sull’utilizzo si possono trovare all’indirizzo http://vterrain.org/Doc/Enviro/Navigation/index.html). Pigiando sul pulsante INFO è possibile selezionare, tramite la finestra di dialogo, l’informazione statistica in riferimento ad uno specifico anno che si desidera visualizzare sul territorio (figura 4). Per default viene considerata la prima informazione presente nella base dati MS Access in ordine alfabetico. L’informazione così selezionata viene visualizzata sulla barra di stato posta in fondo alla finestra dell’applicazione. Figura 4 - l’immagine mostra il dialog box che consente di effettuare la selezione del tipo di informazione statistica per anno di interesse Una volta selezionata l’informazione ed il periodo è sufficiente navigare sul territorio e, tramite il pulsante PICK, cliccare in un punto (all’interno della provincia di Trento) per visualizzare il comune selezionato e le informazioni statistiche ad esso relative (figura 5). Le informazioni vengono visualizzate, oltre che in maniera testuale, anche graficamente tramite due oggetti cilindrici rappresentanti rispettivamente le percentuali dei valori riscontrati relativi agli individui di sesso maschile e femminile. 10
  • 11. Figura 5 – l’immagine mostra come avviene la visualizzazione dell’informazione selezionata tramite il picking sul terreno In caso di picking al di fuori del territorio provinciale, sulla barra di stato viene visualizzato il testo “nessun comune selezionato” e niente sul territorio. Il carattere utilizzato per la rappresentazione testuale è Insaniburger.ttf (collocato nella cartella Data/Fonts). Disattivando il pulsante PICK, si ritorna in modalità di navigazione con la possibilità di spostarsi nuovamente sul territorio. 10. Riferimenti/bibliografia • VTP (Virtual Terrain Project): http://www.vterrain.org • OSG (Open Scene Graph): http://www.openscenegraph.org • OpenGL: http://www.opengl.org • postGis: http://postgis.refractions.net • tesi di laurea di Marco Pergher: “Analisi di immagini e generazione di ambienti tridimensionali virtuali finalizzati al supporto decisionale” • tesi di laurea di Luca Passerella: “Generazione di ambienti tridimensionali geo-referenziati come strumento per il supporto alle decisioni” 11