Compressione lossless per geotiff CTR

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Compressione lossless per geotiff CTR

Annalisa
Buongiorno lista,
volevo comprimere il tiff della CTR (1 banda, scala di grigi) con un algoritmo lossless, diciamo l'analogo del LZ77 di arcGIS.
Ho provato ad usare lo strumento "conversione formati" del menù raster di QGIS con l'opzione di creazione "COMPRESS=DEFALTE" lasciando gli altri parametri che propone di default.
Da 3,27 Gb sono passata a 634 Mb ma il risultato a piccole scale è abbastanza peggiore del precedente. Non so se dipende dalle piramidi create con QGIS di questo rispetto a quelle preesistenti fatte con l'ArcGIS. Inoltre (soprattutto) mi sorprende che facendo l'identify del valore della cella, dia risultati parecchio diversi tra le 2 immagini. Non dovrebbero essere coincidenti??? Perché cambia il pixel? Qualcuno mi può suggerire una compressione che non cambi i valori, anche se comprime meno?

Grazie mille
Annalisa
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Sieradz
Una CTR andrebbe compressa in monocromatico col potente CCITT, magari dopo conversione con un algoritmo 'dithering' tipo Floyd-Steinberg che simula i toni di grigio.

Se tuttavia (per forza) vuoi restare a 8 bit... ti consiglio senza alcun dubbio il collaudato compressore LZW:

gdal_translate -co compress=lzw ....
gdalwarp -co compress=lzw ....
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Annalisa
Non ho idea di come fare per applicare la prima soluzione :-)

Ho provato la compressione LZW e poi, tanto per provare, ho fatto fare le piramidi ad ArcMap invece che a QGIS. Risultato: la visualizzazione a piccole scale è più piacevole (non so perché).
In ogni caso mi preoccupa che interrogando i raster si ottengano sempre valori diversi ... a mio parere dovrebbe lasciare lo stesso valore
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

pcav
Il 16/03/2015 15:33, Annalisa ha scritto:

> Ho provato la compressione LZW e poi, tanto per provare, ho fatto fare le
> piramidi ad ArcMap invece che a QGIS. Risultato: la visualizzazione a
> piccole scale è più piacevole (non so perché).

perche' interpola; puoi usare la stessa opzione in qgis.

> In ogni caso mi preoccupa che interrogando i raster si ottengano sempre
> valori diversi ... a mio parere dovrebbe lasciare lo stesso valore

in effetti, l'interrogazione dovrebbe restituire il valore del raster
base, non delle piramidi.
se confermato, e' bene aprire un ticket.

saluti.
--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html
_______________________________________________
[hidden email]
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 hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Sieradz
In reply to this post by Annalisa
Annalisa wrote
a mio parere dovrebbe lasciare lo stesso valore


Potresti gentilmente elaborare il concetto, magari con una schermata, in modo che noi si possa riprodurre il tuo scenario?

P.S.
Per convertire un Geotiff da 8 bit a 1 (premessa indispensabile per la compressione CCITT) puoi usare Gimp, ovviamente dopo aver salvato il worldfile...
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Annalisa


Questa è l'interrogazione su QGIS del pixel più chiaro nella macchia a sinistra. CTR_SPEDITIVO, il raster originale, restituisce il valore 182, ctr_compress2, compresso con GDAL di QGIS, con l'opzione compress=LZW e nessun altro parametro, restituisce 168.
Anche a zoom più consoni (1:25.000) accade la stessa cosa.

Questo il comando dato per creare ctr_compress2:
gdal_translate -co COMPRESS=JPEG -co JPEG_QUALITY=75 -of GTiff F:/Dati_Raster/CTR_SPEDITIVO/CTR_SPEDITIVO.tif F:/Dati_Raster/CTR_SPEDITIVO/ctr_compress2.tif

Quindi per convertire il geotiff da 8 a 1 bit devo usare un software di grafica come Gimp,ok, buono a sapersi. A me però non interessa comprimere molto, ma il possibile senza cambiare il raster, perché voglio metterlo in download su geoserver.

@Paolo quando ho creato le piramidi era settato "Formato panoramica: esterno" e "Metodo di ricampionamento: Vicino più prossimo", che è l'analogo, credo, su ArcMap di "Nearest Neighbor". Probabile che ogni algoritmo lavori a suo modo ... ma le piramidi di ArcMap sono "viste" da QGIS, il contrario invece no, giusto?
Meglio mettere il raster come WMS con o senza piramidi?

Uso QGIS 2.6.0 su windows 7 (abbiate pazienza :-) ).
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Annalisa
Cavolo, mi sono accorta solo rileggendo il mio post che QGIS mi prendeva JPEG invece di LZW!!!!

Scusate, non schiacciavo sulla matita alla fine, ecco spiegato l'arcano!
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Sieradz
In reply to this post by Annalisa
Annalisa wrote
voglio metterlo in download su geoserver


...a maggior ragione devi comprimere i dati, cercando il miglior compromesso dimensione/qualità :)
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

a.furieri
In reply to this post by Annalisa
On Tue, 17 Mar 2015 02:37:30 -0700 (MST), Annalisa wrote:
> ... il raster originale, restituisce il valore 182,
> ... con l'opzione compress=LZW e nessun altro parametro, restituisce
> 168.
>

Annalisa,

stai sostendo un'assuridita' concettualmente impossibile.
per definizione nessuna compressione lossless (LZW, DEFLATE, LZMA etc)
puo' mai riuscire a cambiare i valori dei pixel, a meno di immaginare
bug grossi come elefanti nelle librerie di supporto (cosa decisamente
molto improbabile).

> Questo il comando dato per creare ctr_compress2:
> gdal_translate -co COMPRESS=JPEG -co JPEG_QUALITY=75 -of GTiff
>

infatti, hai esattamente sotto agli occhi la causa di tutti
i tuoi problemi. durante questo passaggio stai introducendo
una compressione JPEG che e' di tipo lossy; questa si che ti
modifichera' inesorabilmente tutti i valori dei tuoi pixels
in modo assolutamente irreversibile.

morale: quando applichi una catena di piu' trasformazioni devi
sempre meticolosamente verificare di usare solo compressioni
lossless in tutti i passaggi. se usi una compressione lossy
anche in un singolo passaggio hai gia' rovinato tutto.

ciao Sandro
_______________________________________________
[hidden email]
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 hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Reply | Threaded
Open this post in threaded view
|

Re: Compressione lossless per geotiff CTR

Annalisa
Si si Sandro, mi sono accorta dell'errore solo dopo aver inviato la mail!  :-)
Mi pareva impossibile, infatti, o non erano lossless ...
Solo che ho usato QGIS per comprimere, non essendo pratica dei parametri di gdal, almeno ti guida un pò; ma alla fine non prendeva l'ultima opzione data ma la prima, finché non premo la matita!
Per fortuna ho rifatto il comando per copiarlo a voi e mi sono accorta solo dopo della differenza tra il testo sotto e i parametri immessi sopra ...
Adesso però provo anche il DEFLATE, perché questa appare come opzione standard ... mi confermate che anche questa è lossless, vero???

Grazie e scusate ancora l'errore
Annalisa