Overview
This export is available in DELFT-FEWS versions 2022.02 (RWS) and later
Water level time series data, which has been analyzed to determine high- and low-tide water levels and assigned standardized tide numbers (e.g. using the package HATYAN for the North Sea), can be stored in a specific NetCDF format, in which the high- and low-tide water levels are referenced by their tide number (a unique identifier given to each tidal cycle), rather than time, as the main dimension. Time information is still available, but is stored as a separate variable that is referenced per tide number and location.
The NETCDF-TIDAL_TIMESERIES option exports such data to NetCDF files which comply to the CF 1.4 standard.
Some details:
- The <properties> section of the configuration is used to specify (1) a list of all the variables to export, (2) the name of the time variable (different for high and low water levels), and (3) the name of the tide number variable. Note: This section may be simplified in the future, as some of this information is also available in the idMap.
- It is possible to export an additional parameter referenced per tide number, such as the amount of surge present at each high/low water level.
- It is possible to only export high water levels (or low water levels) separately, by simply leaving those parts out of the configuration.
- For this to work, you also need to configure the tideNumberParameterId in Parameters.xml
- By default, missing values are exported using float value 9.96921e+036. This can be changed by entering a different missing value (NaN or other) in the configuration files, as follows. Use option <exportMissingValue> in TimeSeriesExport module, and <missVal> in GeneralAdapter.
More information about the CF standards can be found at: http://cfconventions.org/Data/cf-standard-names/current/build/cf-standard-name-table.html
Configuring the export module
An example of the NETCDF-TIDAL_TIMESERIES export is provided below. This example exports both high and low water levels and the associated surge. You can simplify this by deleting the configuration that doesn't apply for you (e.g. parts related to surge or low water).
<?xml version="1.0" encoding="UTF-8"?> <timeSeriesExportRun xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/timeSeriesExportRun.xsd"> <export> <general> <exportType>NETCDF-TIDAL_TIMESERIES</exportType> <folder>$EXPORT_FOLDER$/tide_levels/</folder> <exportFileName> <name>HWLW_tidenumber_surge.nc</name> </exportFileName> <idMapId>IdExport_HWLW</idMapId> <exportTimeZone> <timeZoneName>GMT</timeZoneName> </exportTimeZone> <geoDatum>Rijks Driehoekstelsel</geoDatum> </general> <properties> <string key="netCDFWriteFormat" value="netcdf4"/> <int key="netCDF4DeflateLevel" value="6"/> <string key="variables" value="waterlevel_LW,waterlevel_HW,surge_LW,surge_HW"/> <string key="waterlevel_LW" value="time_LW,LWno"/> <string key="waterlevel_HW" value="time_HW,HWno"/> <string key="surge_LW" value="time_LW,LWno"/> <string key="surge_HW" value="time_HW,HWno"/> </properties> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>WL.simulated</parameterId> <qualifierId>extreme_Low</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Surge.simulated</parameterId> <qualifierId>extreme_Low</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>HWLW_nr</parameterId> <qualifierId>extreme_Low</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>WL.simulated</parameterId> <qualifierId>extreme_Peak</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Surge.simulated</parameterId> <qualifierId>extreme_Peak</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>Calculate_HWLW_Surge</moduleInstanceId> <valueType>scalar</valueType> <parameterId>HWLW_nr</parameterId> <qualifierId>extreme_Peak</qualifierId> <locationSetId>Locations_HWLW</locationSetId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="nonequidistant"/> <readWriteMode>read complete forecast</readWriteMode> </timeSeriesSet> </export> </timeSeriesExportRun>
Configuring the idMap
An example of the corresponding idMap is provided below.
<?xml version="1.0" encoding="UTF-8"?> <idMap version="1.1" xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/idMap.xsd"> <function externalLocationFunction="@NARWL_ID@" internalParameter="HWLW_nr" internalQualifier1="extreme_Low" externalParameterFunction="LWno" internalLocationSet="Locations_HWLW"/> <function externalLocationFunction="@NARWL_ID@" internalParameter="HWLW_nr" internalQualifier1="extreme_Peak" externalParameterFunction="HWno" internalLocationSet="Locations_HWLW"/> <function externalLocationFunction="@NARWL_ID@" internalParameter="WL.simulated" internalQualifier1="extreme_Low" externalParameterFunction="waterlevel_LW" internalLocationSet="Locations_HWLW"/> <function externalLocationFunction="@NARWL_ID@" internalParameter="WL.simulated" internalQualifier1="extreme_Peak" externalParameterFunction="waterlevel_HW" internalLocationSet="Locations_HWLW"/> <function externalLocationFunction="@NARWL_ID@" internalParameter="Surge.simulated" internalQualifier1="extreme_Low" externalParameterFunction="surge_LW" internalLocationSet="Locations_HWLW"/> <function externalLocationFunction="@NARWL_ID@" internalParameter="Surge.simulated" internalQualifier1="extreme_Peak" externalParameterFunction="surge_HW" internalLocationSet="Locations_HWLW"/> </idMap>