The Service Catalog (ServCat) is a simple metadata catalog. It holds capabilities and service access information on mainly OGC web services. It can be filled and searched using a REST API.

For services provided with our spatial data infrastructure an instance of the Servcat is operated at https://marine-data.de/servcat/. For testing we refer to https://marine-data.de/preview/servcat/. ServCat is used as metadata backend for viewers based on our Visual Exploration Framework (VEF). For example you can freely explore services and layers here: https://marine-data.de/?site=viewer.

The source code is accessible on Gitlab. Contact o2a-uspport@awi.de for collaboration.

Searching the catalog

The catalog holds three main types of entities:

Both Services and Layers can be searched by temporal and geographical extent. It is also possible to search in service and layer metadata. For model structure and semantics habe a look at the models section. Please see also API documentation for interface details.

Example: search for layers providing data beginning with 2010

Set the start_date query parameter as UTC time string.

https://marine-data.de/servcat/rest/layers?start_date=2010-01-01T00:00:00

Optionally use offset and limit query parameters to scroll through search results.

Example: search for layers providing temperature

Add the search query parameter to your constraints. To search for "temperature" in the title of a Layer you can use something like this

https://marine-data.de/servcat/rest/layers?start_date=2010-01-01T00:00:00&search=title==*temperature*&offset=0&limit=10

Search operators

All metadata fields can be queried in "field <operator> value" syntax. Supported operators are listed in following table. For details see https://github.com/jirutka/rsql-parser.


OperatorExampleComment
LogicalAND, OR
Semicolon ; can be used as shorthand AND. Comma can be used as shorthand OR.
Equal to==

https://marine-data.de/servcat/rest/layers?search=title==*temperature*

https://marine-data.de/servcat/rest/layers?search=parent_name=="Maximum Shear Stress"

Compares the whole field value. Use *value* to find value anywhere in the fields content.
Not equal to!=https://marine-data.de/servcat/rest/layers?search=title!=*temperature*
Less than<https://marine-data.de/servcat/rest/layers?search=date_time_start<2020-01-01T00:00:00
Less than or equal to<=

https://marine-data.de/servcat/rest/layers?search=date_time_start<=2020-01-01T00:00:00


Greater than>https://marine-data.de/servcat/rest/layers?search=date_time_start>2020-01-01T00:00:00
Greater than or equal to>=https://marine-data.de/servcat/rest/layers?search=date_time_start>=2020-01-01T00:00:00
In=in=https://marine-data.de/servcat/rest/layers?search=service.provider.acronym=in=(AWI,HZG)&limit=100Compares any value (e.g. AWI and HZG) in brackets with field values.
Not in=out=

Contains=contains=https://marine-data.de/servcat/rest/layers?search=available_crs=contains=(EPSG:3857)Compares a model array field or geometries.

Registration for service publication

Searching the catalog is open and freely available. To register your services and layers in the catalog, you need to register yourself or organization as a service provider. Simply write an email to o2a-support@awi.de and state your interest to get registered. You will get an API key which enables you to create, update or remove your registered services.

Models 

Service

JSON structure holding all the information related to the OGC Web Service itself, and its layers (see Layer section for more details).

{
    "abstract": "",
    "version": "1.3.0",
    "url": "https://maps.awi.de/services/test/marehub/wms",
    "name": "TEST WMS",
    "title": "TEST Web Map Services at Alfred Wegener Institute",
    "software": "GeoServer",
    "type": "WMS",
    "capabilities": "<WMS_Capabilities version=\"1.3.0\">...</WMS_Capabilities>",
    "available_crs": [
        "EPSG:3857",
        "EPSG:4326"
    ],
    "contact": {
        "name": "Andreas Walter",
        "email": "maps@awi.de"
    },
    "date_time_start": "1987-06-22T10:00:00.000Z",
    "date_time_end": "2020-03-17T23:58:00.000Z",
    "filter_type": "OGC",
    "keywords": [
        "WFS",
        "WMS"
    ],
    "license": "CC-BY 4.0",
    "maxX": 180.0,
    "maxY": 90.0,
    "minX": -180.0,
    "minY": -90.0,
    "layers": [
        {
            "name": "test_salinity",
            "title": "Salinity",
            "parent_name": "TEST NAME",
            "abstract": "",
            "attribute_fields": [],
            "available_crs": [
                "EPSG:3995",
                "EPSG:3857",
                "EPSG:3031",
                "EPSG:4326",
                "EPSG:3411",
                "EPSG:3412"
            ],
            "available_styles": [
                "marehubSalinity1"
            ],
            "axis_names": [],
            "data_type": "",
            "date_time_start": "1987-06-22T10:00:00.000Z",
            "date_time_end": "2020-03-17T23:58:00.000Z",
            "esri_id": null,
            "legend_url": "http://maps.awi.de/services/test/marehub/wms?request=GetLegendGraphic&format=image/png&width=20&height=20&layer=test_salinity",
            "processing_level": "",
            "metadata_urls": [
                "https://maps.awi.de/data/projects/marehub/test_salinity/metadata.json"
            ],
            "source_urls": [
                "https://maps.awi.de/data/projects/marehub/test_salinity/data.json"
            ],
            "output_formats": [],
            "maxX": 180.0,
            "maxY": 90.0,
            "minX": -180.0,
            "minY": -90.0
        }
    ]
}


keyvalue typecommentexample
urlstringDomain path to OGC Web Service."http://maps.awi.de/services/common/marehub/wms"
versionstringVersion of the OGC Web Service."1.3.0"
typestringType of the OGC Web Service."WMS" or "WFS" or "WCS"
softwarestring

