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