[Gfoss] consiglio gestione ortofoto / prestazioni

Ciao a tutti,

mi presento, sono un ingegnere di milano, sto realizzando un webgis per un cliente e avrei un consiglio da chiedere sulla gestione delle ortofoto e relativi (potenziali) problemi di performance,

Intanto qualche informazione di background:
Il frontend del webgis è basato su openlayers, mentre per il mapserver sono ancora indeciso tra geoserver e mapserver. Il sistema in cui fare girare il tutto è ubuntu 10.04 LTS. I dati geografici sono quasi tutti vettoriali, si tratta tendenzialmente di elementi lineari e puntuali (più qualche elemento poligonale, ma ben pochi). Visto che non si tratta di una gran mole di dati (qualche centinaia di elementi, giusto per dare un ordine di grandezza) non sono eccessivamente preoccupato sui problemi di performance relativamente a questi dati. In altri progetti che ho realizzato, con dati simili, riesco a far girare il tutto con un hardware piuttosto modesto (VM con quad-core, 512 Mb di Ram e 16G hdd).

Inizialmente l’idea era quella di utilizzare le ortofoto di google, che avrebbero permesso, tra le altre cose, di evitare di dover gestire tutte le immagini delle foto aeree.
Purtroppo ci siamo accorti che nel territorio di interesse ci sono delle aree in cui la qualità delle ortofoto è abbastanza scadente per cui stiamo valutando l’ipotesi di acquistare delle ortofoto.

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).
Si tratta quindi di circa 15 GB di ortofoto da gestire, per cui volevo chiedere qualche consiglio a qualcuno che si è gia trovato nella stessa situazione.

  1. conviene usare qualche altro formato o è meglio stare sul geotiff?

  2. mapserver/geoserver + tilecache sarebbe comunque una soluzione efficace oppure conviene spostarsi su soluzioni commerciali tipo Erdas IWS, in modo da poter utilizzare il formato ECW?

  3. ridurre la risoluzione delle ortofoto in modo da degradarle e ridurne anche la dimensione secondo voi è una strada percorribile?

Ho letto qualcosa sul plugin imagemosaic per goeserver, qualcuno l’ha usato? E’ una soluzione valida?

Qualsiasi consiglio è ben accetto, l’architettura del sistema non è fissa ma si possono integrare/sostituire componenti se possono dare buoni risultati…

PS: ovviamente non pretendo di far girare il tutto sull’hardware di cui sopra :slight_smile:

Scusate se sono stato un po’ prolisso…

grazie a tutti,

andrea

On Wed, Oct 06, 2010 at 11:33:02AM +0200, Andrea Pogliaghi wrote:

1) conviene usare qualche altro formato o è meglio stare sul geotiff?

2) mapserver/geoserver + tilecache sarebbe comunque una soluzione efficace
oppure conviene spostarsi su soluzioni commerciali tipo Erdas IWS, in modo
da poter utilizzare il formato ECW?

3) ridurre la risoluzione delle ortofoto in modo da degradarle e ridurne
anche la dimensione secondo voi è una strada percorribile?

Visto che lo spazio disco non è oggigiorno un problema, stai
tranquillamente con geotiff.

Eventuali problemi di performance li risolvi creando le opportune
overview (piramidi) per i tuoi geotiff, in modo che la libreria
gdal non debba leggere troppi bytes per scalare le immagini a
zoom minore.

Usando OpenLayers hai il vantaggio di poter mettere tilecache
come ulteriore livello di caching, sempre che la generazione
delle tile al volo sia troppo onerosa (se hai molti utenti che
consultano il sito).

Tra MapServer e GeoServer scelgo il primo per il fastidio che mi
crea l'architettura Java/Tomcat.

--
Niccolo Rigacci
Firenze - Italy

Ciao a tutti,

grazie per il consiglio…

anch’io pensavo di usare overview e inner tiles ma quando i file sono molto grandi (nel mio caso avrei 30 file da 500 Mb ciascuno allo zoom minore!) questi accorgimenti non sono più sufficienti perchè l’estrazione delle overview “intermedie” sarebbe comunque troppo oneroso. In particolare “geoserver” consiglia l’uso di un plugin per piramidizzare i files e creare un mosaico di tiles per ogni overview [1].

Ho provato a fare qualche prova con delle CTR… ho creato un unico file da 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…

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

Se qualcuno ha esperienze in proposito, ogni consiglio è ben accetto…

ciao
andrea

