Dear all,

I am serving a set of Geotiff raster files as single-file stores in GeoServer and so far everything went fine with GeoTiff files compressed with the DEFLATE or ZSTD algorithms.

This week I have been testing LERC compression (with different values for the gdal MAX_Z_ERROR option) and when serving those in GeoServer any WMS request results in a NullPointer Exception message instead of the requested PNG tile.

Does GeoServer not read LERC-compressed files? Or is the cause somewhere else?

I can open the LERC-compressed GeoTiff files just fine in QQIS.

Details:

GeoServer version: 2.20.2

WMS request:

https://my.geoserver.be/geoserver/SACS/wms?&service=WMS&request=GetMap&layers=SACS%3As5p_tropomi_psg4326_20221206_res0p02_compLERC&styles=&format=image%2Fpng&transparent=true&version=1.1.1&interpolations=nearest%20neighbor&width=256&height=256&srs=EPSG%3A3857&bbox=-15028131.257091936,5009377.085697314,-10018754.171394622,10018754.171394628


GeoServer Log (VERBOSE_LOGGING level):

Request: getMap
    Angle = 0.0
    BaseUrl = https://geoserver-dev.aeronomie.be/geoserver/
    Bbox = SRSEnvelope[-1.5028131257091936E7 : -1.0018754171394622E7, 5009377.085697314 : 1.0018754171394628E7]
    BgColor = java.awt.Color[r=255,g=255,b=255]
    Buffer = 0
    Clip = null
    CQLFilter = null
    Crs = PROJCS["WGS 84 / Pseudo-Mercator",
  GEOGCS["WGS 84",
    DATUM["World Geodetic System 1984",
      SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]],
      AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
    UNIT["degree", 0.017453292519943295],
    AXIS["Geodetic longitude", EAST],
    AXIS["Geodetic latitude", NORTH],
    AUTHORITY["EPSG","4326"]],
  PROJECTION["Popular Visualisation Pseudo Mercator", AUTHORITY["EPSG","1024"]],
  PARAMETER["semi_minor", 6378137.0],
  PARAMETER["latitude_of_origin", 0.0],
  PARAMETER["central_meridian", 0.0],
  PARAMETER["scale_factor", 1.0],
  PARAMETER["false_easting", 0.0],
  PARAMETER["false_northing", 0.0],
  UNIT["m", 1.0],
  AXIS["Easting", EAST],
  AXIS["Northing", NORTH],
  AUTHORITY["EPSG","3857"]]
    Elevation = []
    Env = {}
    Exceptions = SE_XML
    FeatureId = null
    FeatureVersion = null
    Filter = null
    Format = image/png
    FormatOptions = {}
    Get = true
    Height = 256
    Interpolations = [javax.media.jai.InterpolationNearest@4620bf84]
    Layers = [org.geoserver.wms.MapLayerInfo@81053a8a]
    MaxFeatures = null
    Palette = null
    RawKvp = {REQUEST=GetMap, FORMAT=image/png, SRS=EPSG:3857, BBOX=-15028131.257091936,5009377.085697314,-10018754.171394622,10018754.171394628, VERSION=1.1.1, STYLES=, SERVICE=WMS, INTERPOLATIONS=nearest neighbor, WIDTH=256, HEIGHT=256, TRANSPARENT=true, LAYERS=SACS:s5p_tropomi_psg4326_20221206_res0p02_compLERC}
    RemoteOwsType = null
    RemoteOwsURL = null
    Request = GetMap
    RequestCharset = UTF-8
    ScaleMethod = null
    Sld = null
    SldBody = null
    SldVersion = null
    SortBy = null
    SortByArrays = null
    SRS = EPSG:3857
    StartIndex = null
    StyleBody = null
    StyleFormat = sld
    Styles = [StyleImpl[ name=so2vcd]]
    StyleUrl = null
    StyleVersion = null
    Tiled = false
    TilesOrigin = null
    Time = []
    Transparent = true
    ValidateSchema = false
    Version = 1.1.1
    ViewParams = null
    Width = 256
