Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update following test implementation

The This CanadaMeteoWCS data import allows access and import of accesses gridded Numerical Weather Prediction and re-analysis data from the Meteorological Service of Canada (MSC) GeoMet Services.

Specifically the a Web Coverage Service (WCS) documented on the MSC Open Data portal.

This import builds a WCS url query and imports the returned netCDF file.

Helpful MSC Online Documentation:

 returns a netCDF file from a structured url query.


This documentation contains: Data Provider Documentation, Sample Configuration and Instructions for Creating a Subset Grid 

This data import is available since Delft-FEWS 2018.02 and a patch more recent then January, 2020.

Data Provider Documentation

This service is hosted by the Meteorological Service of Canada:

For an overview of the Web Coverage Service, refer toWCS Overviewhttps://eccc-msc.github.io/open-data/msc-geomet/web-services_en/#web-coverage-service-wcs

Available For a complete and update to late list of available data types, refer tohttps://geo.weather.gc.ca/geomet?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCapabilities

Data source - The license of the data provider (Environment and Climate Change Canada (License):  ) can be found here  https://dd.weather.gc.ca/doc/LICENCE_GENERAL.txt

This data import is available from the Delft-FEWS 2018.02 and newer.

Example complete query for a GDPS layer:

...

Example Configuration

The example configuration is for the Global Deterministic Prediction System (GDPS) numerical weather system for the TimeseriesImportRun followed by IdMapping and Grid definitions for a wide variety of imports.

Also included is the cardinality of workflows.

The two variables accessed are precipitation (PC.nwp) and temperature (TA.nwp).

TimeseriesImportRun

Code Block
languagexml
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<timeSeriesImportRun 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/timeSeriesImportRun.xsd">
   <import>
      <general>
         <importType>CanadaMeteoWCS</importType>
         <serverUrl>https://geo.weather.gc.ca/geomet?SERVICE=WCS&amp;VERSION=2.0.1&amp;REQUEST

...

=GetCoverage</serverUrl>
         <relativeViewPeriod unit="day" start="0" end="7" startOverrulable="true" endOverrulable="true"/>
         <idMapId>IdImportCanadaWCS</idMapId>
      </general>
      <properties>
         <string key="subsettingCrs" value="EPSG:4326"></string>
      </properties>
        <timeSeriesSet>
         <moduleInstanceId>ImportGDPS</moduleInstanceId>
         <valueType>grid</valueType>
         <parameterId>PC.nwp</parameterId>
         <locationId>GDPS</locationId>
         <timeSeriesType>external forecasting</timeSeriesType>
         <timeStep unit="hour" multiplier="3"/>
         <readWriteMode>add originals</readWriteMode>
      </timeSeriesSet>
      <timeSeriesSet>
         <moduleInstanceId>ImportGDPS</moduleInstanceId>
         <valueType>grid</valueType>
         <parameterId>TA.nwp</parameterId>
         <locationId>GDPS</locationId>
         <timeSeriesType>external forecasting</timeSeriesType>
         <timeStep unit="hour" multiplier="3"/>
         <readWriteMode>add originals</readWriteMode>
      </timeSeriesSet>
       <externUnit parameterId="PC.nwp" unit="kg m-2" cumulativeSum="true"/>
      <externUnit parameterId="TA.nwp" unit="K"/>
   </import>
</timeSeriesImportRun>


Property  subsettingCrs is optional. If not configured, the "&SUBSETTINGCRS=EPSG" will not be added to the url. Example config:

IdMapping


