GeoServer does not, indeed, support the LERC compression.
If you'd like to see support for this compression implemented, see
this guide:
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-fixes,-improvements-and-new-features-in-GeoServer
Cheers
Andrea
Cheers
Andrea
On Tue, Dec 20, 2022 at 12:58 PM Jeroen van Gent
<jeroen.vang...@aeronomie.be> wrote:
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
<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
--
Regards,
Andrea Aime
==GeoServer Professional Services from the experts!
Visit http://bit.ly/gs-services-us <http://bit.ly/gs-services-us>for
more information.==Ing. Andrea Aime @geowolfTechnical Lead
GeoSolutions Groupphone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
https://www.geosolutionsgroup.com/ <https://www.geosolutionsgroup.com/>
http://twitter.com/geosolutions_it <http://twitter.com/geosolutions_it>
-------------------------------------------------------
Con riferimento alla normativa sul trattamento dei dati personali
(Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati
“GDPR”), si precisa che ogni circostanza inerente alla presente email
(il suo contenuto, gli eventuali allegati, etc.) è un dato la cui
conoscenza è riservata al/i solo/i destinatario/i indicati dallo
scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a
cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato
se potesse darmene notizia.This email is intended only for the person
or entity to which it is addressed and may contain information that is
privileged, confidential or otherwise protected from disclosure. We
remind that - as provided by European Regulation 2016/679 “GDPR” -
copying, dissemination or use of this e-mail or the information herein
by anyone other than the intended recipient is prohibited. If you have
received this email by mistake, please notify us immediately by
telephone or e-mail