[Gfoss] consiglio gestione ortofoto / prestazioni

>Ci siamo informati per l'acquisto delle foto aeree... il problema che ci ha
>un po' spaventati riguarda la mole dei dati: la zona da coprire è suddivisa
>su circa 30 tavolette, ognuna delle quali occupa 500 Mb (geotiff).

E' la normalita'.
Le OFC a colori 1:10.000 a milioni di colori sono 400Mbyte l'una.

>Ho provato a fare qualche prova con delle CTR... ho creato un unico file da

Le CTR non sono OFC, intendi forse dei raster colorati ?

Se si' avrai altri problemi oltre i tempi di rasterizzazione.
Come gestisci la sovrapposizione dei bordi bianchi ?

>2,5 GB, aggiungendo anche overview e inner tiles con gdal ma purtroppo i
>risultati non sono incoraggianti....il tempo di generazione dell'immagine
>una volta richiesta da openlayers è elevato (ordine dei secondi). Utilizzare
>tilecache introduce senz'altro dei benefici ed è quasi un must, vorrei
>comunque cercare un modo per velocizzare la generazione delle tile (anche
>perchè precalcolarle tutte a tutti i livelli di zoom per un territorio cosi
>vasto è impensabile...)
>
>Il passo successivo adesso è quello di suddividere il file da 2,5Gb in 5
>file da 500Gb e vedere se il processo si velocizza...

Avere una mappa che per essere generata ci voglia 1 secondo e' una cosa che ci puo' stare benissimo.

Una cosa irrinunciabile e' impedire che siano usati "fuori dalla scala di impiego naturale"

Ovvero se usi una CTR 10K e' perfettamente inutile accenderla a scala piu' bassa di 1:15.000.
Coinvolgi troppi dati e alla fine non vedi niente.

Se accendi i dati alla scala di impiego , anche se come archivio complessivo sono molti gigabytes, nella produzione della mappa verra' coinvolto 

solamente la porzione interessata dal territorio richiesto, e di conseguenza la dimensione reale dei dati coinvolti si riduce significativamente.
Faccio un esempio.

Se prendi uno shapefile di isoipsse di una regione con dati da CTR10K,

avrai un archivio che e' grande anche 900 Mbytes.

Se lo fai accendere a scala 1:300.000 ci vuole piu' che qualche secondo per produrre l'immagine.
Ma se anche alla fine l'immagine venisse prodotto vedresti un grumo nero e nient'altro.

Il che e' ovvio. Le linee distano tra loro 5 metri, a scala 1:300.000 non vedi proprio lo stacco tra le linee tutto si mescola e non ci si capisce niente...

Allora e' inutile farlo accendere a 1:300.000.

Lo fai accendere a scala 1:20.000 e avrai la mappa in poco tempo e intelleggibile.

Nel caso dei raster per massimizzare il profitto di questa startegia dei tagliare in tanti immagini (tiles) e non accorparli.

Un unico file da 2GB viene sempre aperto nella sua interessa anche quando quandi un francobollo di territorio.
se pero' tagli in tanti file raster grandi come un fazzoletto. Aprirai solamente quelli di interesse.

L'overhead di gestione di piu' files che introduci e' poco rispetto al guadagno che avrai in termini prestazionali.

Saluti,

Andrea Peri
. . . . . . . . .
qwerty àèìòù

2010/10/6 Andrea Peri <aperi2007@gmail.com>

>Ci siamo informati per l'acquisto delle foto aeree... il problema che ci ha
>un po' spaventati riguarda la mole dei dati: la zona da coprire è suddivisa
>su circa 30 tavolette, ognuna delle quali occupa 500 Mb (geotiff).

E' la normalita'.
Le OFC a colori 1:10.000 a milioni di colori sono 400Mbyte l'una.

>Ho provato a fare qualche prova con delle CTR... ho creato un unico file da

Le CTR non sono OFC, intendi forse dei raster colorati ?

Se si' avrai altri problemi oltre i tempi di rasterizzazione.
Come gestisci la sovrapposizione dei bordi bianchi ?

No, ho usato una CTR in bianco e nero che avevo sul pc… l’avevo creata tempo fa (con uno script avevo scaricato una 30ina di tavolette dalla regione, importate in grass ed esportate dopo averle patchate insieme). Visto che il file finale (prima di applicare la riduzione dei bit e la compressione CCITTFAX4) era di 2,5 Gb a 256 colori (anche se di fatto solo 2 accesi) ho usato quello come prova preliminare.


>2,5 GB, aggiungendo anche overview e inner tiles con gdal ma purtroppo i
>risultati non sono incoraggianti....il tempo di generazione dell'immagine
>una volta richiesta da openlayers è elevato (ordine dei secondi). Utilizzare
>tilecache introduce senz'altro dei benefici ed è quasi un must, vorrei
>comunque cercare un modo per velocizzare la generazione delle tile (anche
>perchè precalcolarle tutte a tutti i livelli di zoom per un territorio cosi
>vasto è impensabile...)
>
>Il passo successivo adesso è quello di suddividere il file da 2,5Gb in 5
>file da 500Gb e vedere se il processo si velocizza...

