2011-11-23

VTerrain plugin per QGis

Per installare il plugin "VTerrain" su QGis, è sufficiente cercare "VTerrain" nella lista dei plugin del pannello "Installazione QGIS Python Plugins", selezionarlo e premere il bottone "Installa/Aggiorna plugin".
Essendo il plugin VTerrain basato sul programma Enviro di VTP, occorrerà anche installare VTP sulla propria macchina.



[Obsoleto]:
Per installare il plugin "VTerrain" su QGis, bisogna inserire il seguente link nella "Repository" del pannello di controllo dei plugin python:

http://gisinnova2.oneminutesite.it/files/7-python_plugins.xml

Questo video mostra la sequenza delle operazioni necessarie per l'installazione



Bisogna inoltre installare i programmi di VTerrain:

per la versione Windows:

VTP Installer
VC 2008 SP1 Redistributable Package

e seguire le istruzioni di dettaglio su:

http://vterrain.org/Download/Binaries.html


Per quanto riguarda Linux, è in fase di rilascio la installazione, tramite apt-get, per Debian e Ubuntu.

Per quanto riguarda MacOSX, è previsto il rilascio per inizio 2012.


Questo video mostra l'uso del plugin all'interno di una live DVD linux Ubuntu

 (Virtual Terrain Project - VTerrain.org)


( Animazione Territoriale  di Roberto Angeletti )



(Elaborazione dati  OpenDem.info e OpenStreetMap.org)


 (Modello Tridimensionale di Antonello Buccella)


Dettagli sul plugin VTerrain per QGis:

I plugin di QGis vengono installati nelle seguenti directory, a seconda del sistema operativo:
  • UNIX/Mac: ~/.qgis/python/plugin
  • Windows: ~/.qgis/python/plugins
La directory "Home" (rappresentata sopra da ~) su Windows normalmente  è  "C:\Documents and Settings\(utente)", mentre su UNIX e Mac essa è più nascosta, ed in genere non è visibile tramite la comune interfaccia di "risorse del sistema", ma è necessario ricorrere al terminale, dove digitare:

cd  /home/(utente)/.qgis/python/plugins/

ove occorre copiare la directory VTerrain, contenente i file:
VTerrain.py
Ui_VTerrain.py      
Makefile          
icon.png           
resources.py   
Ui_VTerrain.ui      
vtpopen.py
icon_VTerrain.png  
resources.pyc 
VTerrainDialog.py
__init__.py        
resources.qrc  

Queste  risorse verranno elaborate da QGis durante la partenza del programma.

Questo e' il link ad un live DVD Linux Ubuntu che contiene VTP e il plugin:  Custom.iso

Se vi viene richiesta una password, inviatemi una eMail a:

exporttocanoma at gmail dot com



BobMaX



Link interessanti:  http://arc-team-open-research.blogspot.com/
http://arc-team-open-research.blogspot.com/2011/12/qgis-and-virtual-terrain-project.html

2011-10-09

OpenStreetMap: disegnare edifici

OpenStreetMap (OSM) è la principale repository di dati vettoriali liberi riguardanti infra-strutture urbane e territoriali.  Principalmente, questi dati riguardano gli assi stradali, come si può supporre dallo stesso nome del progetto, ma basta visitare la sua pagina web per rendersi conto che i livelli visualizzati sono molti altri.



Nell'immagine possiamo vedere, infatti, oltre agli assi stradali, anche i parchi, i fiumi, e soprattutto gli edifici.  Attualmente, il numero di edifici inseriti in OSM è molto alto, anche la copertura è "a macchia di leopardo".  In Italia possiamo trovare una notevole copertura di edificato in Trentino, probabilmente dovuta a donazioni di cartografia effettuata da enti pubblici, ma cominciano a comparire interi quartieri anche nelle regioni centrali.
In totale, ad oggi, nel livello Buildings di Italia OSM possiamo contare circa 1 milione e 400 mila poligoni.



La cosa interessante è che, tra i tag associati ai dati di OpenStreetMap è previsto un campo altezza, ovvero "height=".

Se andiamo a consultare le pagine wiki della documentazione di OSM, troviamo molte cose relative agli edifici, sia già implementate, sia previste.

http://wiki.openstreetmap.org/wiki/Key:building
http://wiki.openstreetmap.org/wiki/Proposed_features/Building_attributes


Per quanto riguarda le modalità di inserimento degli edifici all'interno di OpenStreetMap, oltre alla già detta donazione cartografica da parte di volenterosi enti pubblici, vedremo ora quella più divertente, anche se molto più laboriosa, del disegno all'interno dell'editor grafico JOSM, attraverso il plugin Buildings.

Il video che segue ne dimostra l'uso.



Nell'immagine vediamo l'immagine fotografica di Bing maps come sfondo di supporto al disegno.


Selezionando la funzione "Buildings" è possibile disegnare un rettangolo con una rotazione generica, inserendo tre punti con il puntatore del mouse.


