Back in December 2009 Ing. Daniele Romagnoli and Ing. Simone Giannecchini have worked on bringing to supported status the raster plugin for serving JPEG2000 files via the well-known Kakadu SDK in GeoTools and GeoServer. A detailed description of the feature provided can be found
here.
The rationale behind this work was to be able to exploit directly the Kakadu SDK without having to pass through the GDAL Java wrappers in order to achieve higher performance and robustness as well as to gain finer control over the steps we were taking in order to load raster data from JPEG2000 files.
The plugin for GeoServer 2.0.1 and GeoTools 2.6.1 is known to work with Kakadu SDK 5.2.x as well as 6.3.x. It is available as an extension, therefore can be downloaded from
here (look for
Extensions then
Coverage Store then
JPEG2000). To install it, instructions are as follows:
Download the plugin zip file for the same version of GeoServer
Unzip the plugin zip file to obtain the jar files inside. Do not unzip the jar files
Place the jar files in the WEB-INF/lib directory of your GeoServer installation
Restart GeoServer to load the extension
It is important to remark that the native libraries for the Kakadu version of choice must be deployed in the PATH on windows and in the LD_LIBRARY_PATH on linux. As an instance on my Windows box I have added the bin directory of the JDK to the PATH environmental variable and I have deployed there three dlls for Kakadu 5.2.6, namely kdu_a52R.dll, kdu_jni.dll and kdu_v52R.dll
In order to check if the installation was successful you need to check the GeoServer logs at startups. If something like this appears:
18-feb-2010 17.11.15it.geosolutions.util.KakaduUtilities loadKakaduWARNING:Native library load failed.java.lang.UnsatisfiedLinkError: no kdu_jni in java.library.pathIt means that the Kakadu JPEG2000 extension was not installed correctly.
To give you an idea of the speed up we have obtained, I am reporting here the numbers of some testing we have performed on our test server, using the WMS performance shooting approach. Sample dataset was a mosaic of 4 JPEG2000 files (GeoJP2 actually) of around 200 MB each.
We have compared the latest GDAL extension for GeoServer based on a customized version of GDAL 1.4.5 with our plugin running on top of Kakadu 5.2.6 and 6.3. As far as GDAL is concerned, we have been using the MrSid SDK, the ECW SDK as well as both Kakadu versions reported above. Numbers are asfollows:
Requests served via GDAL Jp2Kakadu 5.2.6 | 6/min |
Jp2Kakadu 6.3 | 11/min |
Jp2Mrsid | 12/min |
Jp2Ecw | 35/min |
Requests served with no GDAL- using Kakadu directly Kakadu 5.2.6 | 120/min |
Kakadu 6.3 | 222/min |
These numbers are not scientifically measured, but we think they show some nice performance improvements.
What we need now is feedback from the community!