Code Block
languagexml
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006v2014 rel. 32 sp1 (http://www.altova.com) by ComputerAfdeling ServicesICT (WL | Delft HydraulicsStichting Deltares) -->
<timeSeriesImportRun<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/timeSeriesImportRun.xsd">
   <import>
      <general>
         <importType>CanadaMeteoWCS</importType>
         <serverUrl>httpsidMap.xsd">
	<!-- This Id Mapping is for the Import of Gridded Data Products from the Meterological Service of Canada (MSC) Geomet Services -->
	<!-- Regional Deterministic Precipitation Analysis (RDPA) -->
	<map internalLocation="RDPA" internalParameter="PC.sim" externalLocation="RDPA" externalParameter="RDPA.6F_PR"/>
	<!-- Regional Deterministic Precipitation Analysis (HRDPA)-->
	<map internalLocation="HRDPA" internalParameter="PC.sim" externalLocation="none" externalParameter="HRDPA.6F_PR"/>
	<!-- Regional Deterministic Prediction System  (RDPS) -->
	<map internalLocation="RDPS" internalParameter="PC.nwp" externalLocation="none" externalParameter="RDPS.ETA_PR"/>
	<map internalLocation="RDPS" internalParameter="TA.nwp" externalLocation="none" externalParameter="RDPS.ETA_TT"/>
	<!-- High Resolution Regional Deterministic Prediction System  (RDPS) -->
	<map internalLocation="HRDPS" internalParameter="PC.nwp" externalLocation="none" externalParameter="HRDPS.CONTINENTAL_PR"/>
	<map internalLocation="HRDPS" internalParameter="TA.nwp" externalLocation="none" externalParameter="HRDPS.CONTINENTAL_TT"/>
	<!-- Global Deterministic Prediction System (GDPS) -->
	<map internalLocation="GDPS" internalParameter="PC.nwp" externalLocation="none" externalParameter="GDPS.ETA_PR"/>
	<map internalLocation="GDPS" internalParameter="TA.nwp" externalLocation="none" externalParameter="GDPS.ETA_TT"/>
	<!-- Regional Ensemble Prediction System (REPS) - Surface Precipitation-->
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="0" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.01"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="1" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.02"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="2" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.03"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="3" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.04"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="4" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.05"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="5" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.06"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="6" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.07"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="7" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.08"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="8" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.09"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="9" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.10"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="10" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.11"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="11" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.12"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="12" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.13"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="13" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.14"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="14" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.15"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="15" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.16"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="16" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.17"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="17" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.18"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="18" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.19"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="19" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.20"/>
	<map internalLocation="REPS" internalParameter="PC.nwp" internalEnsemble="REPS" internalEnsembleMemberId="20" externalLocation="none" externalParameter="REPS.MEM.ETA_PR.21"/>
	<!-- Regional Ensemble Prediction System (REPS) - Surface Temperature-->
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="0" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.01"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="1" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.02"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="2" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.03"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="3" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.04"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="4" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.05"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="5" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.06"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="6" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.07"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="7" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.08"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="8" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.09"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="9" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.10"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="10" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.11"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="11" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.12"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="12" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.13"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="13" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.14"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="14" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.15"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="15" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.16"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="16" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.17"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="17" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.18"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="18" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.19"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="19" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.20"/>
	<map internalLocation="REPS" internalParameter="TA.nwp" internalEnsemble="REPS" internalEnsembleMemberId="20" externalLocation="none" externalParameter="REPS.MEM.ETA_TT.21"/>
</idMap>


Grids Definition

Note the Grid Definitions for are for a specified grid over Canada. Example query: https://geo.weather.gc.ca/geomet?SERVICE=WCS&

...

VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=GDPS.ETA_PR&SUBSETTINGCRS=EPSG:4326&SUBSET=x(-97,-75)&SUBSET=y(40,46)&FORMAT=image/netcdf

Image Added

Code Block
languagexml
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<grids 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/grids.xsd">
	<regular locationId="RDPA">
        <rows>329</rows>
        <columns>231</columns>
        <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <x>-140.80735930735932</x>
 amp;REQUEST=GetCoverage</serverUrl>
         <user>user</user>
  <y>69.95592705167174</y>
            <password>password</password><z>0.0</z>
        </firstCellCenter>
        <xCellSize>0.38528139</xCellSize>
        <yCellSize>0.0881459</yCellSize>
    <relativeViewPeriod unit</regular>
<regular locationId="day" start="1" end="2" startOverrulable="true" endOverrulable="true"/>
HRDPA">
        <rows>852</rows>
        <columns>2152</columns>
        <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <x>-140.97932156133828</x>
            <y>69.98298122065728</y>
            <z>0.0</z>
        </firstCellCenter>
        <xCellSize>0.04135688</xCellSize>
        <yCellSize>0.03403756</yCellSize>
    </regular>
<regular locationId="GDPS">
        <rows>121</rows>
        <columns>371</columns>
        <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <x>-140.8800539083558</x>
            <y>69.8801652892562</y>
            <z>0.0</z>
        </firstCellCenter>
        <xCellSize>0.23989218</xCellSize>
        <yCellSize>0.23966942</yCellSize>
    </regular>
	<regular locationId="RDPS">
        <rows>328</rows>
        <columns>231</columns>
        <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <x>-140.80735930735932</x>
            <y>69.95579268292683</y>
            <z>0.0</z>
        </firstCellCenter>
        <xCellSize>0.38528139</xCellSize>
        <yCellSize>0.08841463</yCellSize>
    </regular>
	<regular locationId="HRDPS">
        <rows>996</rows>
        <columns>2101</columns>
        <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <x>-140.97881960970966</x>
            <y>69.94351932941343</y>
            <z>0.0</z>
        </general>firstCellCenter>
      <properties>
  <xCellSize>0.04236078</xCellSize>
        <yCellSize>0.02907435</yCellSize>
    <string key</regular>
<regular locationId="subsettingCrs" value="EPSG:4326"></string>REPS">
        <rows>207</rows>
        <columns>148</columns>
      </properties>

  <geoDatum>WGS 1984</geoDatum>
        <firstCellCenter>
            <timeSeriesSet>
<x>-140.69932432432432</x>
            <moduleInstanceId>CanadaMeteoWCS<<y>69.92995169082126</moduleInstanceId>y>
         <valueType>grid</valueType>
    <z>0.0</z>
        </firstCellCenter>
        <parameterId>GDPS<xCellSize>0.ETA_HR<60135135</parameterId>xCellSize>
         <locationId>CanadaMeteoWCSGrid</locationId>
         <timeSeriesType>external forecasting</timeSeriesType>
         <timeStep unit="hour" multiplier="6"/>
         <readWriteMode>add originals</readWriteMode>
      </timeSeriesSet>
   </import>
</timeSeriesImportRun> <yCellSize>0.14009662</yCellSize>
    </regular>

Cardinality of Workflows

As the forecast requests are issued at specific intervals, a CardinalTimeStep is needed.

The examples below (and following Timestep definitions can be used to ensure the requests are made at the correct hour.

Code Block
languagexml
linenumberstrue
		<!-- Retrieve and Import ECCC  from Server Workflows -->
	<workflowDescriptor id="ImportRDPAGrids_WCS" name="Import RDPA (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_6hourly"/>
	</workflowDescriptor>
<workflowDescriptor id="ImportHRDPAGrids_WCS" name="Import HRDPA (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_6hourly"/>
	</workflowDescriptor>
	<workflowDescriptor id="ImportRDPSGrids_WCS" name="Import RDPS (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_6hourly"/>
	</workflowDescriptor>
	<workflowDescriptor id="ImportHRDPSGrids_WCS" name="Import HRDPS (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_6hourly"/>
	</workflowDescriptor>
	<workflowDescriptor id="ImportGDPSGrids_WCS" name="Import GDPS (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_12hourly"/>
	</workflowDescriptor>
	<workflowDescriptor id="ImportREPSGrids_WCS" name="Import REPS (WCS Service)" forecast="false" allowApprove="false" visible="true">
		<description>Retrieve Forecast Grids from Web Coverage Service (WCS)</description>
		<cardinalTimeStep id="GMT_12hourly"/>
	</workflowDescriptor>


Code Block
languagexml
linenumberstrue
<timeSteps 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/timeSteps.xsd">

	<timeStep id="GMT_6hourly" times="00:00 06:00 12:00 18:00" timeZone="GMT"/>
	<timeStep id="GMT_12hourly" times="00:00 12:00" timeZone="GMT"/>

</timeSteps>


Instructions for Creating a Subset Grid

To create a smaller grid, follow these steps:

1) Define the bounding box coordinates (https://boundingbox.klokantech.com/, try Dublincore below Copy and Paste for clarity)
2) Fill in the url query below:
https://geo.weather.gc.ca/geomet?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=$VARIABLE_ID$&SUBSETTINGCRS=EPSG:4326&SUBSET=x($westlimit$,$eastlimit$)&SUBSET=y($southlimit$,$northlimit$)&FORMAT=image/netcdf
where:
             $VARIABLE_ID$ is from the WCS getCapabilities, or from the externalIDs in this document.
              $westlimit$, $eastlimit$, $southlimit$ $northlimit$ are an integer bounding box
3) Paste the query in a webbrowser to download a sample file.
4) In your FEWS application, use the functionaility from the F12 menu --> Clipboard --> Copy grib geometry from file.
5) Paste the grid definition in your grids.xml file

Known issues

Subsetting definitions are currently required (original grids cannot be pulled). 

Delays are not configurable, meaning that on Stand Alone the T0 may need to be slightly earlier than the current time.