-
Notifications
You must be signed in to change notification settings - Fork 7
GSIP 208
This is a proposal adding the ability to configure a fixed list of Time/Elevation dimension values on the LayerConfiguration page. The new functionality improves the performance of GetCapabilities requests when dealing with large datasets with mostly static dimension values: currently, multiple queries are performed to the data source to get the values for the list presentation mode or getting the MAX and MIN for the INTERVAL mode. Specifying a fixed date range or list of values will eliminate them, providing a performance improvement for all the GetCapabilities requests.
- Marco Volpini
This proposal is for:
- Geoserver 2.27-RC
- Under Discussion
- In Progress
- Completed
- Rejected
- Deferred
The new feature will cause a significant performance improvement for all the GetCapabilities requests dealing with the dimension information, especially in the case of larger datasets with mostly static dimension values (since no data source querying will be needed to retrieve min/max or unique values). The REST API can be used to update the list of values whenever a significant change occurs in the data source.
We propose to add a new property as a String
to hold the fixed dimension value to the DimensionInfo interface (can be any valid expression for the capabilities document). New interface methods will have a default implementation to avoid breaking potential implementations outside the GeoServer core.
public class DimensionInfo {
...
/**
* Returns a string specifying a list of comma-separated fixed time or elevation values.
* @return
*/
default String getFixedDimensionValue(){
return null;
}
/**
* Allows setting a list of fixed dimension values as a list of comma-separated fixed time or elevation values.
*/
default void setFixedDimensionValue(String fixedDimensionValue){}
}
The two methods will then be implemented in the ResourceInfoImpl
and in the VectorCustomDimensionEntry
classes.
The new property will be represented on the UI from a TextArea, hidden by default, that can be optionally used to provide fixed values for all the three different presentation modes List, Continuos interval, and Interval and Resolution.
The string passed will be validated to be a valid time or elevation value and as well to be consistent with the selected presentation mode. It will be clearly documented that no validation will be applied to check that the fixed dimension string matches the actual data and that the user should be taking care of providing/keeping the values aligned with the ones in the dataset. In particular, the implementation will focus on GetCapabilities only, while the GetMap/GetFeatureInfo operation will keep on accessing the data source if needed (e.g., for the nearest match).
Moreover, changes in the following classes are foreseen:
-
WMS class will be modified to be able to get the values using the fixed string if present.
-
ReaderDimensionAccessor to get time/elevation values from the fixed value class in case it is present.
-
Wcs10DescribeCoverageTransformer will be updated to handle the fixed value when encoding the time dimension info and the elevation dimension
-
WCSDimensionHelper in WCS2_0 package, see also the GMLTransformer.
-
The Dimension class in the wmts-multidimensional extension will be modified to retrieve domain values from the fixed string in the DimensionInfo.
Even if a core configuration object will be modified, the new configuration property will be optional, the modification is additive and thus backward compatible.
Project Steering Committee:
- Alessio Fabiani:
- Andrea Aime:
- Ian Turton:
- Jody Garnett:
- Jukka Rahkonen:
- Kevin Smith:
- Simone Giannecchini:
- Torben Barsballe:
- Nuno Oliveira:
- [Jira Ticket]
- [pull request]