Avere una mappa che per essere generata ci voglia 1 secondo e' una cosa che ci puo' stare benissimo.

Una cosa irrinunciabile e' impedire che siano usati "fuori dalla scala di impiego naturale"

Ovvero se usi una CTR 10K e' perfettamente inutile accenderla a scala piu' bassa di 1:15.000.
Coinvolgi troppi dati e alla fine non vedi niente.
 
Se accendi i dati alla scala di impiego , anche se come archivio complessivo sono molti gigabytes, nella produzione della mappa verra' coinvolto 

solamente la porzione interessata dal territorio richiesto, e di conseguenza la dimensione reale dei dati coinvolti si riduce significativamente.
Faccio un esempio.

Se prendi uno shapefile di isoipsse di una regione con dati da CTR10K,

avrai un archivio che e' grande anche 900 Mbytes.

Se lo fai accendere a scala 1:300.000 ci vuole piu' che qualche secondo per produrre l'immagine.
Ma se anche alla fine l'immagine venisse prodotto vedresti un grumo nero e nient'altro.

Il che e' ovvio. Le linee distano tra loro 5 metri, a scala 1:300.000 non vedi proprio lo stacco tra le linee tutto si mescola e non ci si capisce niente...

Allora e' inutile farlo accendere a 1:300.000.

Lo fai accendere a scala 1:20.000 e avrai la mappa in poco tempo e intelleggibile.

Nel caso dei raster per massimizzare il profitto di questa startegia dei tagliare in tanti immagini (tiles) e non accorparli.

Ok la strategia è quindi quella di avere più tiles e vincolare l’accesso ai dati alle sole scale di utilizzo…
Come tool per dividere in tiles va bene gdal_retile? Genera una struttura che si può usare con imagemosai. Sapete se per mapserver c’è qualcosa di analogo?

Un unico file da 2GB viene sempre aperto nella sua interessa anche quando quandi un francobollo di territorio.
se pero' tagli in tanti file raster grandi come un fazzoletto. Aprirai solamente quelli di interesse.

L'overhead di gestione di piu' files che introduci e' poco rispetto al guadagno che avrai in termini prestazionali.

nel caso in questione (ortofoto), le vorremmo comunque visualizzare anche al minimo livello di zoom (massima estensione del territorio) e non solo da una certa scala… in questo caso qualè potrebbe essere la strategia per evitare che si acceda e si scorrano tutti i 30 file da 500mb?

Se prendo ciascun file da 500 mb, creo overview a determinati livelli di zoom (gli stessi livelli li uso ovviamente per ognuno dei 30 files), poi divido ciascun file in n tiles (in modo che a zoom spinti accedo solo alle tile effettivamente richieste), cosa succede quando faccio uno zoom dall’alto o intermedio? L’accesso all’immagine dovrebbe avvenire sull’overview, giusto? Per cui anche con zoom dall’alto o intermedi dovrei avere risultati apprezzabili…?

Un altro approccio che mi viene in mente è quello di fare una copia a bassa risoluzione delle ortofoto e configurare mapserver/geoserver per per usare i file a bassa risoluzione per zoom dall’alto e quelli ad alta risoluzione per zoom più spinti…

cosa ne pensate?

grazie a tutti

andrea


Saluti,

Andrea Peri
. . . . . . . . .
qwerty àèìòù


Iscriviti all’associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell’Associazione GFOSS.it.
474 iscritti al 18.9.2010

mi sono accorto di aver risposto solo ad Andrea, inoltro il messaggio
in lista così qualcun'altro può commentare.

Ok la strategia è quindi quella di avere più tiles e vincolare l'accesso ai
dati alle sole scale di utilizzo...
Come tool per dividere in tiles va bene gdal_retile? Genera una struttura
che si può usare con imagemosai. Sapete se per mapserver c'è qualcosa di
analogo?

tieni presente che non occorre spezzare fisicamente il file geotiff ma
basta crearlo con l'opzione "TILED=YES", in questo modo la struttura
interna del tiff è molto più efficiente nel estrarre porzioni di dati.
Se a questo aggiungi la creazione delle overview (il tool gdaladdo in
modo abbastanza semplice) riesce ad avere una navigazione abbastanza
fluida.

Per riassumere quello che io fatto per mettere in piedi un geoserver
con le ortofoto dell'intera regione Friuli è stato:

- compressione JPEG dei tiff (i file restano tiff ma la compressione
usata internamente è jpeg)
- opzione di creazione dei tiff "TILED=YES"
- aggiunta ai tiff delle overview

in pratica tutto quello che trovi scritto qui [1].

Ultimo appunto: ImageMosaic è solo un plugin di geoserver che ti
agevola nella creazione di un layer composto da più immagini, di suo
però non fa nessuna ottimizzazione, devi lavorare comunque sui tiff di
origine. Per fare qualcosa di analogo in mapserver ti conviene aprire
tutte le immagini in un sw gis (tipo QGis) e poi esportare il mapfile
direttamente da lì (dovrebbe esserci un tool apposito), però non uso
mapserver e quindi è meglio se aspetti altre indicazioni.

[1] http://docs.geoserver.org/stable/en/user/production/data.html

Ciao,

Stefano