I deployed a GeoServer instance to serve layers from multitemporal netCDF mainly. I have always used WMS GetMap requests with the TIME parameter to specify the time layer to show. Now they require me to switch to WMTS but I realized the TIME in GetTile requests is not working. Is it possible to use the TIME parameter in WMTS in GeoServer?
I installed the plugin Multidimensional WMTS and in the WMTS GetCapabilities I see the time dimension:
<Dimension>
<ows:Identifier>time</ows:Identifier>
<Default>current</Default>
<Value>2022-10-13T03:00:00.000Z</Value>
<Value>2022-10-13T06:00:00.000Z</Value>
<Value>2022-10-13T09:00:00.000Z</Value>
<Value>2022-10-13T12:00:00.000Z</Value>
<Value>2022-10-13T15:00:00.000Z</Value>
<Value>2022-10-13T18:00:00.000Z</Value>
<Value>2022-10-13T21:00:00.000Z</Value>
<Value>2022-10-14T00:00:00.000Z</Value>
<Value>2022-10-14T03:00:00.000Z</Value>
<Value>2022-10-14T06:00:00.000Z</Value>
<Value>2022-10-14T09:00:00.000Z</Value>
<Value>2022-10-14T12:00:00.000Z</Value>
<Value>2022-10-14T15:00:00.000Z</Value>
<Value>2022-10-14T18:00:00.000Z</Value>
<Value>2022-10-14T21:00:00.000Z</Value>
<Value>2022-10-15T00:00:00.000Z</Value>
<Value>2022-10-15T03:00:00.000Z</Value>
<Value>2022-10-15T06:00:00.000Z</Value>
</Dimension>
EDIT: as suggested by @Ian, I enabled the DEVELOPER MODE and here below the logs during a WMTS request:
18 019 10:19:39 TRACE [geoserver.platform] - Found Property override: 'geoserver.xframe.shouldSetPolicy' to be unset
18 019 10:19:39 TRACE [geoserver.platform] - Found Property override: 'geoserver.xframe.shouldSetPolicy' to be unset
18 019 10:19:39 TRACE [geoserver.platform] - Found Property override: 'geoserver.xframe.policy' to be unset
18 019 10:19:39 TRACE [geoserver.platform] - Found Java environment variable : 'geoserver.xframe.policy' to be unset
18 019 10:19:39 TRACE [geoserver.platform] - Found Servlet context parameter : 'geoserver.xframe.policy' to be unset
18 019 10:19:39 TRACE [geoserver.platform] - Found System environment variable : 'geoserver.xframe.policy' to be unset
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/web/**'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/gwc/rest/web/**'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/j_spring_security_check'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/j_spring_security_check/'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/login'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/j_spring_security_logout'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/j_spring_security_logout/'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/logout'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/rest/**'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/gwc/rest/**'
18 019 10:19:39 DEBUG [geoserver.security] - Checking match of request : 'Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z'; against '/**'
18 019 10:19:39 DEBUG [geoserver.security] - Request matched by universal pattern '/**'
18 019 10:19:39 DEBUG [geoserver.security] - Matched Path: /gwc/service/wmts, QueryString: SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ermes:31209_cape_31010_d735be58-5d26-4c65-9778-de71b5bc02bd&STYLE=raster_cape&FORMAT=image/png&TILEMATRIXSET=EPSG:4326&TILEMATRIX=EPSG:4326:5&TILEROW=9&TILECOL=31&TIME=2022-09-27T15:00:00.000Z with /**
18 019 10:19:39 DEBUG [geoserver.security] - AuthenticationCache has no entry for basic, admin_g:***
18 019 10:19:39 DEBUG [rememberme.GeoServerTokenBasedRememberMeServices] - Did not send remember-me cookie (principal did not set parameter '_spring_security_remember_me')
18 019 10:19:39 DEBUG [rememberme.GeoServerTokenBasedRememberMeServices] - Remember-me login not requested.
18 019 10:19:39 DEBUG [geoserver.security] - AuthenticationCache adding new entry for basic, admin_g:***
18 019 10:19:39 DEBUG [geoserver.security] - Cache entries #: 0
18 019 10:19:39 DEBUG [geoserver.security] - AuthenticationCache added new entry for basic, admin_g:***
18 019 10:19:39 DEBUG [geoserver.security] - Cache entries #: 1
18 019 10:19:39 TRACE [geoserver.monitor] - Testing /gwc/service/wmts for monitor filtering
18 019 10:19:39 DEBUG [geoserver.ows] - Could not find a layer group named gwc
18 019 10:19:39 TRACE [ows.OWSHandlerMapping] - Mapped to HandlerExecutionChain with [org.geoserver.ows.Dispatcher@65094d46] and 1 interceptors
18 019 10:19:39 DEBUG [geoserver.ows] - Could not lookup context gwc as a workspace, trying as group
18 019 10:19:39 DEBUG [geoserver.ows] - Could not lookup context gwc as a layer group either
18 019 10:19:39 INFO [geoserver.flow] - Request [gwc 1.0.0 dispatch] starting, processing through flow controllers
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller BasicOWSController(wfs.getfeature.=application/msexcel,org.geoserver.flow.controller.SimpleThreadBlocker@d8b7c21)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller BasicOWSController(wfs.getfeature.=application/msexcel,org.geoserver.flow.controller.SimpleThreadBlocker@d8b7c21)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller org.geoserver.flow.controller.UserConcurrentFlowController@7515d347
18 019 10:19:39 DEBUG [geoserver.flow] - UserFlowController(6,GS_CFLOW_-2716ae27:1837f0befe3:-7d62) queue size 1
18 019 10:19:39 DEBUG [geoserver.flow] - UserFlowController(6,GS_CFLOW_-2716ae27:1837f0befe3:-7d62) total queues 1
18 019 10:19:39 DEBUG [geoserver.flow] - UserFlowController(6) purged 0 stale queues
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller org.geoserver.flow.controller.UserConcurrentFlowController@7515d347
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller BasicOWSController(wms.getmap,org.geoserver.flow.controller.SimpleThreadBlocker@1f087843)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller BasicOWSController(wms.getmap,org.geoserver.flow.controller.SimpleThreadBlocker@1f087843)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller BasicOWSController(gwc,org.geoserver.flow.controller.SimpleThreadBlocker@30447599)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller BasicOWSController(gwc,org.geoserver.flow.controller.SimpleThreadBlocker@30447599)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller GlobalFlowController(org.geoserver.flow.controller.SimpleThreadBlocker@66f87dc4)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller GlobalFlowController(org.geoserver.flow.controller.SimpleThreadBlocker@66f87dc4)
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] checking flow controller RateFlowController [wps.execute, action=Delay excess requests 30000ms]
18 019 10:19:39 DEBUG [geoserver.flow] - Request [gwc 1.0.0 dispatch] passed flow controller RateFlowController [wps.execute, action=Delay excess requests 30000ms]
18 019 10:19:39 INFO [geoserver.flow] - Request control-flow performed, running requests: 1, blocked requests: 0
18 019 10:19:39 DEBUG [geoserver.gwc] - Using cacheAgeMax {0}
18 019 10:19:39 DEBUG [geoserver.filters] - Not compressing output for mimetype: image/png
18 019 10:19:39 INFO [geoserver.flow] - releasing flow controllers for [gwc 1.0.0 dispatch]
18 019 10:19:39 INFO [geoserver.flow] - Request completed, running requests: 0, blocked requests: 0
18 019 10:19:39 DEBUG [filter.GeoServerSecurityContextPersistenceFilter$1] - SecurityContextHolder now cleared, as request processing completed
18 019 10:19:41 TRACE [platform.resource] - polling contents of /opt/geoserver/data_dir/gwc-layers
18 019 10:19:41 TRACE [platform.resource] - delta computed in 345us for /opt/geoserver/data_dir/gwc-layers
Even changing the TIME parameter, the request returns the very same tile, it seems to be ignored.