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 Overview: https://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 to: https://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 | ||||
---|---|---|---|---|
| ||||
<?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&VERSION=2.0.1&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 | ||||
---|---|---|---|---|
| ||||
<?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&
...
Code Block | ||||
---|---|---|---|---|
| ||||
<?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 | ||||
---|---|---|---|---|
| ||||
<!-- 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 | ||||
---|---|---|---|---|
| ||||
<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.