2022-12-20 12:00:46,225 DEBUG [wms.map] - Writing png image ...
2022-12-20 12:00:46,225 DEBUG [config.impl] - Could not locate service of type interface org.geoserver.wms.WMSInfo in workspace WorkspaceInfoImpl[SACS], available services were [WMSInfoImpl[WMS], WFSInfoImpl[WFS], WCSInfoImpl[WCS], WMTSInfoImpl[WMTS]] 2022-12-20 12:00:46,268 INFO [geoserver.servlets] - OutputStream was successfully aborted.
2022-12-20 12:00:46,268 ERROR [geoserver.ows] -
java.lang.NullPointerException
2022-12-20 12:00:46,269 DEBUG [geoserver.filters] - Compressing output for mimetype: application/vnd.ogc.se_xml;charset=UTF-8 2022-12-20 12:00:46,270 DEBUG [filter.GeoServerSecurityContextPersistenceFilter$1] - SecurityContextHolder now cleared, as request processing completed 2022-12-20 12:01:07,257 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /web/wicket/bookmarkable/org.geoserver.web.admin.logpage, QueryString: 34-1.IFormSubmitListener-form&lines=1000'; against '/web/**' 2022-12-20 12:01:07,257 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Matched Path: /web/wicket/bookmarkable/org.geoserver.web.admin.logpage, QueryString: 34-1.IFormSubmitListener-form&lines=1000 with /web/** 2022-12-20 12:01:07,260 DEBUG [org.geoserver] - Thread 80 locking in mode READ 2022-12-20 12:01:07,260 DEBUG [org.geoserver] - Thread 80 got the lock in mode READ 2022-12-20 12:01:07,261 DEBUG [org.geoserver] - Thread 80 locking in mode READ 2022-12-20 12:01:07,261 DEBUG [org.geoserver] - Thread 80 releasing the lock in mode READ 2022-12-20 12:01:07,264 DEBUG [filter.GeoServerSecurityContextPersistenceFilter$1] - SecurityContextHolder now cleared, as request processing completed 2022-12-20 12:01:07,269 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /web/wicket/bookmarkable/org.geoserver.web.admin.logpage, QueryString: lines=1000'; against '/web/**' 2022-12-20 12:01:07,269 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Matched Path: /web/wicket/bookmarkable/org.geoserver.web.admin.logpage, QueryString: lines=1000 with /web/** 2022-12-20 12:01:07,273 DEBUG [org.geoserver] - Thread 6554 locking in mode READ 2022-12-20 12:01:07,273 DEBUG [org.geoserver] - Thread 6554 got the lock in mode READ


Output from gdalinfo on the LERC-compressed file:

Driver: GTiff/GeoTIFF
Files: testfiles/s5p_tropomi_psg4326_20221206_res0p02_compLERC.tif
Size is 18000, 8616
Coordinate System is:
GEOGCRS["WGS 84",
    DATUM["World Geodetic System 1984",
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4326]]
Data axis to CRS axis mapping: 2,1
Origin = (-180.000000000000000,82.340000000000018)
Pixel Size = (0.020000000000000,-0.020000000000000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LERC
  INTERLEAVE=BAND
  LAYOUT=COG
  LERC_VERSION=2.4
Corner Coordinates:
Upper Left  (-180.0000000,  82.3400000) (180d 0' 0.00"W, 82d20'24.00"N)
Lower Left  (-180.0000000, -89.9800000) (180d 0' 0.00"W, 89d58'48.00"S)
Upper Right ( 180.0000000,  82.3400000) (180d 0' 0.00"E, 82d20'24.00"N)
Lower Right ( 180.0000000, -89.9800000) (180d 0' 0.00"E, 89d58'48.00"S)
Center      (   0.0000000,  -3.8200000) (  0d 0' 0.00"E, 3d49'12.00"S)
Band 1 Block=256x256 Type=Float32, ColorInterp=Gray
  NoData Value=-9999
  Overviews: 9000x4308, 4500x2154, 2250x1077, 1125x539, 563x270, 282x135, 141x68 jeroenv@ada6: /scratch/jeroenv/sacstest/geotiff_compression/geotiff-benchmark> gdalinfo testfiles/s5p_tropomi_psg4326_20221206_res0p02_compLERC.tif
Driver: GTiff/GeoTIFF
Files: testfiles/s5p_tropomi_psg4326_20221206_res0p02_compLERC.tif
Size is 18000, 8616
Coordinate System is:
GEOGCRS["WGS 84",
    DATUM["World Geodetic System 1984",
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4326]]
Data axis to CRS axis mapping: 2,1
Origin = (-180.000000000000000,82.340000000000018)
Pixel Size = (0.020000000000000,-0.020000000000000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LERC
  INTERLEAVE=BAND
  LAYOUT=COG
  LERC_VERSION=2.4
Corner Coordinates:
Upper Left  (-180.0000000,  82.3400000) (180d 0' 0.00"W, 82d20'24.00"N)
Lower Left  (-180.0000000, -89.9800000) (180d 0' 0.00"W, 89d58'48.00"S)
Upper Right ( 180.0000000,  82.3400000) (180d 0' 0.00"E, 82d20'24.00"N)
Lower Right ( 180.0000000, -89.9800000) (180d 0' 0.00"E, 89d58'48.00"S)
Center      (   0.0000000,  -3.8200000) (  0d 0' 0.00"E, 3d49'12.00"S)
Band 1 Block=256x256 Type=Float32, ColorInterp=Gray
  NoData Value=-9999
  Overviews: 9000x4308, 4500x2154, 2250x1077, 1125x539, 563x270, 282x135, 141x68








_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to