Difference between revisions of "EODMS APIs"

From wiki
Jump to: navigation, search
m (William.mackinnon moved page EODMS Open Search API (BETA) to EODMS Open Search API: Remove beta)
 
(36 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
== Overview ==
 
== Overview ==
  
As part of the [https://www.tbs-sct.gc.ca/pol/doc-eng.aspx?id=28108 Directive on Open Government], the Government of Canada is committed improving its #OpenData posture. This OpenSearch API is the latest effort to align the [[Earth Observation Data Management System (EODMS)]] with giants like ESA and their Sentinel access program to improve RADARSAT-1 access
+
[[Earth_Observation_Data_Management_System_(EODMS)|EODMS]] has several options for search and download API access as well as automation i.e. Machine 2 Machine.
  
== Examples ==  
+
As part of the [https://www.tbs-sct.gc.ca/pol/doc-eng.aspx?id=28108 Directive on Open Government], the Government of Canada is committed to improving its [https://twitter.com/hashtag/opendata?lang=en #OpenData] posture. EODMS API access aims to promote practices per the [https://www.canada.ca/en/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html GC Standards on APIs]
 +
 
 +
To find more GC APIs, visit the GC API site.
 +
 
 +
[[File:Api-logo.png|link=https://api.canada.ca/en/homepage]]
 +
https://api.canada.ca/en/homepage
 +
 
 +
== OpenSearch API (for RADARSAT-1 and NAPL) ==
 +
 
 +
This OpenSearch API is the latest effort to align with giants like ESA and their [[https://scihub.copernicus.eu/userguide/OpenSearchAPI Copernicus Data Hub OpenSearch access program]] to improve RADARSAT-1 access
  
 
To form a get query it would take the form of:
 
To form a get query it would take the form of:
<pre>
+
 
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q={searchterms}
+
<code style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q={searchterms}</code>
</pre>
 
  
 
e.g.:
 
e.g.:
<pre>
 
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=footprint:Intersects((-130.496,54.672))
 
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=beginposition:[2007-08-20T00:49:50Z%20TO%202007-08-22T10:50:50Z]
 
</pre>
 
  
The valid search terms right now are:
+
<code style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=footprint:Intersects((-130.496,54.672))</code>
<pre>
+
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=beginposition:[2007-08-20T00:49:50Z%20TO%202007-08-22T10:50:50Z]</pre>
 +
 
 +
SEARCH TERMS
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 
producttype which can be SCN,SGF, or SLC for Radarsat-1
 
producttype which can be SCN,SGF, or SLC for Radarsat-1
 
sensoroperationalmode which refers to the beam mnemonic like EH3, F1, W2, SCWB, SCNA etc..
 
sensoroperationalmode which refers to the beam mnemonic like EH3, F1, W2, SCWB, SCNA etc..
Line 31: Line 40:
 
The search terms can be used together with AND and OR. There is also support for wildcards, free text searching and other operators:
 
The search terms can be used together with AND and OR. There is also support for wildcards, free text searching and other operators:
  
<pre>
+
<pre style="background-color:#EEFFCC; border-color:#AACC99">
Wildcard Description
+
Wildcard Description
  
* any sequence of zero or more characters
+
*         any sequence of zero or more characters
? any one character
+
?         any one character
 
</pre>
 
</pre>
  
<pre>
+
<pre style="background-color:#EEFFCC; border-color:#AACC99">
Operator Description
+
Operator Description
  
AND         Narrow search and retrieve records containing all of the words it separates.
+
AND       Narrow search and retrieve records containing all of the words it separates.
OR Broaden search and retrieve records containing any of the words it separates.
+
OR       Broaden search and retrieve records containing any of the words it separates.
NOT Narrow search and retrieve records that do not contain the term following it.
+
NOT       Narrow search and retrieve records that do not contain the term following it.
( ) Group words or phrases when combining Boolean phrases and to show the order in which relationships should be considered.
+
( )       Group words or phrases when combining Boolean phrases and to show the order in which relationships should be considered.
 
</pre>
 
</pre>
  
 
Heavily modeled after the ESA Data hubs so the following should apply:  
 
Heavily modeled after the ESA Data hubs so the following should apply:  
https://colhub.copernicus.eu/userguide/OpenSearchAPI
+
<code>https://colhub.copernicus.eu/userguide/OpenSearchAPI</code>
 +
 
 +
== OGC APIs==
 +
 
 +
The following are usage samples of EODMS' OGC APIs with a full [https://github.com/nrcan-eodms-sgdot-rncan/eodms-ogc-client-py/wiki open source Python module on GitHub]
 +
 
 +
=== Discover some data / CSW GetRecords ===
 +
 
 +
URL (POST)
 +
 
 +
Each data collection has a separate URL. The following are supported:
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog</code>
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_napl_catalog</code>
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/RCMImageProducts</code>
 +
 
 +
HTTP POST - HEADER (No Username/Password)
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<csw:GetRecords service='CSW' version='2.0.2' maxRecords='10' startPosition='1' resultType='results'
 +
&#x09;outputFormat='application/xml' outputSchema='http://www.opengis.net/cat/csw/2.0.2'
 +
&#x09;xmlns='http://www.opengis.net/cat/csw/2.0.2' xmlns:csw='http://www.opengis.net/cat/csw/2.0.2'
 +
&#x09;xmlns:ogc='http://www.opengis.net/ogc' xmlns:ows='http://www.opengis.net/ows'
 +
&#x09;xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dct='http://purl.org/dc/terms/'
 +
&#x09;xmlns:gml='http://www.opengis.net/gml' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
&#x09;xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'>
 +
&#x09;<csw:Query typeNames='csw:Record'>
 +
&#x09;&#x09;<csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName>
 +
&#x09;</csw:Query>
 +
</csw:GetRecords>
 +
</pre>
 +
 
 +
HTTP POST - HEADER (With Username/Password SOAP Envelope)
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 +
  <soapenv:Header>
 +
      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
 +
        <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
            <wsse:Username>#####</wsse:Username>
 +
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">#####</wsse:Password>
 +
        </wsse:UsernameToken>
 +
    </wsse:Security>
 +
  </soapenv:Header>
 +
  <soapenv:Body>
 +
 
 +
<csw:GetRecords service='CSW' version='2.0.2' maxRecords='10' startPosition='1' resultType='results'
 +
&#x09;outputFormat='application/xml' outputSchema='http://www.opengis.net/cat/csw/2.0.2'
 +
&#x09;xmlns='http://www.opengis.net/cat/csw/2.0.2' xmlns:csw='http://www.opengis.net/cat/csw/2.0.2'
 +
&#x09;xmlns:ogc='http://www.opengis.net/ogc' xmlns:ows='http://www.opengis.net/ows'
 +
&#x09;xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dct='http://purl.org/dc/terms/'
 +
&#x09;xmlns:gml='http://www.opengis.net/gml' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
&#x09;xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'>
 +
&#x09;<csw:Query typeNames='csw:Record'>
 +
&#x09;&#x09;<csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName>
 +
&#x09;</csw:Query>
 +
</csw:GetRecords>
 +
 
 +
</soapenv:Body>
 +
</soapenv:Envelope>
 +
</pre>
 +
 
 +
HTTP RESPONSE
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<GetRecordsResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
 +
&#x09;<SearchStatus timestamp="2018-08-28T01:59:38-04:00"/>
 +
&#x09;<SearchResults numberOfRecordsMatched="1949485" numberOfRecordsReturned="10"
 +
&#x09;&#x09;nextRecord="11">
 +
&#x09;&#x09;<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 +
&#x09;&#x09;&#x09;xmlns:ows="http://www.opengis.net/ows"
 +
&#x09;&#x09;&#x09;xmlns:dct="http://purl.org/dc/terms/"
 +
&#x09;&#x09;&#x09;xmlns:dc="http://purl.org/dc/elements/1.1/">
 +
&#x09;&#x09;&#x09;<dc:identifier>1511078</dc:identifier>
 +
&#x09;&#x09;&#x09;<dc:title>Radarsat-1 Raw Scenes</dc:title>
 +
&#x09;&#x09;&#x09;<dc:type>dataset</dc:type>
 +
&#x09;&#x09;&#x09;<dc:subject>Satellites, Imaging,Radar, Digital Collection, Mapping,
 +
&#x09;&#x09;&#x09;&#x09;Spatial Data, Remote Sensing
 +
&#x09;&#x09;&#x09;</dc:subject>
 +
&#x09;&#x09;&#x09;<dc:subject>F1</dc:subject>
 +
&#x09;&#x09;&#x09;<dc:format>GeoTIFF</dc:format>
 +
&#x09;&#x09;&#x09;<dct:abstract>The Radarsat-1 satellite has a synthetic aperture
 +
&#x09;&#x09;&#x09;&#x09;radar(SAR) imaging instrument. The images are used internationally
 +
&#x09;&#x09;&#x09;&#x09;to manage and monitor the Earth's resources and to monitor global
 +
&#x09;&#x09;&#x09;&#x09;climate change, as well as in many other commercial and scientific
 +
&#x09;&#x09;&#x09;&#x09;applications. RADARSAT-1 is ideally suited to supporting these
 +
&#x09;&#x09;&#x09;&#x09;tasks because of its wide range of beams, SAR technology, frequent
 +
&#x09;&#x09;&#x09;&#x09;revisit period, high-quality products and fast, efficient delivery.
 +
&#x09;&#x09;&#x09;&#x09;Each of Radarsat-1's seven beam modes offer a different image
 +
&#x09;&#x09;&#x09;&#x09;resolution. The modes include Fine, which covers an area of 50 km
 +
&#x09;&#x09;&#x09;&#x09;× 50 km (31 mi × 31 mi) (2,500 km2 (970 sq mi)) with a
 +
&#x09;&#x09;&#x09;&#x09;resolution of 10 metres (33 ft); Standard, which covers an area of
 +
&#x09;&#x09;&#x09;&#x09;100 km × 100 km (62 mi × 62 mi) (10,000 km2 (3,900 sq mi)) and
 +
&#x09;&#x09;&#x09;&#x09;has a resolution of 30 metres (98 ft); and ScanSAR wide, which
 +
&#x09;&#x09;&#x09;&#x09;covers a 500 km × 500 km (310 mi × 310 mi) (250,000 km2
 +
&#x09;&#x09;&#x09;&#x09;(97,000 sq mi)) area with a resolution of 100 metres (330 ft).
 +
&#x09;&#x09;&#x09;&#x09;Radarsat-1 also has the unique ability to direct its beam at
 +
&#x09;&#x09;&#x09;&#x09;different angles.
 +
&#x09;&#x09;&#x09;</dct:abstract>
 +
&#x09;&#x09;&#x09;<ows:BoundingBox>
 +
&#x09;&#x09;&#x09;&#x09;<ows:LowerCorner>32.664853 -3.055419</ows:LowerCorner>
 +
&#x09;&#x09;&#x09;&#x09;<ows:UpperCorner>33.172058 -2.442097</ows:UpperCorner>
 +
&#x09;&#x09;&#x09;</ows:BoundingBox>
 +
&#x09;&#x09;</csw:SummaryRecord>
 +
&#x09;&#x09;...
 +
&#x09;</SearchResults>
 +
</GetRecordsResponse>
 +
</pre>
 +
 
 +
=== Fetch a Single Record / CSW GetRecordById ===
 +
 
 +
URL (GET REQUEST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog?request=GetRecordById&id=1515826&service=CSW&version=2.0.2</code>
 +
 
 +
HTTP RESPONSE
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<GetRecordByIdResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
 +
&#x09;<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 +
&#x09;&#x09;xmlns:ows="http://www.opengis.net/ows"
 +
&#x09;&#x09;xmlns:dct="http://purl.org/dc/terms/"
 +
&#x09;&#x09;xmlns:dc="http://purl.org/dc/elements/1.1/">
 +
&#x09;&#x09;<dc:identifier>1515826</dc:identifier>
 +
&#x09;&#x09;<dc:title>Radarsat-1 Raw Scenes</dc:title>
 +
&#x09;&#x09;<dc:type>dataset</dc:type>
 +
&#x09;&#x09;<dc:subject>Satellites, Imaging,Radar, Digital Collection, Mapping,
 +
&#x09;&#x09;&#x09;Spatial Data, Remote Sensing
 +
&#x09;&#x09;</dc:subject>
 +
&#x09;&#x09;<dc:subject>F5</dc:subject>
 +
&#x09;&#x09;<dc:format>GeoTIFF</dc:format>
 +
&#x09;&#x09;<dct:abstract>The Radarsat-1 satellite has a synthetic aperture radar(SAR)
 +
&#x09;&#x09;&#x09;imaging instrument. The images are used internationally to manage and
 +
&#x09;&#x09;&#x09;monitor the Earth's resources and to monitor global climate change,
 +
&#x09;&#x09;&#x09;as well as in many other commercial and scientific applications.
 +
&#x09;&#x09;&#x09;RADARSAT-1 is ideally suited to supporting these tasks because of
 +
&#x09;&#x09;&#x09;its wide range of beams, SAR technology, frequent revisit period,
 +
&#x09;&#x09;&#x09;high-quality products and fast, efficient delivery. Each of Radarsat-1's
 +
&#x09;&#x09;&#x09;seven beam modes offer a different image resolution. The modes include
 +
&#x09;&#x09;&#x09;Fine, which covers an area of 50 km × 50 km (31 mi × 31 mi) (2,500 km2
 +
&#x09;&#x09;&#x09;(970 sq mi)) with a resolution of 10 metres (33 ft); Standard, which
 +
&#x09;&#x09;&#x09;covers an area of 100 km × 100 km (62 mi × 62 mi) (10,000 km2 (3,900
 +
&#x09;&#x09;&#x09;sq mi)) and has a resolution of 30 metres (98 ft); and ScanSAR wide,
 +
&#x09;&#x09;&#x09;which covers a 500 km × 500 km (310 mi × 310 mi) (250,000 km2 (97,000
 +
&#x09;&#x09;&#x09;sq mi)) area with a resolution of 100 metres (330 ft). Radarsat-1 also
 +
&#x09;&#x09;&#x09;has the unique ability to direct its beam at different angles.
 +
&#x09;&#x09;</dct:abstract>
 +
&#x09;&#x09;<ows:BoundingBox>
 +
&#x09;&#x09;&#x09;<ows:LowerCorner>-112.436916 40.41178</ows:LowerCorner>
 +
&#x09;&#x09;&#x09;<ows:UpperCorner>-111.769493 40.977687</ows:UpperCorner>
 +
&#x09;&#x09;</ows:BoundingBox>
 +
&#x09;</csw:SummaryRecord>
 +
</GetRecordByIdResponse>
 +
</pre>
 +
 
 +
=== Order that Record / WCS DescribeCoverage ===
 +
 
 +
The WCS DescribeCoverage message is used for ordering and can be sent as a POST or GET (recommended) request.
 +
 
 +
URL (GET REQUEST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs?SERVICE=WCS&version=2.0.1&REQUEST=DescribeCoverage&coverageId=5117806&CollectionId=Radarsat1</code>
 +
 
 +
URL (POST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs</code>
 +
 
 +
HTTP POST - HEADER
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99"><wcs:DescribeCoverage service="WCS" version="2.0.1"
 +
&#x09;xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
&#x09;xsi:schemaLocation="http://www.opengis.net/wcs/2.0
 +
&#x09;http://schemas.opengis.net/wcs/2.0/wcsAll.xsd"
 +
&#x09;xmlns="http://www.opengis.net/wcs/2.0"
 +
&#x09;xmlns:wcs="http://www.opengis.net/wcs/2.0">
 +
&#x09;<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
 +
</wcs:DescribeCoverage></pre>
 +
 
 +
HTTP RESPONSE
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99"><wcs:CoverageDescriptions xmlns:wcs="http://www.opengis.net/wcs/2.0">
 +
&#x09;<wcs:CoverageDescription xmlns:gml="http://www.opengis.net/gml/3.2"
 +
&#x09;&#x09;gml:id="C380b242c-b324-4364-9ea5-7798f2f5e648">
 +
&#x09;&#x09;<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
 +
&#x09;&#x09;<metadata xmlns="http://www.opengis.net/gmlcov/1.0"
 +
&#x09;&#x09;&#x09;xmlns:xlink="http://www.w3.org/1999/xlink"
 +
&#x09;&#x09;&#x09;xlink:href="https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/
 +
&#x09;&#x09;&#x09;WESSearch/csw/Radarsat1?request=GetRecordById&amp;Id=5117806&amp;
 +
&#x09;&#x09;&#x09;version=2.0.2&amp;outputSchema=http://schema.compusult.net/services/
 +
&#x09;&#x09;&#x09;2.2.0/WESSearch/csw&amp;service=CSW" xlink:title="CSW GetRecordById"
 +
&#x09;&#x09;&#x09;xlink:type="simple"/>
 +
&#x09;&#x09;<gml:domainSet>
 +
&#x09;&#x09;&#x09;<gml:Polygon gml:id="C06023ce2-944d-478f-a391-4e6736c53f2e"
 +
&#x09;&#x09;&#x09;&#x09;srsDimension="2" srsName="EPSG:4326"
 +
&#x09;&#x09;&#x09;&#x09;xmlns:gml="http://www.opengis.net/gml/3.2">
 +
&#x09;&#x09;&#x09;&#x09;<gml:exterior>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<gml:LinearRing>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<gml:posList>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-74.369379 45.510773
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-81.488928 46.423416
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-82.487757 41.524618
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-75.922503 40.612456
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-74.369379 45.510773
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;</gml:posList>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</gml:LinearRing>
 +
&#x09;&#x09;&#x09;&#x09;</gml:exterior>
 +
&#x09;&#x09;&#x09;</gml:Polygon>
 +
&#x09;&#x09;</gml:domainSet>
 +
&#x09;&#x09;<rangeType xmlns="http://www.opengis.net/gmlcov/1.0"/>
 +
&#x09;&#x09;<wcs:ServiceParameters>
 +
&#x09;&#x09;&#x09;<wcs:CoverageSubtype>GridCoverage</wcs:CoverageSubtype>
 +
&#x09;&#x09;&#x09;<wcs:nativeFormat/>
 +
&#x09;&#x09;&#x09;<wcs:Extension>
 +
&#x09;&#x09;&#x09;&#x09;<DestinationTypes xmlns="http://schema.compusult.net/services/
 +
&#x09;&#x09;&#x09;&#x09;&#x09;2.7.0/WESOrder/wcs">
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Type>Download</Type>
 +
&#x09;&#x09;&#x09;&#x09;</DestinationTypes>
 +
&#x09;&#x09;&#x09;&#x09;<Parameter
 +
&#x09;&#x09;&#x09;&#x09;&#x09;xmlns="http://schema.compusult.net/services/2.7.0/WESOrder">
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Name>packagingFormat</Name>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Title>Packaging Format</Title>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Packaging Format</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Default>ZIP</Default>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>ZIP</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Zip</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Zip</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TAR</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TARGZ</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar/GZ</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar/GZ</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TAR</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TARGZ</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar/GZ</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar/GZ</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;</Parameter>
 +
&#x09;&#x09;&#x09;</wcs:Extension>
 +
&#x09;&#x09;</wcs:ServiceParameters>
 +
&#x09;</wcs:CoverageDescription>
 +
</wcs:CoverageDescriptions></pre>
 +
 
 +
=== Github Repo - End-to-End OGC Order Example with Python ===
 +
 
 +
Checkout out our [https://github.com/nrcan-eodms-sgdot-rncan/eodms-ogc-client-py/wiki open source Python module on GitHub] use the CSW and WCS APIs to order images from EODMS.
 +
 
 +
== Github Repo - Web Automation with Katalon ==
 +
 
 +
* A [https://github.com/nrcan-eodms-sgdot-rncan/eodms-scene-retriever Katalon utility] to automate website user clicks for searching and ordering.
  
 
@fr|
 
@fr|
 +
== Aperçu ==
  
== Vue d'ensemble ==
+
[[Earth_Observation_Data_Management_System_(EODMS)|SGDOT]] propose plusieurs options pour l’API Access et automation, à savoir Machine 2 Machine.
  
Le gouvernement du Canada s'est engagé à améliorer sa posture #OpenData, et cette nouvelle API est le dernier effort visant à s'aligner sur des géants tels que l'ESA et leur programme d'accès Sentinel afin d'améliorer l'accès à RADARSAT-1.
+
Dans le cadre de la [https://www.tbs-sct.gc.ca/pol/doc-fra.aspx?id=28108 Directive sur la gouvernance ouverte], le gouvernement du Canada s'est engagé à améliorer sa [https: // twitter.com/hashtag/opendata?lang=en #OpenData] posture. API EODMS [http://www.canada.ca/fr/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html Normes du GC sur les API]
  
== Exemples ==
+
Pour découvrir plus d’API du GC, visitez le site API du GC.
 +
 
 +
[[File:Api-logo.png|link=https://api.canada.ca/en/homepage]]
 +
https://api.canada.ca/en/homepage
 +
 
 +
== API OpenSearch (pour RADARSAT-1 et NAPL) ==
  
 
Pour former une requête get, cela prendrait la forme suivante:
 
Pour former une requête get, cela prendrait la forme suivante:
<pre>
+
<code style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q={searchterms}</code>
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q={searchterms}
 
</pre>
 
  
 
Par exemple:
 
Par exemple:
<pre>
 
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=footprint:Intersects((-130.496,54.672))
 
https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=beginposition:[2007-08-20T00:49:50Z%20TO%202007-08-22T10:50 : 50Z]
 
</pre>
 
  
Les termes de recherche valides actuellement sont:
+
<code style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=footprint:Intersects((-130.496,54.672))</code>
<pre>
+
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=beginposition:[2007-08-20T00:49:50Z%20TO%202007-08-22T10:50:50Z]</pre>
 +
 
 +
Termes de recherche
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 
producttype pouvant être SCN, SGF ou SLC pour Radarsat-1
 
producttype pouvant être SCN, SGF ou SLC pour Radarsat-1
 
sensoroperationalmode qui fait référence à la mnémonique du faisceau comme EH3, F1, W2, SCWB, SCNA, etc.
 
sensoroperationalmode qui fait référence à la mnémonique du faisceau comme EH3, F1, W2, SCWB, SCNA, etc.
Line 82: Line 363:
 
Les termes de recherche peuvent être utilisés avec AND et OR. Il existe également un support pour les caractères génériques, la recherche de texte libre et d'autres opérateurs:
 
Les termes de recherche peuvent être utilisés avec AND et OR. Il existe également un support pour les caractères génériques, la recherche de texte libre et d'autres opérateurs:
  
<pre>
+
<pre style="background-color:#EEFFCC; border-color:#AACC99">
Wildcard Description
+
Wildcard Description
  
* any sequence of zero or more characters
+
*         any sequence of zero or more characters
? any one character
+
?         any one character
 
</pre>
 
</pre>
  
<pre>
+
<pre style="background-color:#EEFFCC; border-color:#AACC99">
Operator Description
+
Operator Description
  
AND         Narrow search and retrieve records containing all of the words it separates.
+
AND       Narrow search and retrieve records containing all of the words it separates.
OR Broaden search and retrieve records containing any of the words it separates.
+
OR       Broaden search and retrieve records containing any of the words it separates.
NOT Narrow search and retrieve records that do not contain the term following it.
+
NOT       Narrow search and retrieve records that do not contain the term following it.
( ) Group words or phrases when combining Boolean phrases and to show the order in which relationships should be considered.
+
( )       Group words or phrases when combining Boolean phrases and to show the order in which relationships should be considered.
 
</pre>
 
</pre>
  
 
Ainsi, comme indiqué précédemment, il est fortement calqué sur les concentrateurs de données ESA:  
 
Ainsi, comme indiqué précédemment, il est fortement calqué sur les concentrateurs de données ESA:  
https://colhub.copernicus.eu/userguide/OpenSearchAPI
+
<code>https://colhub.copernicus.eu/userguide/OpenSearchAPI</code>
 +
 
 +
== OGC ==
 +
 
 +
Voici des exemples d'utilisation des API OGC de SGDOT avec un complet [https://github.com/nrcan-eodms-sgdot-rncan/eodms-ogc-client-py/wiki module Python open source sur GitHub]
 +
 
 +
=== Découvrez des images / CSW GetRecords ===
 +
 
 +
URL
 +
 
 +
Chaque collecte de données a une URL distincte. Les éléments suivants sont pris en charge:
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog</code>
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_napl_catalog</code>
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/RCMImageProducts</code>
 +
 
 +
HTTP POST - HEADER (No Username/Password)
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<csw:GetRecords service='CSW' version='2.0.2'
 +
  maxRecords='10'
 +
  startPosition='1'
 +
  resultType='results'
 +
  outputFormat='application/xml'
 +
  outputSchema='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns:csw='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns:ogc='http://www.opengis.net/ogc'
 +
  xmlns:ows='http://www.opengis.net/ows'
 +
  xmlns:dc='http://purl.org/dc/elements/1.1/'
 +
  xmlns:dct='http://purl.org/dc/terms/'
 +
  xmlns:gml='http://www.opengis.net/gml'
 +
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
  xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2
 +
  http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'>
 +
<csw:Query typeNames='csw:Record'>
 +
  <csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName>
 +
    <csw:Constraint version='1.1.0'>
 +
    <ogc:Filter>
 +
        <ogc:BBOX>
 +
          <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
 +
          <gml:Envelope>
 +
            <gml:lowerCorner>-53.0 47.2</gml:lowerCorner>
 +
            <gml:upperCorner>-52.5 47.8</gml:upperCorner>
 +
          </gml:Envelope>
 +
        </ogc:BBOX>
 +
    </ogc:Filter>
 +
  </csw:Constraint>
 +
</csw:Query>
 +
</csw:GetRecords>
 +
</pre>
 +
 
 +
HTTP POST - HEADER (Avec enveloppe SOAP nom d'utilisateur / mot de passe)
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 +
  <soapenv:Header>
 +
      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
 +
        <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
            <wsse:Username>#####</wsse:Username>
 +
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">#####</wsse:Password>
 +
        </wsse:UsernameToken>
 +
    </wsse:Security>
 +
  </soapenv:Header>
 +
  <soapenv:Body>
 +
 
 +
<csw:GetRecords service='CSW' version='2.0.2'
 +
  maxRecords='10'
 +
  startPosition='1'
 +
  resultType='results'
 +
  outputFormat='application/xml'
 +
  outputSchema='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns:csw='http://www.opengis.net/cat/csw/2.0.2'
 +
  xmlns:ogc='http://www.opengis.net/ogc'
 +
  xmlns:ows='http://www.opengis.net/ows'
 +
  xmlns:dc='http://purl.org/dc/elements/1.1/'
 +
  xmlns:dct='http://purl.org/dc/terms/'
 +
  xmlns:gml='http://www.opengis.net/gml'
 +
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
  xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2
 +
  http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'>
 +
<csw:Query typeNames='csw:Record'>
 +
  <csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName>
 +
    <csw:Constraint version='1.1.0'>
 +
    <ogc:Filter>
 +
        <ogc:BBOX>
 +
          <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
 +
          <gml:Envelope>
 +
            <gml:lowerCorner>-53.0 47.2</gml:lowerCorner>
 +
            <gml:upperCorner>-52.5 47.8</gml:upperCorner>
 +
          </gml:Envelope>
 +
        </ogc:BBOX>
 +
    </ogc:Filter>
 +
  </csw:Constraint>
 +
</csw:Query>
 +
</csw:GetRecords>
 +
 
 +
</soapenv:Body>
 +
</soapenv:Envelope>
 +
</pre>
 +
 
 +
HTTP RESPONSE
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<GetRecordsResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
 +
&#x09;<SearchStatus timestamp="2018-08-28T01:59:38-04:00"/>
 +
&#x09;<SearchResults numberOfRecordsMatched="1949485" numberOfRecordsReturned="10"
 +
&#x09;&#x09;nextRecord="11">
 +
&#x09;&#x09;<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 +
&#x09;&#x09;&#x09;xmlns:ows="http://www.opengis.net/ows" xmlns:dct="http://purl.org/dc/terms/"
 +
&#x09;&#x09;&#x09;xmlns:dc="http://purl.org/dc/elements/1.1/">
 +
&#x09;&#x09;&#x09;<dc:identifier>1511078</dc:identifier>
 +
&#x09;&#x09;&#x09;<dc:title>Radarsat-1 Raw Scenes</dc:title>
 +
&#x09;&#x09;&#x09;<dc:type>dataset</dc:type>
 +
&#x09;&#x09;&#x09;<dc:subject>Satellites, Imaging,Radar, Digital Collection, Mapping, Spatial
 +
&#x09;&#x09;&#x09;&#x09;Data, Remote Sensing
 +
&#x09;&#x09;&#x09;</dc:subject>
 +
&#x09;&#x09;&#x09;<dc:subject>F1</dc:subject>
 +
&#x09;&#x09;&#x09;<dc:format>GeoTIFF</dc:format>
 +
&#x09;&#x09;&#x09;<dct:abstract>The Radarsat-1 satellite has a synthetic aperture radar(SAR)
 +
&#x09;&#x09;&#x09;&#x09;imaging instrument. The images are used internationally to manage and
 +
&#x09;&#x09;&#x09;&#x09;monitor the Earth's resources and to monitor global climate change, as
 +
&#x09;&#x09;&#x09;&#x09;well as in many other commercial and scientific applications. RADARSAT-1
 +
&#x09;&#x09;&#x09;&#x09;is ideally suited to supporting these tasks because of its wide range of
 +
&#x09;&#x09;&#x09;&#x09;beams, SAR technology, frequent revisit period, high-quality products and
 +
&#x09;&#x09;&#x09;&#x09;fast, efficient delivery. Each of Radarsat-1's seven beam modes offer a
 +
&#x09;&#x09;&#x09;&#x09;different image resolution. The modes include Fine, which covers an area
 +
&#x09;&#x09;&#x09;&#x09;of 50 km × 50 km (31 mi × 31 mi) (2,500 km2 (970 sq mi)) with a resolution
 +
&#x09;&#x09;&#x09;&#x09;of 10 metres (33 ft); Standard, which covers an area of 100 km × 100 km
 +
&#x09;&#x09;&#x09;&#x09;(62 mi × 62 mi) (10,000 km2 (3,900 sq mi)) and has a resolution of 30 metres
 +
&#x09;&#x09;&#x09;&#x09;(98 ft); and ScanSAR wide, which covers a 500 km × 500 km (310 mi × 310 mi)
 +
&#x09;&#x09;&#x09;&#x09;(250,000 km2 (97,000 sq mi)) area with a resolution of 100 metres (330 ft).
 +
&#x09;&#x09;&#x09;&#x09;Radarsat-1 also has the unique ability to direct its beam at different angles.
 +
&#x09;&#x09;&#x09;</dct:abstract>
 +
&#x09;&#x09;&#x09;<ows:BoundingBox>
 +
&#x09;&#x09;&#x09;&#x09;<ows:LowerCorner>32.664853 -3.055419</ows:LowerCorner>
 +
&#x09;&#x09;&#x09;&#x09;<ows:UpperCorner>33.172058 -2.442097</ows:UpperCorner>
 +
&#x09;&#x09;&#x09;</ows:BoundingBox></csw:SummaryRecord>
 +
&#x09;&#x09;&#x09;...
 +
&#x09;&#x09;</csw:SummaryRecord>
 +
&#x09;</SearchResults>
 +
</GetRecordsResponse>
 +
</pre>
 +
 
 +
=== Chercher une seule image / CSW GetRecordById ===
 +
 
 +
URL (GET REQUEST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog?request=GetRecordById&id=1515826&service=CSW&version=2.0.2</code>
 +
 
 +
HTTP RESPONSE
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99">
 +
<GetRecordByIdResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
 +
&#x09;<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 +
&#x09;&#x09;xmlns:ows="http://www.opengis.net/ows" xmlns:dct="http://purl.org/dc/terms/"
 +
&#x09;&#x09;xmlns:dc="http://purl.org/dc/elements/1.1/">
 +
&#x09;&#x09;<dc:identifier>1515826</dc:identifier>
 +
&#x09;&#x09;<dc:title>Radarsat-1 Raw Scenes</dc:title>
 +
&#x09;&#x09;<dc:type>dataset</dc:type>
 +
&#x09;&#x09;<dc:subject>
 +
&#x09;&#x09;&#x09;Satellites, Imaging,Radar, Digital Collection, Mapping, Spatial Data, Remote Sensing
 +
&#x09;&#x09;</dc:subject>
 +
&#x09;&#x09;<dc:subject>F5</dc:subject>
 +
&#x09;&#x09;<dc:format>GeoTIFF</dc:format>
 +
&#x09;&#x09;<dct:abstract>
 +
&#x09;&#x09;&#x09;The Radarsat-1 satellite has a synthetic aperture radar(SAR) imaging instrument.
 +
&#x09;&#x09;&#x09;The images are used internationally to manage and monitor the Earth's resources and
 +
&#x09;&#x09;&#x09;to monitor global climate change, as well as in many other commercial and scientific
 +
&#x09;&#x09;&#x09;applications. RADARSAT-1 is ideally suited to supporting these tasks because of its
 +
&#x09;&#x09;&#x09;wide range of beams, SAR technology, frequent revisit period, high-quality products
 +
&#x09;&#x09;&#x09;and fast, efficient delivery. Each of Radarsat-1's seven beam modes offer a different
 +
&#x09;&#x09;&#x09;image resolution. The modes include Fine, which covers an area of 50 km × 50 km
 +
&#x09;&#x09;&#x09;(31 mi × 31 mi) (2,500 km2 (970 sq mi)) with a resolution of 10 metres (33 ft);
 +
&#x09;&#x09;&#x09;Standard, which covers an area of 100 km × 100 km (62 mi × 62 mi) (10,000 km2
 +
&#x09;&#x09;&#x09;(3,900 sq mi)) and has a resolution of 30 metres (98 ft); and ScanSAR wide, which
 +
&#x09;&#x09;&#x09;covers a 500 km × 500 km (310 mi × 310 mi) (250,000 km2 (97,000 sq mi)) area with a
 +
&#x09;&#x09;&#x09;resolution of 100 metres (330 ft). Radarsat-1 also has the unique ability to direct
 +
&#x09;&#x09;&#x09;its beam at different angles.
 +
&#x09;&#x09;</dct:abstract>
 +
&#x09;&#x09;<ows:BoundingBox>
 +
&#x09;&#x09;&#x09;<ows:LowerCorner>-112.436916 40.41178</ows:LowerCorner>
 +
&#x09;&#x09;&#x09;<ows:UpperCorner>-111.769493 40.977687</ows:UpperCorner>
 +
&#x09;&#x09;</ows:BoundingBox>
 +
&#x09;</csw:SummaryRecord>
 +
</GetRecordByIdResponse>
 +
</pre>
 +
 
 +
=== Commandez cette image / WCS DescribeCoverage ===
 +
 
 +
Le message WCS DescribeCoverage est utilisé pour la commande et peut être envoyé sous forme de demande POST ou GET (recommandée).
 +
 
 +
URL (GET REQUEST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs?SERVICE=WCS&version=2.0.1&REQUEST=DescribeCoverage&coverageId=5117806&CollectionId=Radarsat1</code>
 +
 
 +
URL (POST)
 +
 
 +
<code style="background-color:#EEFFCC; border-color:#AACC99">https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs</code>
 +
 
 +
HTTP POST - HEADER
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99"><wcs:DescribeCoverage service="WCS" version="2.0.1"
 +
&#x09;xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 +
&#x09;xsi:schemaLocation="http://www.opengis.net/wcs/2.0
 +
&#x09;http://schemas.opengis.net/wcs/2.0/wcsAll.xsd"
 +
&#x09;xmlns="http://www.opengis.net/wcs/2.0"
 +
&#x09;xmlns:wcs="http://www.opengis.net/wcs/2.0">
 +
&#x09;<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
 +
</wcs:DescribeCoverage></pre>
 +
 
 +
HTTP RESPONSE
 +
 
 +
<pre style="background-color:#EEFFCC; border-color:#AACC99"><wcs:CoverageDescriptions xmlns:wcs="http://www.opengis.net/wcs/2.0">
 +
&#x09;<wcs:CoverageDescription xmlns:gml="http://www.opengis.net/gml/3.2"
 +
&#x09;&#x09;gml:id="C380b242c-b324-4364-9ea5-7798f2f5e648">
 +
&#x09;&#x09;<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
 +
&#x09;&#x09;<metadata xmlns="http://www.opengis.net/gmlcov/1.0"
 +
&#x09;&#x09;&#x09;xmlns:xlink="http://www.w3.org/1999/xlink"
 +
&#x09;&#x09;&#x09;xlink:href="https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/
 +
&#x09;&#x09;&#x09;WESSearch/csw/Radarsat1?request=GetRecordById&amp;Id=5117806&amp;
 +
&#x09;&#x09;&#x09;version=2.0.2&amp;outputSchema=http://schema.compusult.net/services/
 +
&#x09;&#x09;&#x09;2.2.0/WESSearch/csw&amp;service=CSW" xlink:title="CSW GetRecordById"
 +
&#x09;&#x09;&#x09;xlink:type="simple"/>
 +
&#x09;&#x09;<gml:domainSet>
 +
&#x09;&#x09;&#x09;<gml:Polygon gml:id="C06023ce2-944d-478f-a391-4e6736c53f2e"
 +
&#x09;&#x09;&#x09;&#x09;srsDimension="2" srsName="EPSG:4326"
 +
&#x09;&#x09;&#x09;&#x09;xmlns:gml="http://www.opengis.net/gml/3.2">
 +
&#x09;&#x09;&#x09;&#x09;<gml:exterior>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<gml:LinearRing>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<gml:posList>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-74.369379 45.510773
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-81.488928 46.423416
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-82.487757 41.524618
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-75.922503 40.612456
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;-74.369379 45.510773
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;</gml:posList>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</gml:LinearRing>
 +
&#x09;&#x09;&#x09;&#x09;</gml:exterior>
 +
&#x09;&#x09;&#x09;</gml:Polygon>
 +
&#x09;&#x09;</gml:domainSet>
 +
&#x09;&#x09;<rangeType xmlns="http://www.opengis.net/gmlcov/1.0"/>
 +
&#x09;&#x09;<wcs:ServiceParameters>
 +
&#x09;&#x09;&#x09;<wcs:CoverageSubtype>GridCoverage</wcs:CoverageSubtype>
 +
&#x09;&#x09;&#x09;<wcs:nativeFormat/>
 +
&#x09;&#x09;&#x09;<wcs:Extension>
 +
&#x09;&#x09;&#x09;&#x09;<DestinationTypes xmlns="http://schema.compusult.net/services/
 +
&#x09;&#x09;&#x09;&#x09;&#x09;2.7.0/WESOrder/wcs">
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Type>Download</Type>
 +
&#x09;&#x09;&#x09;&#x09;</DestinationTypes>
 +
&#x09;&#x09;&#x09;&#x09;<Parameter
 +
&#x09;&#x09;&#x09;&#x09;&#x09;xmlns="http://schema.compusult.net/services/2.7.0/WESOrder">
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Name>packagingFormat</Name>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Title>Packaging Format</Title>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Packaging Format</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Default>ZIP</Default>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>ZIP</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Zip</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Zip</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TAR</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TARGZ</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar/GZ</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar/GZ</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TAR</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;<Choices>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Value>TARGZ</Value>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Display>Tar/GZ</Display>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<Description>Tar/GZ</Description>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;&#x09;<DependentParameters/>
 +
&#x09;&#x09;&#x09;&#x09;&#x09;</Choices>
 +
&#x09;&#x09;&#x09;&#x09;</Parameter>
 +
&#x09;&#x09;&#x09;</wcs:Extension>
 +
&#x09;&#x09;</wcs:ServiceParameters>
 +
&#x09;</wcs:CoverageDescription>
 +
</wcs:CoverageDescriptions>
 +
</pre>
 +
 
 +
=== Exemple de commande de bout en bout (avec Python) ===
 +
 
 +
Découvrez notre [https://github.com/nrcan-eodms-sgdot-rncan/eodms-ogc-client-py/wiki module Python Open Source sur GitHub] pour rechercher les services CSW et WCS afin de commander des images de l'EODMS.
 +
 
 +
== Automatisation web avec Katalon ==
 +
 
 +
Un [https://github.com/nrcan-eodms-sgdot-rncan/eodms-scene-retriever Outil Katalon] pour automatiser les clics de l'utilisateur du site Web pour la recherche et la commande.
 +
 
 
</multilang>
 
</multilang>

Latest revision as of 10:24, 21 December 2019


Overview[edit | edit source]

EODMS has several options for search and download API access as well as automation i.e. Machine 2 Machine.

As part of the Directive on Open Government, the Government of Canada is committed to improving its #OpenData posture. EODMS API access aims to promote practices per the GC Standards on APIs

To find more GC APIs, visit the GC API site.

Api-logo.png

https://api.canada.ca/en/homepage

OpenSearch API (for RADARSAT-1 and NAPL)[edit | edit source]

This OpenSearch API is the latest effort to align with giants like ESA and their [Copernicus Data Hub OpenSearch access program] to improve RADARSAT-1 access

To form a get query it would take the form of:

https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q={searchterms}

e.g.:

https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=footprint:Intersects((-130.496,54.672))

https://data.eodms-sgdot.nrcan-rncan.gc.ca/api/dhus/v1/products/Radarsat1/search?q=beginposition:[2007-08-20T00:49:50Z%20TO%202007-08-22T10:50:50Z]

SEARCH TERMS

producttype which can be SCN,SGF, or SLC for Radarsat-1
sensoroperationalmode which refers to the beam mnemonic like EH3, F1, W2, SCWB, SCNA etc..
polarisationmode which is only HH for R1
ingestiondate
beginposition
endposition
footprint  (point and polygon)

The search terms can be used together with AND and OR. There is also support for wildcards, free text searching and other operators:

Wildcard  Description

*         any sequence of zero or more characters
?         any one character
Operator  Description

AND       Narrow search and retrieve records containing all of the words it separates.
OR        Broaden search and retrieve records containing any of the words it separates.
NOT       Narrow search and retrieve records that do not contain the term following it.
( )       Group words or phrases when combining Boolean phrases and to show the order in which relationships should be considered.

Heavily modeled after the ESA Data hubs so the following should apply: https://colhub.copernicus.eu/userguide/OpenSearchAPI

OGC APIs[edit | edit source]

The following are usage samples of EODMS' OGC APIs with a full open source Python module on GitHub

Discover some data / CSW GetRecords[edit | edit source]

URL (POST)

Each data collection has a separate URL. The following are supported:

https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog

https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_napl_catalog

https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/RCMImageProducts

HTTP POST - HEADER (No Username/Password)

<csw:GetRecords service='CSW' version='2.0.2' maxRecords='10' startPosition='1' resultType='results' 
	outputFormat='application/xml' outputSchema='http://www.opengis.net/cat/csw/2.0.2' 
	xmlns='http://www.opengis.net/cat/csw/2.0.2' xmlns:csw='http://www.opengis.net/cat/csw/2.0.2' 
	xmlns:ogc='http://www.opengis.net/ogc' xmlns:ows='http://www.opengis.net/ows' 
	xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dct='http://purl.org/dc/terms/' 
	xmlns:gml='http://www.opengis.net/gml' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
	xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'> 
	<csw:Query typeNames='csw:Record'> 
		<csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName> 
	</csw:Query> 
</csw:GetRecords>

HTTP POST - HEADER (With Username/Password SOAP Envelope)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:Username>#####</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">#####</wsse:Password>
         </wsse:UsernameToken>
     </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>

<csw:GetRecords service='CSW' version='2.0.2' maxRecords='10' startPosition='1' resultType='results' 
	outputFormat='application/xml' outputSchema='http://www.opengis.net/cat/csw/2.0.2' 
	xmlns='http://www.opengis.net/cat/csw/2.0.2' xmlns:csw='http://www.opengis.net/cat/csw/2.0.2' 
	xmlns:ogc='http://www.opengis.net/ogc' xmlns:ows='http://www.opengis.net/ows' 
	xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dct='http://purl.org/dc/terms/' 
	xmlns:gml='http://www.opengis.net/gml' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
	xsi:schemaLocation='http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd'> 
	<csw:Query typeNames='csw:Record'> 
		<csw:ElementSetName typeNames='csw:Record'>summary</csw:ElementSetName> 
	</csw:Query> 
</csw:GetRecords>

</soapenv:Body>
</soapenv:Envelope>

HTTP RESPONSE

<?xml version="1.0" encoding="UTF-8"?> 
<GetRecordsResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
	<SearchStatus timestamp="2018-08-28T01:59:38-04:00"/>
	<SearchResults numberOfRecordsMatched="1949485" numberOfRecordsReturned="10" 
		nextRecord="11">
		<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" 
			xmlns:ows="http://www.opengis.net/ows" 
			xmlns:dct="http://purl.org/dc/terms/" 
			xmlns:dc="http://purl.org/dc/elements/1.1/">
			<dc:identifier>1511078</dc:identifier>
			<dc:title>Radarsat-1 Raw Scenes</dc:title>
			<dc:type>dataset</dc:type>
			<dc:subject>Satellites, Imaging,Radar, Digital Collection, Mapping, 
				Spatial Data, Remote Sensing
			</dc:subject>
			<dc:subject>F1</dc:subject>
			<dc:format>GeoTIFF</dc:format>
			<dct:abstract>The Radarsat-1 satellite has a synthetic aperture 
				radar(SAR) imaging instrument. The images are used internationally 
				to manage and monitor the Earth's resources and to monitor global 
				climate change, as well as in many other commercial and scientific 
				applications. RADARSAT-1 is ideally suited to supporting these 
				tasks because of its wide range of beams, SAR technology, frequent 
				revisit period, high-quality products and fast, efficient delivery. 
				Each of Radarsat-1's seven beam modes offer a different image 
				resolution. The modes include Fine, which covers an area of 50 km 
				× 50 km (31 mi × 31 mi) (2,500 km2 (970 sq mi)) with a 
				resolution of 10 metres (33 ft); Standard, which covers an area of 
				100 km × 100 km (62 mi × 62 mi) (10,000 km2 (3,900 sq mi)) and 
				has a resolution of 30 metres (98 ft); and ScanSAR wide, which 
				covers a 500 km × 500 km (310 mi × 310 mi) (250,000 km2 
				(97,000 sq mi)) area with a resolution of 100 metres (330 ft). 
				Radarsat-1 also has the unique ability to direct its beam at 
				different angles.
			</dct:abstract>
			<ows:BoundingBox>
				<ows:LowerCorner>32.664853 -3.055419</ows:LowerCorner>
				<ows:UpperCorner>33.172058 -2.442097</ows:UpperCorner>
			</ows:BoundingBox>
		</csw:SummaryRecord>
		...
	</SearchResults>
</GetRecordsResponse>

Fetch a Single Record / CSW GetRecordById[edit | edit source]

URL (GET REQUEST)

https://www.eodms-sgdot.nrcan-rncan.gc.ca/MetaManagerCSW/csw/eodms_catalog?request=GetRecordById&id=1515826&service=CSW&version=2.0.2

HTTP RESPONSE

<GetRecordByIdResponse xmlns="http://www.opengis.net/cat/csw/2.0.2">
	<csw:SummaryRecord xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" 
		xmlns:ows="http://www.opengis.net/ows" 
		xmlns:dct="http://purl.org/dc/terms/" 
		xmlns:dc="http://purl.org/dc/elements/1.1/">
		<dc:identifier>1515826</dc:identifier>
		<dc:title>Radarsat-1 Raw Scenes</dc:title>
		<dc:type>dataset</dc:type>
		<dc:subject>Satellites, Imaging,Radar, Digital Collection, Mapping, 
			Spatial Data, Remote Sensing
		</dc:subject>
		<dc:subject>F5</dc:subject>
		<dc:format>GeoTIFF</dc:format>
		<dct:abstract>The Radarsat-1 satellite has a synthetic aperture radar(SAR) 
			imaging instrument. The images are used internationally to manage and 
			monitor the Earth's resources and to monitor global climate change, 
			as well as in many other commercial and scientific applications. 
			RADARSAT-1 is ideally suited to supporting these tasks because of 
			its wide range of beams, SAR technology, frequent revisit period, 
			high-quality products and fast, efficient delivery. Each of Radarsat-1's 
			seven beam modes offer a different image resolution. The modes include 
			Fine, which covers an area of 50 km × 50 km (31 mi × 31 mi) (2,500 km2 
			(970 sq mi)) with a resolution of 10 metres (33 ft); Standard, which 
			covers an area of 100 km × 100 km (62 mi × 62 mi) (10,000 km2 (3,900 
			sq mi)) and has a resolution of 30 metres (98 ft); and ScanSAR wide, 
			which covers a 500 km × 500 km (310 mi × 310 mi) (250,000 km2 (97,000 
			sq mi)) area with a resolution of 100 metres (330 ft). Radarsat-1 also 
			has the unique ability to direct its beam at different angles.
		</dct:abstract>
		<ows:BoundingBox>
			<ows:LowerCorner>-112.436916 40.41178</ows:LowerCorner>
			<ows:UpperCorner>-111.769493 40.977687</ows:UpperCorner>
		</ows:BoundingBox>
	</csw:SummaryRecord>
</GetRecordByIdResponse>

Order that Record / WCS DescribeCoverage[edit | edit source]

The WCS DescribeCoverage message is used for ordering and can be sent as a POST or GET (recommended) request.

URL (GET REQUEST)

https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs?SERVICE=WCS&version=2.0.1&REQUEST=DescribeCoverage&coverageId=5117806&CollectionId=Radarsat1

URL (POST)

https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/WESOrder/wcs

HTTP POST - HEADER

<wcs:DescribeCoverage service="WCS" version="2.0.1"
	xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
	xsi:schemaLocation="http://www.opengis.net/wcs/2.0
	http://schemas.opengis.net/wcs/2.0/wcsAll.xsd"
	xmlns="http://www.opengis.net/wcs/2.0"
	xmlns:wcs="http://www.opengis.net/wcs/2.0">
	<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
</wcs:DescribeCoverage>

HTTP RESPONSE

<wcs:CoverageDescriptions xmlns:wcs="http://www.opengis.net/wcs/2.0">
	<wcs:CoverageDescription xmlns:gml="http://www.opengis.net/gml/3.2" 
		gml:id="C380b242c-b324-4364-9ea5-7798f2f5e648">
		<wcs:CoverageId>Radarsat1--5117806</wcs:CoverageId>
		<metadata xmlns="http://www.opengis.net/gmlcov/1.0" 
			xmlns:xlink="http://www.w3.org/1999/xlink" 
			xlink:href="https://www.eodms-sgdot.nrcan-rncan.gc.ca/wes/services/
			WESSearch/csw/Radarsat1?request=GetRecordById&Id=5117806&
			version=2.0.2&outputSchema=http://schema.compusult.net/services/
			2.2.0/WESSearch/csw&service=CSW" xlink:title="CSW GetRecordById" 
			xlink:type="simple"/>
		<gml:domainSet>
			<gml:Polygon gml:id="C06023ce2-944d-478f-a391-4e6736c53f2e" 
				srsDimension="2" srsName="EPSG:4326" 
				xmlns:gml="http://www.opengis.net/gml/3.2">
				<gml:exterior>
					<gml:LinearRing>
						<gml:posList>
							-74.369379 45.510773 
							-81.488928 46.423416 
							-82.487757 41.524618 
							-75.922503 40.612456 
							-74.369379 45.510773
						</gml:posList>
					</gml:LinearRing>
				</gml:exterior>
			</gml:Polygon>
		</gml:domainSet>
		<rangeType xmlns="http://www.opengis.net/gmlcov/1.0"/>
		<wcs:ServiceParameters>
			<wcs:CoverageSubtype>GridCoverage</wcs:CoverageSubtype>
			<wcs:nativeFormat/>
			<wcs:Extension>
				<DestinationTypes xmlns="http://schema.compusult.net/services/
					2.7.0/WESOrder/wcs">
					<Type>Download</Type>
				</DestinationTypes>
				<Parameter 
					xmlns="http://schema.compusult.net/services/2.7.0/WESOrder">
					<Name>packagingFormat</Name>
					<Title>Packaging Format</Title>
					<Description>Packaging Format</Description>
					<Default>ZIP</Default>
					<Choices>
						<Value>ZIP</Value>
						<Display>Zip</Display>
						<Description>Zip</Description>
						<DependentParameters/>
					</Choices>
					<Choices>
						<Value>TAR</Value>
						<Display>Tar</Display>
						<Description>Tar</Description>
						<DependentParameters/>
					</Choices>
					<Choices>
						<Value>TARGZ</Value>
						<Display>Tar/GZ</Display>
						<Description>Tar/GZ</Description>
						<DependentParameters/>
					</Choices>
					<Choices>
						<Value>TAR</Value>
						<Display>Tar</Display>
						<Description>Tar</Description>
						<DependentParameters/>
					</Choices>
					<Choices>
						<Value>TARGZ</Value>
						<Display>Tar/GZ</Display>
						<Description>Tar/GZ</Description>
						<DependentParameters/>
					</Choices>
				</Parameter>
			</wcs:Extension>
		</wcs:ServiceParameters>
	</wcs:CoverageDescription>
</wcs:CoverageDescriptions>

Github Repo - End-to-End OGC Order Example with Python[edit | edit source]

Checkout out our open source Python module on GitHub use the CSW and WCS APIs to order images from EODMS.

Github Repo - Web Automation with Katalon[edit | edit source]

  • A Katalon utility to automate website user clicks for searching and ordering.