Suporte a MrSID para o QGIS 2.4 no Ubuntu 14.04

1

Estou tentando obter suporte ao MrSID no QGIS 2.4 no Ubuntu 14.04. De acordo com o este tutorial você tem que reconstruir a libgdal contra o MrSID SDK da LizardTech. Mas não consigo encontrar o pacote libgdal-mrsid-src como mencionado nas instruções. No entanto, parece que isso pode ter sido mesclado no pacote libgdal-dev. Quando eu tento instalar este pacote, me disseram que eu tenho que instalar o libmysqlclient-dev mas não posso instalar o libmysqlclient-dev desde que eu tenha o MariaDB 10 instalado.

A mensagem de erro completa é:

    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:   
     libmysqlclient-dev : Depends: libmysqlclient18 (= 5.5.38-0ubuntu0.14.04.1) but
 10.0.10+maria-1~saucy is to be installed
    E: Unable to correct problems, you have held broken packages

Então, aqui estão minhas duas perguntas originais:

  1. Estou correto sobre o pacote libgdal-mrsid-src sendo mesclado com o pacote libgdal-dev?

      

    Resposta: Sim, mas você precisa usar apt-get source libgdal-dev

  2. Se a resposta para 1 for sim, então como corrijo o conflito e ainda mantenho o MariaDB 10?

      

    Resposta: Isso parece ser mais um obstáculo, pois não tenho certeza se o libgdal-dev realmente precisa ser instalado. No entanto, se você executar apt-get install libgdal-dev libmariadbclient-dev , as dependências parecem ser atendidas.

Agora estou chegando ao ponto de não ter certeza dos meus passos. No diretório gdal-1.10.1 + dfsg que é criado a partir da instalação dos fontes, eu corro

./configure --with-gdal=/usr/bin/gdal-config \
            --with-mrsid=/path/to/MrSID_DSDK/Raster_DSDK \
            --with-mrsid_lidar=/path/to/MrSID_DSDK/Lidar_DSDK \
            --with-jp2mrsid=yes --with-geotiff=yes

make
make install

No entanto, isso cria o pacote gdal completo e o instala em / usr / local / bin em vez de / usr / bin (apt-get install location). Este pacote também não tem suporte a mysql (acho que a pergunta 2 pode não ser um arenque vermelho, afinal). Para não mencionar, não é minha intenção construir o pacote completo a partir da fonte.

A outra opção que eu tentei foi apenas compilar o plugin mrsid para o gdal. Parando as instruções acima após o comando configure, eu mudei para o diretório /gdal-1.10.1+dfsg/frmts/mrsid e executei make plugin libgdal-mrsid , o que gerou o seguinte erro:

/bin/bash /root/gdal-1.10.1+dfsg/libtool --mode=compile --tag=CXX g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME  -Wall  -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K  -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT  -I/root/gdal-1.10.1+dfsg/port   -c -o mrsiddataset.o mrsiddataset.cpp
libtool: compile:  g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsiddataset.cpp  -fPIC -DPIC -o .libs/mrsiddataset.o
mrsiddataset.cpp: In member function 'virtual CPLErr MrSIDRasterBand::IReadBlock(int, int, void*)':
mrsiddataset.cpp:552:64: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations]
     memcpy( pImage, poGDS->poBuffer->getTotalBandData(nBand - 1), 
                                                                ^
mrsiddataset.cpp: In member function 'virtual CPLErr MrSIDDataset::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, int, int*, int, int, int)':
mrsiddataset.cpp:979:68: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations]
                 oLTIBuffer.getTotalBandData( panBandMap[iBand] - 1 );
                                                                    ^
mrsiddataset.cpp:1017:47: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations]
                         panBandMap[iBand] - 1 );
                                               ^
libtool: compile:  g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsiddataset.cpp -o mrsiddataset.o >/dev/null 2>&1
/bin/bash /root/gdal-1.10.1+dfsg/libtool --mode=compile --tag=CXX g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME  -Wall  -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K  -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT  -I/root/gdal-1.10.1+dfsg/port   -c -o mrsidstream.o mrsidstream.cpp
libtool: compile:  g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsidstream.cpp  -fPIC -DPIC -o .libs/mrsidstream.o
libtool: compile:  g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsidstream.cpp -o mrsidstream.o >/dev/null 2>&1
mrsiddataset.o mrsidstream.o  -L/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/3rd-party/lib -L/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/lib -lltidsdk -lpthread  -o gdal_MrSID.so
/bin/bash: mrsiddataset.o: command not found
make: *** [gdal_MrSID.so] Error 127

Estou prestes a desistir de adicionar suporte ao MrSID, mas não posso deixar de sentir que estou perto e preciso apenas dar um pequeno passo aqui ou ali.

    
por RRYontz 17.08.2014 / 06:32

1 resposta

1

Eu acredito que você esteja muito perto. A última linha de sua saída precisa do comando para criar a biblioteca de compartilhamento:

g++ -shared seguido pelo resto da última linha deve criar seu arquivo gdal_MrSID.so.

    
por Bill Bishop 24.09.2014 / 01:20