OpenSearch Support

pycsw OpenSearch support is enabled by default. There are two ways to access OpenSearch depending on the deployment pattern chosen.

OGC API - Records deployment

http://localhost:8000/opensearch

CSW legacy deployment

HTTP requests must be specified with mode=opensearch in the base URL for OpenSearch requests, e.g.:

http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities

This will return the Description document which can then be autodiscovered.

OGC OpenSearch Geo and Time Extensions 1.0

pycsw supports the OGC OpenSearch Geo and Time Extensions 1.0 standard via the following conformance classes:

  • Core (GeoSpatial Service) {searchTerms}, {geo:box}, {startIndex}, {count}

  • Temporal Search core {time:start}, {time:end}

Supported Query Parameters

  • q

  • time

  • bbox

OGC OpenSearch Extension for Earth Observation

pycsw supports the OGC OpenSearch Extension for Earth Observation standard via the following conformance classes:

  • Core

Supported Query Parameters

  • eo:cloudCover

  • eo:instrument

  • eo:orbitDirection

  • eo:orbitNumber

  • eo:platform

  • eo:processingLevel

  • eo:productType

  • eo:sensorType

  • eo:snowCover

  • eo:spectralRange

Mapping of non-19115 Queryable Mappings

The following queryables are implemented as faceted keywords given they are not implemented in generic geospatial metadata standards:

  • eo:productType

  • eo:orbitNumber

  • eo:orbitDirection

  • eo:snowCover

  • eo:processingLevel

This means metadata ingested into pycsw must have these fields implemented as keywords, as per the examples below:

<!-- ISO 19115 -->
<gmd:keyword>
  <gco:CharacterString>eo:productType:S2MSI2A</gco:CharacterString>
</gmd:keyword>
<gmd:keyword>
  <gco:CharacterString>eo:orbitNumber:50</gco:CharacterString>
</gmd:keyword>
<gmd:keyword>
  <gco:CharacterString>eo:orbitDirection:DESCENDING</gco:CharacterString>
</gmd:keyword>
<gmd:keyword>
  <gco:CharacterString>eo:snowCover:0.0</gco:CharacterString>
</gmd:keyword>
<gmd:keyword>
  <gco:CharacterString>eo:procesingLevel:Level-2A</gco:CharacterString>
</gmd:keyword>
<!-- Dublin Core -->
<dc:subject>eo:productType:S2MSI2A</dc:subject>
<dc:subject>eo:orbitNumber:50</dc:subject>
<dc:subject>eo:orbitDirection:DESCENDING</dc:subject>
<dc:subject>eo:snowCover:0.0</dc:subject>
<dc:subject>eo:procesingLevel:Level-2A</dc:subject>

OpenSearch Temporal Queries Implementation

By default, pycsw’s OpenSearch temporal support will query the Dublin Core dc:date property as a time instant/single point in time. To enable temporal extent search, set profiles=apiso which will query the temporal extents of a metadata record (apiso:TempExtent_begin and apiso:TempExtent_end).

At the HTTP API level, time is supported via either time=t1/t2 or start=t1&stop=t2. If the time parameter is present, it will override the start and stop parameters respectively.