Dopo aver disegnato il rettangolo, che potrà essere successivamente modificato, aggiungendo altri vertici per meglio seguire la forma dell'edificio, possiamo inserire il tag "height", con l'altezza dell'edificio stesso.
Normalmente, l'informazione che individua un edificio, in OSM, è il tag "building=yes". Possono essere aggiunti anche altri tag, come il nome dell'edificio o altri, tra quelli previsti.

Non vi resta che scaricare JOSM sulla vostra macchina e provare ad aggiungere il vostro quartiere su OpenStreetMap. Buon divertimento!


BobMaX

Link interessanti:
http://blog.openstreetmap.it/
OpenStreetMap per principianti
Documentazione sui possibili elementi OSM
Documentazione sui Buildings OSM
JOSM Buildings plugin
JOSM Terracer plugin

2011-09-10

VTP (settima parte) - Ricompilare per Linux


"Bene.  Mi hai convinto.  Mi serve VTP.  Però io uso solo Linux. "

Questa è la frase tipica dell'utente GIS, recentemente.  Ebbene, è vero: il sito web di  VTerrain.org  dichiara più volte che VTP esiste anche per Linux e MacOSX.  Però, contrariamente a quello che accade per Windows, Virtual Terrain Project non distribuisce un installatore per le altre piattaforme.
Come possiamo risolvere il problema ?   Rimboccandosi le maniche e ricompilando tutto, a partire dai sorgenti.  Impresa impossibile ?  Noi ci siamo riusciti, e vi descriveremo come.

Prima di tutto, scegliamo una versione di Linux.  Ci siamo informati, ed abbiamo scoperto che i programmatori di VTP usano Ubuntu Linux 10.04 32 bit.  

Perfetto.  Come per la frase tipica che abbiamo visto prima, "Io uso solo MacOSX".  Quindi, per fare l'impresa ancora più impossibile, mi installo una VirtualBOX, con una macchina virtuale Linux Ubuntu 10.04 32 bit, con un disco virtuale da 20 giga, dinamico.  Più Virtuale di così...!



Nella macchina Virtuale sul nostro Mac mini ricompileremo Virtual Terrain per Linux.  Comunque, è meglio chiarire che VirtualBox (o un altro tipo di macchina virtuale) è necessaria soltanto per rendermi disponibile Linux in una finestra del mio sistema MacOSX, senza dover "spianare un computer" e formattare un disco reale.  I possessori di un computer Linux non devono installare VirtualBox (o simili) per ricompilare VTP.

Comunque, cominciamo.  Ci colleghiamo alla pagina  unix_build  di VTerrain.org, per studiarci le istruzioni di compilazione.  Sappiamo, comunque, che non sempre le istruzioni sono aggiornate all'ultima versione dei sorgenti e che, quindi, molto facilmente potranno uscir fuori errori.


VTP è costituito essenzialmente da due programmi, come abbiamo più volte visto in questa serie di articoli:  VTBuilder e Enviro.
Entrambi i programmi utilizzano una serie di librerie software, che in gran parte sono le stesse utilizzate da tutti i programmi Gis OpenSource, come ad esempio QuantumGIS.
Queste librerie sono:

GDAL
PROJ.4
LIBPNG

e poi molte altre...

In più, il rendering 3D di VTP Enviro è basato su OpenSceneGraph, che è una formidabile libreria per la visualizzazione territoriale in tempo reale, utilizzata anche in simulatori di volo.



Riassumendo, in questa pagina di VTerrain.org sono descritte tutte le librerie necessarie.



Ma prima di iniziare a procurarci le librerie, scaricandole dalla rete, conviene descrivere cosa si intende per "ricompilare" un'applicazione su Linux Ubuntu, o comunque in un ambiente Open Source.

"Open Source" sta a significare che i listati originali del programma sono disponibili per essere adattati alle proprie esigenze, o più semplicemente per essere "portati" su una "piattaforma" non ancora prevista.

Come prima cosa, occorre assicurarci di avere il complilatore installato sulla nostra macchina.  Se abbiamo dubbi, probabilmente non lo abbiamo.  Per procurarcelo, scriviamo, nella finestra del terminale:

sudo apt-get install g++


Questa istruzione ci richiederà la password di amministratore, e dopo qualche tempo troveremo installato il compilatore C++ sulla macchina, pronto per l'uso.

Senza volerci dilungare troppo, una volta ottenuti i "sorgenti" di un programma, per ottenere il file eseguibile occorre aprire un terminale del sistema operativo, posizionarsi nella directory dei sorgenti e occorre scrivere:

./configure

Questa istruzione preparerà una serie di file, contenenti variabili di ambiente specifiche per la propria macchina.  Una volta terminata la configurazione, occorre scrivere:

make

Questa operazione "compila" tutti i sorgenti del programma, creando file contenenti istruzioni in linguaggio macchina, che poi verranno montati dal "Linker" insieme alle librerie necessarie.

Alla fine occorre scrivere:

sudo make install

che costituisce la fase di installazione del programma (o della libreria).

Per queste operazioni non è necessario essere un programmatore, anche se, chiaramente, questo non guasta. Per prima cosa, quindi, impariamo a trovare il "terminale" su Linux Ubuntu (mi ripeto: versione 10.04) .   Troviamo "Terminale" nel menu "Applicazioni", sotto "Accessori".






Nella finestra del terminale, che si aprirà nella directory base della propria utenza, andiamo a scrivere:

svn checkout http://vtp.googlecode.com/svn/trunk/ vtp

per procurarci l'ultima versione dei sorgenti del programma.  Se non siamo dei programmatori, molto probabilmente questa istruzione ci darà errore, perché non è installato sul nostro computer il necessario programma. Comunque, sul terminale sarà indicato cosa dobbiamo fare per installare "svn".

Se vogliamo semplificare il problema, scarichiamo i sorgenti con un file ZIP che ne contiene la versione da noi provata :

http://vterrain.org/dist/vtp-src-111016.zip

Creiamo una directory chiamata "vtp" sotto la nostra "/home".  Poi inseriamo il contenuto dello ZIP al di sotto della nostra "vtp".


La struttura gerarchica delle directory di sviluppo di VTP è composta da due gruppi principali:  TerrainSDK, contenente le librerie del programma e TerrainApps, con le applicazioni vere e proprie.

Noi abbiamo aggiunto una ulteriore directory, "deps", in cui andremo ad inserire le librerie esterne che andremo a scaricare, con l'istruzione:

svn checkout http://vtp.googlecode.com/svn/deps/ deps

Ottenute così alcune delle altre librerie necessarie (ma non tutte...) possiamo iniziare a "ricompilare".
Per farlo, ci occorrono alcune componenti:  CMake ed il compilatore vero e proprio.

Possiamo scaricare CMake tramite questo link:

http://www.cmake.org/files/v2.8/cmake-2.8.6-Linux-i386.tar.gz

Troveremo "cmake-gui" nella directory "bin" all'interno di "cmake-2.8.6-Linux-i386".


Lanciando "cmake-gui" ci troveremo davanti la finestra di CMake, che ci permette di configurare il progetto di ricompilazione di VTP, e delle altre componenti che andremo a sviluppare.



CMake usa dei file di configurazione ("CMakeList.txt") rilasciati con i sorgenti, contenenti la lista delle librerie e le variabili necessarie.  Nell'immagine che segue vediamo un esempio del contenuto di un file "CMakeList.txt" di VTP.  Non sarà necessario per noi mai modificare questo file, quindi, chiudiamolo lasciandolo invariato, e andiamolo, invece, ad utilizzare con CMake.




Come prima cosa dobbiamo indicare a CMake la directory dei sorgenti, selezionando il bottone "Browse Source".   Allo stesso modo, dobbiamo indicare la directory di uscita, con il bottone "Browse Build".   Noi abbiamo scelto di posizionare il prodotto di uscita nella directory che abbiamo chiamato "build", che abbiamo posto direttamente al di sotto della directory "vtp".

A questo punto premiamo il bottone "Configure".  Dopo qualche tempo di elaborazione, molte delle righe (se non tutte) della tabella centrale della finestra di CMake diventeranno rosse.  Questo significa che è stato riscontrato un errore. Questo è perfettamente normale, in CMake.  E', potremmo dire, la ragione principale dell'esistenza stessa di CMake.

Infatti, CMake-gui serve a portare gli errori di configurazione progressivamente a zero, evidenziando le componenti mancanti, ovvero, in genere, le librerie non trovate. 

Il primo "trucco" per (iniziare a) ridurre i problemi di CMake è di andare a compilare prima le librerie esterne.  Infatti, se andiamo a vedere alcune delle righe rosse della tabella CMake, vedremo marcate con "_NOTFOUND, ad esempio," proprio le librerie "mini", "quikgrid" e "squish", che abbiamo già scaricato da VTP e che sono poste sotto la nostra directory "deps".

Qui di seguito indichiamo le operazioni (ripetitive) da compiere nel terminale per ricompilare queste tre librerie.

cd   vtp/deps/mini
mkdir  build

Lanciamo Cmake-gui e indichiamo le directory sorgente e destinazione della configurazione. 
Premiamo "Configure".  Probabilmente Cmake ci segnalerà "Could NOT find OpenGL".  In questo caso occorre installare le librerie FreeOpenGL e Glut.
Probabilmente, poi, ci occorrerà anche installare le librerie "Curl", "Jpeg", "Png" e "Zlib".


Per queste ultime librerie conviene anteporre a qualunque altra cosa l'installazione delle dipendenze di OpenSceneGraph, con l'istruzione:


sudo apt-get build-dep openscenegraph