2010/10/6 Niccolo Rigacci <niccolo@rigacci.org>

On Wed, Oct 06, 2010 at 11:33:02AM +0200, Andrea Pogliaghi wrote:

  1. conviene usare qualche altro formato o č meglio stare sul geotiff?

  2. mapserver/geoserver + tilecache sarebbe comunque una soluzione efficace
    oppure conviene spostarsi su soluzioni commerciali tipo Erdas IWS, in modo
    da poter utilizzare il formato ECW?

  3. ridurre la risoluzione delle ortofoto in modo da degradarle e ridurne

anche la dimensione secondo voi č una strada percorribile?

Visto che lo spazio disco non č oggigiorno un problema, stai
tranquillamente con geotiff.

Eventuali problemi di performance li risolvi creando le opportune
overview (piramidi) per i tuoi geotiff, in modo che la libreria
gdal non debba leggere troppi bytes per scalare le immagini a
zoom minore.

Usando OpenLayers hai il vantaggio di poter mettere tilecache
come ulteriore livello di caching, sempre che la generazione
delle tile al volo sia troppo onerosa (se hai molti utenti che
consultano il sito).

Tra MapServer e GeoServer scelgo il primo per il fastidio che mi
crea l’architettura Java/Tomcat.


Niccolo Rigacci
Firenze - Italy

Il 06 ottobre 2010 11:46, Niccolo Rigacci <niccolo@rigacci.org> ha scritto:

Eventuali problemi di performance li risolvi creando le opportune
overview (piramidi) per i tuoi geotiff, in modo che la libreria
gdal non debba leggere troppi bytes per scalare le immagini a
zoom minore.

confermo...molto utili le piramidi

Usando OpenLayers hai il vantaggio di poter mettere tilecache
come ulteriore livello di caching, sempre che la generazione
delle tile al volo sia troppo onerosa (se hai molti utenti che
consultano il sito).

beh non può tenerle in cache? tanto sono fotoaeree e non cambiano
(come dicevi sopra la spazio disco non è un problema :wink: )

Tra MapServer e GeoServer scelgo il primo per il fastidio che mi
crea l'architettura Java/Tomcat.

+1

--
Niccolo Rigacci
Firenze - Italy

ciao
Luca

2010/10/6 Luca Delucchi <lucadeluge@gmail.com>

Il 06 ottobre 2010 11:46, Niccolo Rigacci <niccolo@rigacci.org> ha scritto:

Eventuali problemi di performance li risolvi creando le opportune
overview (piramidi) per i tuoi geotiff, in modo che la libreria
gdal non debba leggere troppi bytes per scalare le immagini a
zoom minore.

confermo…molto utili le piramidi

Usando OpenLayers hai il vantaggio di poter mettere tilecache
come ulteriore livello di caching, sempre che la generazione
delle tile al volo sia troppo onerosa (se hai molti utenti che
consultano il sito).

beh non può tenerle in cache? tanto sono fotoaeree e non cambiano
(come dicevi sopra la spazio disco non è un problema :wink: )

si certamente una volta che le immagini sono generate le tengo in cache! La considerazione era che visto che il territorio è molto esteso e vorremmo abilitare il livello a tutt gli zoom, vedo difficile precalcolare tutte le tiles ad ogni livello di zoom (ho fatto delle prove con tilecache_seed.py ma impiega troppo tempo)…

Tra MapServer e GeoServer scelgo il primo per il fastidio che mi
crea l’architettura Java/Tomcat.

+1


Niccolo Rigacci
Firenze - Italy

ciao
Luca

grazie a tutti
andrea

beh non può tenerle in cache? tanto sono fotoaeree e non cambiano
(come dicevi sopra la spazio disco non è un problema :wink: )

si certamente una volta che le immagini sono generate le tengo in cache! La
considerazione era che visto che il territorio è molto esteso e vorremmo
abilitare il livello a tutt gli zoom, vedo difficile precalcolare tutte le
tiles ad ogni livello di zoom (ho fatto delle prove con tilecache_seed.py
ma impiega troppo tempo)...

io ho addottato la strategia di generare la cache delle tile solo per
gli zoom più bassi (cioè quelli che riguardano una parte estesa di
territorio), in quanto questi sono quelli che riguardano un maggior
numero di file originali. Per gli zoom più bassi le tile vengono
generare "on demand".

Così facendo si ha una buona navigazione a tutti i livelli di zoom.

Ciao,

Stefano