Skip to content

GSIP 208

taba90 edited this page Jan 28, 2022 · 3 revisions

GSIP 208 - Add the possibility to use fixed values in Capabilities for Dimension metadata

Overview

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.

Proposed By

  • Marco Volpini

Assigned to Release

This proposal is for:

  • Geoserver 2.27-RC

State

  • Under Discussion
  • In Progress
  • Completed
  • Rejected
  • Deferred

Motivation

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.

Proposal

Configuration Changes

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 ResourceInfoImpland in the VectorCustomDimensionEntryclasses.

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.

Mock of fixed Dimension value

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:

Backwards Compatibility

Even if a core configuration object will be modified, the new configuration property will be optional, the modification is additive and thus backward compatible.

Feedback

Voting

Project Steering Committee:

  • Alessio Fabiani: +1
  • Andrea Aime: +1
  • Ian Turton:
  • Jody Garnett: +1
  • Jukka Rahkonen: +1
  • Kevin Smith:
  • Simone Giannecchini: +0
  • Torben Barsballe:
  • Nuno Oliveira:

Links

Clone this wiki locally