che provvede da sola ad installare le librerie necessarie (anche se l'attesa sarà piuttosto lunga). Sarà necessaria la password di amministratore.


Nel caso in cui queste siano installate ed il "Configure" di CMake non torni altri errori, si può premere "Generate".  Questo scrivera' i file necessari all'interno della directory "mini/build".  Spostiamoci nella directory "build" e lanciamo "make". Scriviamo quindi:

cd build
make

Al termine di una elaborazione abbastanza lunga, avremo di nuovo il controllo del terminale.  Scriviamo quindi:

sudo make install   

ed inseriamo la nostra password di sistema.

Questa operazione installa gli include di Mini in    "/usr/local/include/mini/"
ed installa la libreria di Mini in    "/usr/local/lib/libMini.a"

Ripetiamo le stesse operazioni per le altre librerie:

cd   vtp/deps/quikgrid/core
mkdir  build

Cmake   ...

make

"sudo make install"   installa gli include di quikgrid in    "/usr/local/include/quikgrid/"
"sudo make install"   installa la libreria di quikgrid in    "/usr/local/lib/libquikgrid.a"


cd   vtp/deps/quikgrid
mkdir  build

Cmake   ...

make

"sudo make install"   installa gli include di squish in    "/usr/local/include/"
ed installa la libreria di squish  in   "/usr/local/lib/libsquish.a"


---- CONTINUA ---


Ricompilazione BobMaX su Linux Ubuntu 10.04 32bit.
Lista librerie necessarie:

http://curl.haxx.se/download/curl-7.22.0.tar.gz

Dipendenze OpenScenegraph:

apt-get build-dep openscenegraph


Sorgenti OpenSceneGraph:
http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-2.8.5/source/OpenSceneGraph-2.8.5.zip

Sorgenti VTP:
http://vterrain.org/dist/vtp-src-111016.zip

inoltre, molto importante queste (soprattutto la mini, nella versione di Ben):





BobMaX

2011-08-28

VTP ( sesta parte ) - Strade, Alberi, Linee Elettriche e Recinzioni

Oltre a permettere la visualizzazione di dati poligonali, come gli edifici, completi di tetti e texture fotografiche, VTP tratta anche dati lineari, come strade, linee elettriche e recinzioni, ovviamente resi in 3D come oggetti, presi da un catalogo, estendibile dall'utente.  
Fonte libera di dati cartografici per il grafo stradale, per eccellenza, è ovviamente sempre OpenStreetMap, che abbiamo già visto nelle precedenti parti di questo mini-corso su VTP.
VTBuilder carica direttamente i dati nativi in formato OSM, tramite "drag and drop". Infatti, trascinando un file OSM, salvabile dalla pagina web di OpenStreetMap, all'interno della finestra di VTBuilder, i dati vengono inseriti direttamente sotto il livello "strade" ed è possibile modificare i campi associati, per farli corrispondere alla modalità di visualizzazione voluta sotto Enviro.


Per salvare il file OSM, nella finestra web di OpenStreetMap.org, dobbiamo selezionare la voce "Dati" nel pannello blu di destra e poi, scorrendo verso il basso della lista degli elementi, andiamo a scegliere il link "Ottieni quest'area dalle API"  (http://www.openstreetmap.org/api/0.6/map?bbox=13.546685,41.201884,13.601325,41.21893).


Il file OSM è sostanzialmente un formato XML, che contiene la geometria e i campi associati a tutti gli elementi visualizzati nella pagina web.
Conoscendo le coordinate geografiche Wgs84 del rettangolo di visualizzazione di una qualunque area, e inserendo questi valori nel parametro "bbox=" possiamo ottenere il corrispondente file OSM, utilizzando un comune browser.  Ovviamente, l'area non deve essere troppo estesa, altrimenti il server ritorna un errore. Comunque, conviene usare la interfaccia di OpenStreetMap, oppure il programma JOSM, per ottenere i dati, e non sperimentare con i parametri del link, per non stressare inutilmente il server OSM.

Quindi, importiamo questo file all'interno di VTBuilder.


VTP utilizza il suo formato RMF, per archiviare le strade. Come possiamo leggere nella documentazione, si tratta di un file binario, contenente i seguenti campi:

  • CRS (string, as OGC WKT)
  • extents of dataset (double left, right, bottom, top)
  • node locations (2D point)
  • link locations (2D polylines)
    • road number (short)
    • width in meters (float)
    • number of lanes (short)
    • surface type (short enum)
    • flags (short, contains direction of flow, presence of sidewalk and other flags)
    • sidewalk width (float)
    • curb height (float)
    • margin width (float)
    • lane width (float)
    • parking width (float)
    • topology (indices of from-node and to-node, int)
Una interessante funzione di VTBuilder è quella che adatta il modello del terreno alle strade.


Questo evita che nella visualizzazione 3D le strade risultino "galleggiare" staccate dal terreno, o vengano "immerse" in esso.  Con questa funzione, invece, il terreno viene tagliato, o riempito sotto il tracciato delle strade, creando automaticamente scarpate o terrapieni.



Vedremo prossimamente come è possibile anche trattare dati puntuali, come gli alberi, anch'essi selezionabili da un elenco.

BobMaX

VTP (quinta parte) - La funzione ExportToCanoma di VTBuilder

Una volta caricato in VTBuilder un livello "strutture" contenente edifici, è possibile esportare questi ultimi nel formato 3DV di Canoma.
Come abbiamo visto più volte in questo blog, Canoma è stato un importante ed insuperato software di fotogrammetria, che permette di collimare foto di oggetti e produce la "vestizione" degli oggetti stessi con le texture prese dalle foto. I risultati ottenibili con Canoma sono stupefacenti, in un tempo estremamente breve, dopo un periodo di allenamento.
Canoma non possedeva una funzione di importazione dei modelli in altri formati, se non nel nativo formato 3DV, che in sostanza era un formato testuale simile al VRML, e quindi, qualche anno fa, abbiamo realizzato un plugin per vari programmi cad, come MicroStation e più recentemente per SketchUp, che esporta i modelli realizzati con questi programmi verso il formato Canoma 3DV. Questi plugin sono ancora distibuiti gratuitamente, a chi ne fa richiesta.





Abbiamo inserito il plugin ExportToCanoma anche all'interno di VTBuilder, e vedremo ora come utilizzarlo al meglio per inserire facilmente edifici con texture fotografiche, o pittoriche, all'interno di VTP Enviro.





Per prima cosa dobbiamo creare un modello del terreno della zona, anche piatto nel caso non abbiamo quello reale, come descritto nella prima parte di questo mini-corso.





Come secondo passo, carichiamo il livello edifici di OpenStreetMap, in formato SHP, della stessa zona, come descritto nella precedente quarta parte del mini-corso. Per salvare in un file solo gli edifici che ci interessano possiamo usare un GIS gratuito, come QuantumGIS.




Tramite "OpenStreetMap plugin" di QuantumGIS visualizziamo i livelli di OpenStreetMap della zona che ci interessa e poi, selezionando il livello "downloaded polygons" salviamo gli edifici utilizzando il formato "ESRI shapefile".

Importando come "strutture" questo livello in VTBuilder, verrà creato un livello edifici in cui questi sono tutti ad altezza costante, tre metri e mezzo. Ovviamente, è necessario che noi conosciamo l'altezza della gronda di ogni edificio per procedere.

Come esempio, prendiamo il caso del castello di Gaeta. Tra i punti quotati inclusi nel DEM che abbiamo visto nella seconda parte del corso, troviamo le altezze dei punti notevoli del castello; associando queste altezze ai poligoni che rappresentano i corpi principali dell'edificio, possiamo ottenere la volumetria del castello, tramite VTBuilder, e salvarlo in formato strutture VTST.
Sempre in VTBuilder, andiamo sotto il menu "Strutture" e selezioniamo la funzione "Salva in formato Canoma 3DV".

Questo file potrà essere caricato in Canoma per applicare le texture fotografiche.  





E' possibile anche caricare il modello salvato da Canoma in Google Earth, effettuando una conversione dal formato Wavefront OBJ in Collada DAE, tramite il programma MeshLab.
Tuttavia, in questo caso è evidente che sarebbe necessario modificare anche il terreno sottostante, che in questo caso risulta essere poco dettagliato.



BobMaX

2011-08-24

Roma in 3D completata !

Sono passati appena cinque mesi da quando Google ha inserito Roma tra le città modellabili attraverso Building Maker. Nel mio post di marzo dicevo:

"Questa sarà sicuramente un'impresa "colossale", che necessiterà di anni per il completamento. Oppure, ci vorranno solo mesi."

Ok, ci sono voluti solo cinque mesi. Tempo macchina ? Probabilmente sì. Ma non solo. Oltre a procedure automatiche di collimazione, per una copertura massiva, ci sono stati migliaia di modellatori "umani", che per passione hanno voluto realizzare il proprio "pezzetto" di questo incredibile puzzle tridimensionale che è Roma in 3D su Google Earth.

Dunque, possiamo goderci di un volo sulla nostra città eterna, senza spendere i soldi di un elicottero, da adesso...

Buon volo !






BobMaX


Link interessanti:

2011-08-23

VTP (quarta parte) - Disegnare un Edificio 3D


Uno dei punti di forza di VTP è quello di poter simulare un territorio non solo tramite la descrizione tridimensionale del suo terreno, ma anche potendo aggiungere altri livelli informativi, quali edifici, strade, alberi, recinzioni, linee elettriche e testi.

In questa parte vedremo come fare per disegnare da zero il contorno base di un edificio, associando poi le altezze ai singoli corpi e vederlo poi in 3D, completo di tetto spiovente.

VTP consente di disegnare edifici sia con VTBuilder, solo in 2D, sia direttamente in 3D con Enviro. Proveremo entrambe le tecniche.

Apriamo Enviro sul nostro terreno piatto di Gaeta, che abbiamo creato nella prima parte di questo mini-corso. Navighiamo su una zona e proviamo a disegnare un edificio rettangolare, selezionando il bottone "Edifici". Disegniamo il contorno, usando il tasto sinistro del mouse e premendo infine quello destro per terminare. Verrà disegnato un volume in 3D, co un tetto "a capriata".



Selezionando l'edificio e premendo il tasto destro del mouse comparirà una palette contenente la voce "proprietà", che aprirà il pannello di modifica dei parametri dell'edificio selezionato. Nel pannello possiamo modificare l'altezza di ogni edificio e la tipologia del tetto, che potremo mettere "a terrazza", oppure a "due falde" eccetera.

Per il momento fermiamoci a questi due soli parametri, anche se potremmo inserire porte, finestre e cambiare i colliri del tetto e delle singole facciate dell'edificio.

E' da notare che, per quanto noi possiamo disegnare complesso un edificio, il programma riesce a rappresentare un tetto spiovente su di esso, cosa non molto comune.

Dopo una buona esercitazione nel disegno di una nostra città inventata, con edifici ai diversa altezza e tipologia, salviamo il frutto del nostro lavoro, aprendo il pannello dei livelli di Enviro ed usando la funzione "Salva col nome…" dopo aver selezionato il livello "untitled.vtst".


Dopo di questo, però vediamo cosa succede nel caso avessimo già un livello vettoriale, in formato SHP, della base a terra degli edifici. Simuliamo questo vedendo se esiste in rete un livello con quello che ci interessa. Un buon deposito di strati vettoriali è costituito da OpenStreetMap.org che distribuisce la mappa stradale del mondo realizzata dagli utenti in modalità Web 2.0 .

Andando a guardare sul sito OpenStreetMap.org e navigando fino alla zona che ci interessa, possiamo subito renderci conto se oltre alle strade, abbiamo già a disposizione le sagome degli edifici. Nel caso di Gaeta abbiamo la fortuna di vedere che la zona del castello è stata inserita. Per eseguire il download dello strato OpenStreetMap possiamo utilizzare diversi metodi.

Il primo metodo è quello di scaricare interamente lo strato OpenStreetMap in un unico ZIP contenente tutta la nazione che ci interessa ( in questo caso Italy.zip ). Lo ZIP viene aggiornato quotidianamente e contiene tutti i livelli informativi che gestisce OpenStreetMap, principalmente assi stradali, ma anche fiumi, laghi, linee elettriche, parchi, punti di interesse e soprattutto, per noi, edifici. Il disegno contenuto in OpenStreetMap è a macchia di leopardo e quindi, per ora non può essere considerato esaustivo, ma essendo un "work in progress" realizzato contemporaneamente da centinaia di migliaia di persone, ha buona probabilità di essere terminato in un paio di anni.

Il secondo metodo è quello di usare il programma "JOSM", con cui vengono disegnati i livelli di OpenStreetMap, scegliere la zona voluta e salvare su disco il file .OSM corrispondente, che poi va convertito in formato SHP.

Dopo aver decompresso il file ZIP di OpenStreetMap, prendiamo tutti i file "buildings" e, tramite un programma GIS gratuito, come QuantumGIS, selezioniamo la geometria degli edifici che ci interessano e salviamo la selezione in formato SHP, chiamandola, per esempio "GaetaVecchia.shp".

In questo modo avremo la geometria di base su cui iniziare a lavorare con VTP. Il livello di OpenStreetMap è in coordinate Wgs84 longitudine e latitudine e quindi non dovremo fare nessuna conversione tra sistemi geografici.

Importiamo "GaetaVecchia.shp" in VTBuilder, nel livello Strutture, e ci verranno chiesti alcuni parametri, tra cui l'altezza di ogni edificio ed il tipo di copertura. Nel nostro caso dovremo imporre una altezza costante per tutti gli edifici, diciamo 10 metri, dato che OpenStreetMap non possiede (ancora ?) questa informazione.
Poi, imponiamo una copertura a terrazza per tutti gli edifici, per il momento.

Preliminarmente, dovremo aver creato un terreno "piatto" al di sotto degli edifici, secondo la procedura che abbiamo già visto nella prima parte di questo mini corso.

VTBuilder visualizzarà le sagome degli edifici, i loro centroidi e gli eventuali cortili saranno disegnati con una linea tratteggiata. Salviamo il file in formato strutture VTP con estensione .vtst, per poterlo utilizzare con Enviro. Il VTST è un file di testo in formato XML, simile al famoso KML, contenente la descrizione parametrica degli edifici, a partire dalla base ed estrudendola verso l'alto per formare i corpi principali. Nel caso in cui ci siano tetti, questi vengono descritti parametricamente, tramite l'angolo di pendenza ed il tipo.

Il file VTST è insomma un file "intelligente" che permette la successiva modifica dei parametri di ogni singolo edificio.


Nella prossima parte vedremo come esportare un edificio, o più di uno, in formato Canoma 3DV, tramite la funzione ExportToCanoma di VTBuilder. Caricheremo poi il file 3DV in Canoma per "vestire" il modello con texture fotografiche, che potremo poi visualizzare in Enviro, tramite il formato OBJ, 3DV oppure Collada DAE, lo stesso utilizzato da Google Earth.


BobMaX


Link utili:

2011-08-12

VTP (terza parte) - Navigazione 3D con Enviro

Una volta creato un terreno con VTBuilder, perché questo sia visualizzabile in 3D, dobbiamo organizzarlo in un progetto Enviro, che sostanzialmente è composto da una serie di directory. Vediamole.
Lanciamo Enviro, che si trova sotto "c:\Programmi\VTP\Apps\" , nel caso di Windows, e ci troveremo davanti al pannello di gestione dei progetti.




Nell'immagine é selezionato un terreno chiamato "Simple". Premiamo il bottone "Gestione Terreno".




Verrà aperto il pannello dove potremo aggiungere con "Aggiungi Percorso" la directory in cui andremo a creare la struttura del progetto Enviro; questa è composta dalle seguenti directory:

BuildingData
BuildingModels
Elevation
GeoSpecific
Locations
PlantData
RoadData
Terrains

Quest'ultima conterrà un file XML con tutti i parametri del progetto, per modificare i quali non avremo bisogno di usare un editor di testo, ma avremo a disposizione un pannello di Enviro.
Per prima cosa, copiamo il nostro terreno BT ed il suo file PRJ nella directory Elevation, e poi apriamo, appunto, il pannello del progetto con il bottone "Modifica Proprietà".




Selezioniamo "Nome del File Griglia" e scegliamo il nostro file dalla lista a scomparsa. Inseriamo anche un nome per il nostro nuovo progetto Enviro, prima di premere "OK", altrimenti questo si chiamerà "Untitled".
Se ora visualizzeremo il terreno, questo ci verrà mostrato bianco. Infatti, prima dobbiamo scegliere una colorazione, tramite il tab "Texture" del pannello. Le texture, ovvero le ortofoto del terreno andranno prima inserite nella directory "GeoSpecific" del progetto. Nel nostro caso, vogliamo visualizzare il terreno colorato per altezze, e sceglieremo quindi "Deriva Texture dall'Elevazione" e "default_absolute.cmt" come tabella colori.




Chiudiamo il pannello dei parametri di creazione del terreno, con "OK" e verranno salvate automaticamente le nostre scelte nel file XML del progetto.

A questo punto siamo pronti per volare con Enviro. Premiamo il bottone "OK" del pannello "Avvio" di Enviro.
Dopo il tempo di caricamento, compare il nostro terreno, inquadrato da un punto di vista generico, che poi andremo a modificare.
Nell'immagine che segue vediamo il nostro terreno di Gaeta, completato da un modello volumetrico del castello, che useremo come riferimento per la navigazione.




Vediamo ora quali sono le modalità per muoverci nello spazio con Enviro.

La pagina web di riferimento del sito VTerrain.org è questa:


In sostanza, per spostarsi in avanti bisogna premere il tasto sinistro del mouse e trascinare il cursore verso l'alto, rispetto al centro della schermata di Enviro. Trascinando il cursore verso il basso, ci si allontana. Muovendo il cursore verso destra o sinistra, ci si sposta in avanti (o indietro) nella direzione indicata.
Usando il tasto destro del mouse e trascinando il cursore verso il basso, ci muoviamo verso il basso. Trascinando il cursore col tasto destro del mouse verso l'alto ci solleviamo.
Premendo entrambi i tasti del mouse, destro e sinistro, contemporaneamente e trascinando il cursore, muoviamo "la testa" nella direzione indicata.
E' possibile anche usare le frecce direzionali della tastiera, per spostare lo sguardo.

Se il movimento risulta essere troppo lento, è possibile modificare la "velocità" premendo più volte il tasto F della tastiera. Per rallentare, bisogna usare il tasto S.
Con i tasti ctrl-R ci posizioniamo di nuovo al centro del modello, nel caso ci fossimo "persi".
Con i tasti ctrl-T vediamo il modello dall'alto, e premendo di nuovo ctrl-T torniamo alla visione in soggettiva sul terreno.

Comunque, la modalità migliore per sfruttare le potenzialità di visualizzazione di Enviro è con l'uso del joystick oppure, meglio, con lo SpaceNavigator. Queste modalità sono attivabili attraverso il pannello delle "Opzioni Globali", che vediamo nell'immagine seguente.

Lo SpaceNavigator permette di muoversi nello spazio con sei gradi di libertà, con una fluidità impressionante. Questo device è perfettamente integrato in VTP Enviro.
E' anche possibile visualizzare il territorio in stereoscopia, attraverso i classici occhiali rosso-verde, oppure in "quad-buffer" cioè con monitor che usano questa tecnologia insieme a occhiali polarizzati. Si può anche dividere lo schermo in due immagini, sinistra e destra, in verticale o in orizzontale. Insomma, c'è da sbizzarrirsi, per i maniaci della recente moda stereoscopica.

Inoltre, con Enviro si possono memorizzare punti di vista, per una visione successiva, e anche sequenze animate, utilizzando anche i fotogrammi chiave già memorizzati. Ciò è possibile con il pannello "Posizioni", che compare con il ctrl-L della tastiera

Il tutto viene memorizzato in file XML nella directory "Locations" del progetto Enviro.
E' possibile indicare, poi, quale posizione visualizzare all'inizio, tramite il tab "Camera" del pannello dei "Parametri di Creazione del Terreno", visto precedentemente.

A questo punto vi occorre solo un poco di pratica, per navigare al meglio con Enviro. Buon divertimento !




BobMaX

2011-08-03

VTP ( seconda parte ) - Creazione di un modello reale del terreno

Come promesso, passiamo ad utilizzare VTP per qualcosa di più utile di un terreno piatto.

Il programma VTBuilder permette di caricare "Dati di Elevazione" in vari formati, alcuni visibili dal menu Livello > Importa Dati > Elevazione, altri nascosti nelle funzionalità, ma che andremo a scovare ed illustrare successivamente.


Dunque, nella lista dei tipi di file importabili troviamo:

3TX
Arc Data Files ADF
ArcInfo ASCII grid ASC
ArcInfo BIL grid
CDF files CDF e GRD
DEM files
DXF
GTOPO30 HDR
HGT SRTM HGT
IMG files
Japanese DEM Files MEM
OSGB NTF Files
PGM Files
PNG
Raster RAW
SDTS Files CADT DDF
Surfer Binary Grids GRD
Terragen terrain TER
GeoTIFF
XYZ
File compressi TAR GZ TGZ ZIP

Insomma, sono previsti quasi tutti i tipi commerciali e non, disponibili in rete.

Quello che sceglieremo noi non è previsto nella lista, ma viene caricato ugualmente, tramite un altra voce del menu Livello: "Importa Dati Puntuali da Tabella", o come dice la versione inglese "Import Point Data from Table".

Prima, procuriamoci il Data Terrain Model dell'area che ci interessa, che come abbiamo visto nella precedente puntata, è la zona di Gaeta.

Un modello territoriale abbastanza dettagliato di Gaeta lo troviamo in rete, sul sito Opendem.info.

Possiamo scaricare un file CSV di Gaeta da questa pagina web di Opendem.info . Una volta scaricato il file ZIP, possiamo decomprimerlo in una nostra directory, possibilmente dedicata allo scopo.

In VTBuilder, carichiamo il file, tramite la funzione "Importa Dati da Tabella" e dopo aver selezionato il file CSV comparirà il pannello "Point Data Import", ove dovremo indicare quale è il campo Easting (cioè la X), quale il Northing (cioè la Y) e quale il campo Elevation (cioè la Z).
I campi sono numerati da zero a due e quindi zero è la X, uno la Y e 2 la Z.

A questo punto dovremo indicare anche il CRS, cioè il sistema di coordinate che stiamo usando; per fare questo premiamo il bottone "Set"


Si aprirà un altro pannello in cui andremo ad indicare, tramite "Set EPSG" il valore 3004, che indica coordinate generiche italiane fuso est.


Dopo premuto OK nei due pannelli, i punti verranno caricati in VTBuilder, nel sistema di coordinate originario.

A questo punto, andiamo a creare una superficie da questo insieme di punti, selezionando il menu Raw>Create Tin from Points, ovvero "Astratti>Crea Tin dai Punti" nella versione italiana di VTBuilder.



In questo modo viene creato un livello Elevazione, che possiamo salvare su disco e visualizzare con Enviro, in formato ITF.

Il formato nativo di Virtual Terrain è il "Binary Terrain", con estensione BT, che è presente in quasi tutti i software Gis, come QuantumGis, TatukGis, Global Mapper, gvSig.
Diversamente dal formato ITF, che è composto da una rete irregolare di triangoli (TIN), il formato BT è una griglia di punti distribuiti in maniera regolare.
Il formato BT è supportato dalla libreria Open Source GDAL/OGR, ed è auspicabile che anche il formato ITF venga supportato anch'esso al più presto dalla stessa libreria, in modo che possa essere utilizzato da tutti i software commerciali e gratuiti.

Recentemente è stata aggiunta la possibilità in VTP di calcolare, visualizzare in 3D e salvare in formato SHP le curve di livello di un BT, con una equidistanza verticale a scelta. Questa è una funzionalità molto utile per controllare il terreno creato e per eseguire stampe.






Nei prossimi post vedremo come muoverci sul modello del terreno con Enviro e come salvarlo in altri formati.


Alla prossima

BobMaX