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