Installing QGIS with ECW support on ubuntu 20.04

ecwgdalqgisUbuntu

I know there are similar questions here, but I've tried every answer and every tutorial I could find, and I still can't open ECW with QGIS (and I kind of broke my qgis install? When I try to install QGIS I have dependancy errors for qgis-providers, qgis-plugin-grass and python-qgis now). I use Ubuntu 20.04 and QGIS 3.24.1.

I compiled GDAL with ECW support, which seems to work fine as
gdalinfo --formats | grep ECW gives

ECW -raster- (rw+): ERDAS Compressed Wavelets (SDK 5.4)
JP2ECW -raster,vector- (rw+v): ERDAS JPEG2000 (SDK 5.4)

But I don't know how to make QGIS use the version that I compiled. gdalinfo --version gives me GDAL 2.3.2, released 2018/09/21 but when I go to the QGIS details it says QGIS is using GDAL 3.0.4. I also tried one of the tutorials from a clean Ubuntu install (on a virtual box) and it still didn't work. I don't know what I'm doing wrong but I'm not really used to dealing with these kinds of things so potentially I am doing some things wrong. I also read somewhere that I should try to compile QGIS with my GDAL install but I have no idea how to do that.

Best Answer

Compiling GDAL using proprietary library to support ECW file format - Ubuntu

QGIS uses GDAL for file formats.

1. UPDATE -
  • Download zip file from here for 5.4.0
  • Downlaod the latest version from hexagon site
unzip ERDAS_ECWJP2_SDK-5.4.0.bin.zip
chmod +x ./ERDAS_ECWJP2_SDK-5.4.0.bin
2. Run bin - Choose Option 1. Desktop_Read-Only

./ERDAS_ECWJP2_SDK-5.4.0.bin

3. Copy installed files to /usr/local/hexagon_ecw
sudo mkdir -p /usr/local/hexagon_ecw
sudo cp -r hexagon/ERDAS-ECW_JPEG_2000_SDK-5.4.0/Desktop_Read-Only/* /usr/local/hexagon_ecw
4. Make symbolic link to libs like libNCSEcw.so.**
sudo ln -s /usr/local/hexagon_ecw/lib/x64/release/* /usr/local/lib/
5. Download and install proper PROJ version

Get PROJ version from Help->About Mine is 6.3.1

Download from https://github.com/OSGeo/PROJ/releases.

tar -xvf proj-6.3.1.tar.gz
cd proj-6.3.1
mkdir build 
cd build
cmake .. # had to install libsqlite3-dev dependency
make -j$(nproc)
sudo make install
6. Downlad GDAL for specific QGIS version

Get GDAL version from Help->About QGIS 3.26.3 uses gdal 3.0.4

Download from http://download.osgeo.org/gdal

tar -xvzf gdal-3.0.4.tar.gz
cd gdal-3.0.4
./configure --with-ecw=/usr/local/hexagon_ecw
make -j$(nproc) # Compile takes a lot of time... 
sudo make install

If you get errors on make above, use this bellow before the make command above (from here)

export LD_LIBRARY_PATH=//usr/local/hexagon_ecw/lib/cpp11abi/x64/release:$LD_LIBRARY_PATH
7. Set env. variables
echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.profile
echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.bashrc
GDAL_DATA="/usr/local/share/gdal"
ldconfig
8. Check if ECW is installed

gdalinfo --formats | grep ECW

Based and updated from here.

Tested on Ubuntu 22.04 and 20.04