Name of the application used to provide the OGC Web Service. Only one of the following are supported (yet):

  • GeoServer
  • ESRI
  • rasdaman
"GeoServer"
namestringName of OGC Web Service."Web Map Services at Alfred Wegener Institute"
titlestringTitle of the OGC Web Service."Web Map Services at Alfred Wegener Institute"
abstractstringShort description of the content of the OGC Web Service."This WMS provides different layers in the context of the MareHub project"
capabilitiesstringFull string response from GetCapabilities request of the OGC Web Services."<WMS_Capabilities version="1.3.0">...</WMS_Capabilities>"
contactJSON ObjectSee "Contact" for details.See Contact section for more details
available_crsJSON ArrayList of available coordinate reference systems. First in the array will used as default. Must be a valid EPSG Code.

["EPSG:3857", "EPSG:4326", "EPSG:3995", "EPSG:3031"]

date_time_start

stringMinimal temporal extent of all layers provided by the OGC Web Service in ISO 8601."1987-06-22 10:00:00.000Z"
date_time_endstringMinimal temporal extent of all layers provided by the OGC Web Service in ISO 8601."2020-03-17 23:58:00.000Z"
filter_typestring

Type of possible filter syntax to use. Yet, one of the following is supported:

  • OGC
  • CQL
"OGC"
keywordsJSON ArrayList of listed keywords helping to find this OGC Web Service.

["WMS", "WFS", "Salinity"]

licensestringLicense / AccessConstraints of the OGC Web Service."CC-BY 4.0"
maxXfloatMaximum Longitude/X/East in decimal degree180
maxYfloatMaximum Latitude/Y/North in decimal degree90
minXfloatMinimum Longitude/X/East in decimal degree-180
minYfloatMaximum Latitude/Y/South in decimal degree90
layersJSON ArrayList of ServCat Layer JSON Objects. See "Layer" for more details.See Layer section for more details

Layer

JSON structure holding all information related to one layer of one OGC Web Service.

{
    "name": "test_salinity",
    "title": "Salinity",
    "parent_name": "TEST NAME",
    "abstract": "",
    "attribute_fields": [],
    "available_crs": [
        "EPSG:3995",
        "EPSG:3857",
        "EPSG:3031",
        "EPSG:4326",
        "EPSG:3411",
        "EPSG:3412"
    ],
    "available_styles": [
        "marehubSalinity1"
    ],
    "axis_names": [],
    "data_type": "",
    "date_time_start": "1987-06-22T10:00:00.000Z",
    "date_time_end": "2020-03-17T23:58:00.000Z",
    "esri_id": null,
    "legend_url": "http://maps.awi.de/services/test/marehub/wms?request=GetLegendGraphic&format=image/png&width=20&height=20&layer=test_salinity",
    "processing_level": "",
    "metadata_urls": [
        "https://maps.awi.de/data/projects/marehub/test_salinity/metadata.json"
    ],
    "source_urls": [
        "https://maps.awi.de/data/projects/marehub/test_salinity/data.json"
    ],
    "output_formats": [],
    "maxX": 180.0,
    "maxY": 90.0,
    "minX": -180.0,
    "minY": -90.0
}


keyvalue typecommentexample
namestringName of the OGC Web Service Layer."measurements_salinity"
titlestringTitle of the OGC Web Service Layer."Salinity"
parent_namestringName of this Layers parent Layer."Web Map Services at Alfred Wegener Institute"
abstractstringShort description of this layers content."This Layer provides salinity measurements in the context of the MareHub project"
attribute_fieldsJSON ArrayList of ServCat AttributeField JSON Objects. See "AttributeFields" for more details.See AttributeField section for more details
available_crsJSON ArrayList of available coordinate reference systems. First in the array will used as default. Must be a valid EPSG Code.

["EPSG:3857", "EPSG:4326", "EPSG:3995", "EPSG:3031"]

available_stylesJSON ArrayList of available style names. First is used as default.["marehubSalinity1"]
axis_namesJSON ArrayList of axis names. Only used in "WCS".["longitude", "latitude"]

date_time_start

stringMinimal temporal extent of all layers provided by the OGC Web Service in ISO 8601."1987-06-22 10:00:00.000Z"
date_time_endstringMinimal temporal extent of all layers provided by the OGC Web Service in ISO 8601."2020-03-17 23:58:00.000Z"
esri_idstringESRI is using integer values to identify there layers.0
legend_urlstringURL of either one of following, a GetLegend request or a URL to an image, to provide a legend image to this layer."http://maps.awi.de/services/common/marehub/wms?request=GetLegendGraphic&format=image/png&width=20&height=20&layer=measurements_salinity"
metadata_urls


source_urls


output_formats


maxXfloatMaximum Longitude/X/East in decimal degree180
maxYfloatMaximum Latitude/Y/North in decimal degree90
minXfloatMinimum Longitude/X/East in decimal degree-180
minYfloatMaximum Latitude/Y/South in decimal degree90

AttributeField

JSON structure holding one attribute column / field description.

{
	"name": "event_name",
	"attribute_type": "string"
}


keyvalue typecommentexample
namestringName of the attribute fields / columns"event_name"
attribute_typestringData type"string"

Contact

JSON structure holding one contact name and email

{ 
	"name": "Andreas Walter", 
	"email": "maps@awi.de" 
}


keyvalue typecommentexample
namestringName of Contact Person."Andreas Walter"
emailstringE-Mail address of the contact."maps@awi.de"