The OpenSearch Description Document
General Info
The VITO PDF OpenSearch Interface is an external interface on the VITO Product Distribution Facility (PDF) for the discovery of available EO data collections and products.
Users can discover, order and download the PROBA-V data and associated products such as SPOT-VGT data via the Product Distribution Facility (PDF). The PROBA-V Products User Manual provides information on the available EO collections and products. To enable third party applications to access the VITO PDF data, the PDF provides standard based external interface such as the OpenSearch interface. OpenSearch clients can launch requests to the VITO PDF OpenSearch Interface for EO data discovery.
Next to atom, the openSearch Interface supports GeoJSON format.
OpenSearch in practice
The table below shows some examples to help you getting started with the openSearch interface.
Applicable standards
The VITO PDF OpenSearch implementation applies to the following standards:
- OGC- 10-032r8: OGC OpenSearch Geo and Time Extensions
- OGC 13-026r8: OGC OpenSearch Extension for Earth Observation
The OpenSearch query parameters are aligned with the Earth Observations Metadata profile of Observations and Measurements (O&M EOP): OGC 10-157r4
Development of the interface is based on the CEOS OpenSearch Best Practice Document.
The compliancy of the VITO openSearch implementation wrt the CEOS Best Practices can be found here.
Clients as simple as a Web browser or as complex as an aggregated portal implementation can use these services.
The OpenSearch Description Document
The VITO PDF OSDD (OpenSearch Description Document) describes the web interface of the PDF EO product search functionality. No a priori knowledge of the interface is needed. Allowed values, maximum and minimum values or patterns to be respected by search parameters are defined in the OSDD document, allowing client applications to build a corresponding interface.
The VITO PDF OpenSearch implements the two step approach which means that the search starts with a collection level search and subsequently provides the product (granule) level search.
Overall OSDD
The overall OSDD provides the link to the collection level search (findCollections).
https://www.vito-eodata.be/openSearch/description.xml
Response Info
The OSDD response includes:
- ‘Url Template’ with type ‘application/atom+xml’ and rel(ation) ‘collection’: template for the Collection Search Request with all available collection search parameters.
- the allowed values for the search parameters.
Example Url template + parameters:
<os:Url template="http://www.vito-eodata.be/openSearch/findCollections.atom?platform={eo:platform?}&compositeType={eo:compositeType?}&instrument={eo:instrument?}&resolution={eo:resolution?}&productType={eo:productType?}&title={eo:title?}&sensorType={eo:sensorType?}&parentIdentifier={eo:parentIdentifier?}&startIndex={os:startIndex?}&count={os:count?}&startPage={os:startPage?}" type="application/atom+xml" rel="collection" indexOffset="1" pageOffset="1">
<param:Parameter name="platform" value="{eo:platform}" minimum="0" maximum="1">
<param:Option value="PV01" label="PV01"/>
<param:Option value="SPOT" label="SPOT"/>
</param:Parameter>
<param:Parameter name="compositeType" value="{eo:compositeType}" minimum="0" maximum="1">
<param:Option value="DAILY" label="DAILY"/>
<param:Option value="TEN-DAILY" label="TEN-DAILY"/>
<param:Option value="FIVE-DAILY" label="FIVE-DAILY"/>
</param:Parameter>
<param:Parameter name="instrument" value="{eo:instrument}" minimum="0" maximum="1">
<param:Option value="VGT" label="VGT"/>
<param:Option value="VG2" label="VG2"/>
</param:Parameter>
<param:Parameter name="resolution" value="{eo:resolution}" minimum="0" maximum="1">
<param:Option value="1000" label="1000"/>
<param:Option value="333" label="333"/>
<param:Option value="100" label="100"/>
</param:Parameter>
………
Collection Specific OSDD
The collection level search links to the collection specific OSDD which on its turn provides a link to the product level search (findProducts).
https://www.vito-eodata.be/openSearch/description.xml?collection={collectionID}
Where collectionID is parentIdentifier (OGC URN) for the VITO EO data collections.
Example:
Response Info
The collection specific OSDD response includes:
- an ‘Url Template’ with type ‘application/atom+xml’ and rel(ation) ‘results’ which includes a template for the Product Search Request with all available search parameters.
- the allowed values for the search parameters.
Example Url template + parameters:
<os:Url template="http://www.vito-eodata.be/openSearch/findProducts.atom?collection=urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_1KM_V001&platform={eo:platform?}&instrument={eo:instrument?}&archivingCenter={eo:archivingCenter?}&acquisitionStation={eo:acquisitionStation?}&productType={eo:productType?}&title={eo:title?}&parentIdentifier={eo:parentIdentifier?}&orbitNumber={eo:orbitNumber?}&orbitDirection={eo:orbitDirection?}&dateOfAssociation={eo:dateOfAssociation?}&cloudCover={eo:cloudCover?}&acquisitionType={eo:acquisitionType?}&snowCover={eo:snowCover?}&processingCenter={eo:processingCenter?}&creationDate={eo:creationDate?}&start={time:start?}&trelation={time:relation?}&productref={vito:productref?}&end={time:end?}&processingDate={eo:processingDate?}&modificationDate={eo:modificationDate?}&availabilityTime={eo:availabilityTime?}&processorName={eo:processorName?}&isReserved={vito:isReserved}&bbox={geo:box?}&grelation={geo:relation?}&name={geo:name?}&lat={geo:lat?}&lon={geo:lon?}&radius={geo:radius?}&geometry={geo:geometry?}&productionStatus={eo:productionStatus?}&uid={geo:uid?}&startIndex={os:startIndex?}&count={os:count?}&startPage={os:startPage?}" type="application/atom+xml" rel="results" indexOffset="1" pageOffset="1">
…..
<param:Parameter name="parentIdentifier" value="{eo:parentIdentifier}" minimum="0" maximum="1">
<param:Option value="urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_1KM_V001" label="urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_1KM_V001"/>
</param:Parameter>
<param:Parameter name="orbitNumber" value="{eo:orbitNumber}" minimum="0" maximum="1">
<param:Option value="1" label="1"/>
</param:Parameter>
<param:Parameter name="orbitDirection" value="{eo:orbitDirection}" minimum="0" maximum="1">
<param:Option value="DESCENDING" label="DESCENDING"/>
</param:Parameter>
<param:Parameter title="dateOfAssociation" name="dateOfAssociation" value="{eo:dateOfAssociation}" minimum="0" maximum="1" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|[\+\-][0-9]{2}:[0-9]{2})$"/>
<param:Parameter title="Cloud Cover (%)" name="cloudCover" value="{eo:cloudCover}" minimum="0" maximum="1" pattern="(\[|\])(100|[0-9]\d?),(100|[0-9]\d?)(\[|\])|(\[|\])?(100|[0-9]\d?)|(100|[0-9]\d?)(\[|\])?|\{(100|[0-9]\d?),(100|[0-9]\d?)\}"/>
<param:Parameter title="acquisitionType" name="acquisitionType" value="{eo:acquisitionType}" minimum="0" maximum="1">
<param:Option value="NOMINAL" label="NOMINAL"/>
</param:Parameter>
<param:Parameter title="Snow Cover (%)" name="snowCover" value="{eo:snowCover}" minimum="0" maximum="1" pattern="(\[|\])(100|[0-9]\d?),(100|[0-9]\d?)(\[|\])|(\[|\])?(100|[0-9]\d?)|(100|[0-9]\d?)(\[|\])?|\{(100|[0-9]\d?),(100|[0-9]\d?)\}"/>
<param:Parameter title="processingCenter" name="processingCenter" value="{eo:processingCenter}" minimum="0" maximum="1">
<param:Option value="VITO:PF" label="VITO:PF"/>
</param:Parameter>
…..
Collection Level Search
With this search the client can request a list of available collections with respect to the given search criteria.
The search request can be done by issuing a HTTP GET call on the findCollections.atom servlet, which is available according the following OpenSearch URL template:
https://www.vito-eodata.be/openSearch/findCollections.atom?platform={eo:platform?}&compositeType={eo:compositeType?}&instrument={eo:instrument?}&resolution={eo:resolution?}&productType={eo:productType?}&title={eo:title?}&sensorType={eo:sensorType?}&parentIdentifier={eo:parentIdentifier?}&startIndex={os:startIndex?}&count={os:count?}&startPage={os:startPage?}"
Example:
GET https://www.vito-eodata.be/openSearch/findCollections?resolution=333
When no parameter is provided with the request, the full list of accessible collections is returned.
The parameters and possible values are listed in the OSDD response and depends on the authorisation of the user. Only the collections and the corresponding parameters which are accessible by the user shall be returned by the search filter.
Response Info
The collection level search response includes:
- General info eg. total results, startIndex, itemsPerPage, ….
- Information for each entry:
- General info eg. title, id, summary, ….
- Link to the VITO collection with rel(ation) ‘alternate’ and type ‘text/html’
- Link to the collection INSPIRE metadata with rel(ation) ’via’ and type ‘application/vnd.iso.19139+xml’
Example response:
….
<atom:title>Search results feed for root Collection.</atom:title>
<atom:subtitle>Number of results: 5</atom:subtitle>
<atom:id>http://www.vito-eodata.be/openSearch/findCollections</atom:id>
<atom:generator version="0.1" uri="http://www.vito-eodata.be/openSearch/findCollections?resolution=333">root collection</atom:generator>
<atom:updated>2017-02-06T02:42:37.823Z</atom:updated>
<os:totalResults>5</os:totalResults>
<os:startIndex>1</os:startIndex>
<os:itemsPerPage>5</os:itemsPerPage>
<os:Query role="request" eo:resolution="333"/>
<atom:link title="self" href="http://www.vito-eodata.be/openSearch/findCollections?resolution=333" rel="self" type="application/atom+xml"/>
<atom:link title="Collection description" href="http://www.vito-eodata.be/openSearch/description.xml" rel="search" type="application/opensearchdescription+xml"/>
<atom:link title="first" href="http://www.vito-eodata.be/openSearch/findCollections?resolution=333&startIndex=1" rel="first" type="application/atom+xml"/>
<atom:link title="last" href="http://www.vito-eodata.be/openSearch/findCollections?resolution=333&startIndex=1" rel="last" type="application/atom+xml"/>
<atom:entry>
<atom:title>S1 TOA - 300 m</atom:title>
<atom:id>urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001</atom:id>
<dc:identifier>urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001</dc:identifier>
<atom:published>2012-06-01T12:00:00Z</atom:published>
<atom:updated>2017-02-06T00:00:00Z</atom:updated>
<atom:summary>Collection of VGT_S1__3A products</atom:summary>
<atom:link href="http://www.vito-eodata.be/collections/srv/eng/main.home?uuid=2dc3d0e4-a731-11e2-9e96-0800200c9a66" rel="alternate" type="text/html"/>
<atom:link title="URL for querying the urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001" href="http://www.vito-eodata.be/openSearch/description.xml?collection=urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001" rel="alternate" type="application/opensearchdescription+xml"/>
<atom:link href="http://www.vito-eodata.be/openSearch/description.xml?collection=urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001" rel="search" type="application/opensearchdescription+xml"/>
<atom:link title="Collection Catalogue Entry" href="http://www.vito-eodata.be/collections/srv/eng/xml_iso19139?uuid=urn:ogc:def:EOP:VITO:PROBAV_S1-TOA_333M_V001" rel="via" type="application/vnd.iso.19139+xml"/>
</atom:entry>
Product Level Search
With this search the client can request a list of accessible products within a collection with respect to the given search criteria.
The search request can be done by issuing a HTTP GET call on the findProducts servlet, which is available according the following OpenSearch URL template:
https://www.vito-eodata.be/openSearch/findProducts?collection={collection?}&...
With mandatory parameter {collection} defined as the parentIdentifier value of the collection.
The exact URL template depends on the collection definition which is available in the collection specific OSDD for the given collection.
Example:
Response Info
The product level search response includes:
- General info eg. total results, startIndex, itemsPerPage, ….
- Information for each entry:
- General info eg. title, id, summary, ….
- Link to WMS images (Red band and NDVI) with rel ‘icon’ and title “Red band”/”NDVI band”
- Link to the product INSPIRE metadata with rel ‘alternate’ and title “Inspire” and type ‘
- Link to the product HMA metadata with rel ‘via’ and title “HMA” and type “application/gml+xml”
- Link to retrieve the full metadata of the product with rel ‘alternate’ and title “URL for retrieving full details of the product: {productID}
- Data access URL with the rel ‘enclosure’ and type “application/metalink+xml”
- Product metadata (O&M EOP, OGC 10-157r4)
Direct Product Search
A direct product search can be performed using the unique identifier of the product, together with the collection parentidentifier,
Example:
Direct Product Search for GeoJSON output format: