Pagina 1 di 1

QGIS: pacchetto SlackBuild che abilita ECW su slack 14.1

Inviato: mer 16 lug 2014, 18:35
da gian_d
Ciao a tutti, questo è il mio primo messaggio sul forum di slacky.eu

Non so quanti si occupino di GIS e siano interessati alla questione. Fino a pochi mesi fa usavo una Slackware 13.1 a 32 bit e da QGIS avevo accesso ai raster in formato proprietario ECW. Probabilmente (non ricordo) avevo installato vecchie versioni di QGIS e librerie quando ancora non c'erano problemi per l'accesso a questo formato. Poi, causa decesso della CPU ho dovuto fare l'upgrade di tutto, passando alla 64. E qui sono iniziati i problemi. Per parecchi giorni mi sono sbattuto per cercare di abilitare il formato ECW senza venirne a capo: il problema è che le nuove versioni delle librerie che gestiscono l'ECW sono rilasciate senza sorgenti e la ricompilazione di GDAL non trova queste librerie. So che il problema capita su diverse distro, sul Web ci sono diverse richieste e tutorial relativi alla difficoltà di accedere a questo formato, ma i tutorial sono rivolti ad utenti Ubuntu. Sta di fatto che anche su Ubuntu non sono comunque riuscito ad abilitare questo formato.

Alla fine sono riuscito a venirne a capo usando una vecchia libreria del 2006 di cui sono pubblici i sorgenti ed è possibile perciò ricompilarla applicando alcune patch. Deve essere fatto tutto prima dell'installazione di GDAL. Se avete perciò GDAL già installato e non supporta l'ECW, disinstallatelo. Per l'occorrenza ho allestito uno slackbuild per la costruzione di un pacchetto .tgz. Sulla Slack 14.1-64bit funziona egregiamente, non so per altre versioni. Non posso mettere a disposizione direttamente il pacchetto da installare perché credo che non sia consentito dalle licenze dell'attuale proprietario: ciascuno si deve installare o ricompilare per conto suo.

Lo slackbuild può essere scaricato da qui: http://www.giand.it/dowload/libecwj2.tar.gz. Contiene lo script slackbuild e le patch, mentre la libreria libecwj2-3,3 release 2009-09-06 dovrà essere scaricata separatamente da uno dei vari mirror. Attenzione, deve essere scaricato un archivio con questa denominazione libecwj2-3.3-2009-09-06.zip

La procedura in parole povere:
1) scaricare lo slackbuild e scompattarlo
2) googlare e scaricare un archivio zip dei sorgenti della libreria libecwj2-3.3-2009-09-06 (l'archivio deve essere salvato nella directory contenente lo script dello slackbuild
3) lanciare lo slackbuild e al termine installare il pacchetto (sarà creato nella directory /tmp
4) scaricare da slackbuilds.org lo SlackBuild per l'installazione di GDAL 1.11.0
5) modificare lo script gdal.SlackBuild aggiungendo l'argomento --with-ecw=/usr/local al comando ./configure
7) lanciare lo slackbuild

Comunque ho preparato una guida più logorroica e dettagliata qui: http://www.giand.it/tic/linux/Abilitare ... ackware_64
Chiedo scusa per lo spam, mi auguro che sia di utilità per qualcuno

Re: QGIS: pacchetto SlackBuild che abilita ECW su slack 14.1

Inviato: mer 16 lug 2014, 19:05
da ilmich
Ciao e benvenuto :)
Per quanto riguarda l'argomento del topic da un lato sono piu' propenso alle soluzioni open.. dall'altro mi ha incuriosito il problema che hai dovuto affrontare e leggendo l'errore che hai dettagliato nell'articolo + il fatto che hai specificato che stai usando una sistema a 64bit mi viene da chiederti.. ma l'sdk di cui parli potrebbe essere un binario compilato a 32bit?!?!
In questo caso l'errore ci potrebbe anche stare.. su una slackware stock a 64bit col compilatore a 64bit linkare una libreria a 32bit non credo si possa fare (quando ti dice che non trova la libreria in realtà potrebbe essere ben altro l'errore dato che di solito il configure prova a compilare un semplice programma per verificare se una determinata libreria sia usabile o meno.. come controprova dovresti guardare dentro il configure.log e vedere meglio l'errore)

Ciau

Re: QGIS: pacchetto SlackBuild che abilita ECW su slack 14.1

Inviato: mer 16 lug 2014, 21:33
da gian_d
Anch'io penso che possa trattarsi di un binario compilato a 32bit, d'altra parte i file generati dal binario di installazione dell'ECW SDK sono in duplice versione, per sistemi a 64 e 32 bit. Non so che dire, tutto il resto è fuori dalla mia portata. Anche la lettura del config.log, in gran parte per me è arabo.

Ho riprovato con l'ECW SDK 5.1 ma non c'è stato verso, compare lo stesso errore sia spostando le librerie in /usr/local/lib64 sia in /usr/local/lib

Dalla lettura del config.log non deduco nulla, ma in gran parte per me è arabo. A parte questo:

Codice: Seleziona tutto

configure:22147: result: no
configure:22147: checking for openjpeg-2.0/openjpeg.h
configure:22147: result: no
configure:22287: checking for FileGDBAPI
configure:22304: result: FileGDBAPI not found.
configure:22480: checking for libNCSEcw.so or libecwj2
configure:22520: error: not found in /usr/local/lib or /usr/local/bin.
Comunque se qualcuno volesse capirci qualcosa il config.log completo può essere letto qui: http://www.giand.it/trash/config_log.txt (sono 3 mila righe...)

Una curiosità (ma probabilmente è normale): nei precedenti tentativi avevo provato sia con l'argomento --with-ecw=/usr/local, sia con l'argomento --with-ecw. Nel primo caso la compilazione si arresta durante il ./configure, nel secondo caso prosegue fino alla generazione del pacchetto slackware. Probabilmente l'errore viene ignorato durante la compilazione.

Un'ultima cosa: anch'io sono orientato ormai da 10 anni ai formati open, ma il caso del formato ECW è particolare. E' un potente algoritmo di compressione che permette di ridurre in modo impressionante il peso dei file riducendo al minimo la qualità. A me serve per lo più per consultare la cartografia IGM della mia regione ad elevati zoom usando un file ECW del peso di soli 1.8 GB. Se dovessi usare dei raster TIFF o bitmap con lo stesso ingrandimento credo che mi servirebbero decine di GB se non centinaia di spazio nei miei hardisk peraltro con carte frazionate in decine di file. Un altro problema è che proprio per lo stesso motivo diversi servizi GIS on line sfruttano questo formato proprio perché adatto per server e bande senza pretese.