Publishing metadata to OGC API - Records¶
OGC API - Records provides geospatial data access functionality to vector data.
To add vector data to pygeoapi, you can use the dataset example in Configuration as a baseline and modify accordingly.
Providers¶
pygeoapi core record providers are listed below, along with a matrix of supported query parameters.
Provider |
properties (filters) |
resulttype |
q |
bbox |
datetime |
sortby |
properties (display) |
transactions |
---|---|---|---|---|---|---|---|---|
ElasticsearchCatalogue |
✅ |
results/hits |
✅ |
✅ |
✅ |
✅ |
❌ |
|
TinyDBCatalogue |
✅ |
results/hits |
✅ |
✅ |
✅ |
✅ |
✅ |
Below are specific connection examples based on supported providers.
Connection examples¶
ElasticsearchCatalogue¶
Note
Requires Python packages elasticsearch and elasticsearch-dsl
Note
Elasticsearch 7 or greater is supported.
To publish an Elasticsearch index, the following are required in your index:
indexes must be documents of valid OGC API - Records GeoJSON Features
index mappings must define the GeoJSON
geometry
as ageo_shape
providers:
- type: record
name: ElasticsearchCatalogue
data: http://localhost:9200/some_metadata_index
id_field: identifier
time_field: datetimefield
TinyDBCatalogue¶
Note
Requires Python package tinydb
To publish a TinyDB index, the following are required in your index:
indexes must be documents of valid OGC API - Records GeoJSON Features
providers:
- type: record
editable: true|false # optional, default is false
name: TinyDBCatalogue
data: /path/to/file.db
id_field: identifier
time_field: datetimefield
Metadata search examples¶
overview of record collection * http://localhost:5000/collections/metadata-records
queryables * http://localhost:5000/collections/foo/queryables
browse records * http://localhost:5000/collections/foo/items
paging * http://localhost:5000/collections/foo/items?offset=10&limit=10
CSV outputs * http://localhost:5000/collections/foo/items?f=csv
query records (spatial) * http://localhost:5000/collections/foo/items?bbox=-180,-90,180,90
query records (attribute) * http://localhost:5000/collections/foo/items?propertyname=foo
query records (temporal) * http://localhost:5000/collections/my-metadata/items?datetime=2020-04-10T14:11:00Z
query features (temporal) and sort ascending by a property (if no +/- indicated, + is assumed) * http://localhost:5000/collections/my-metadata/items?datetime=2020-04-10T14:11:00Z&sortby=datetime
query features (temporal) and sort descending by a property * http://localhost:5000/collections/my-metadata/items?datetime=2020-04-10T14:11:00Z&sortby=-datetime
fetch a specific record * http://localhost:5000/collections/my-metadata/items/123
Note
provider id_field values support slashes (i.e. my/cool/identifier
). The client request would then
be responsible for encoding the identifier accordingly (i.e. http://localhost:5000/collections/my-metadata/items/my%2Fcool%2Fidentifier
)