Basics of OGC EO Dataset Metadata GeoJSON

The metadata encoding defined in the OGC EO Dataset Metadata GeoJSON(-LD) standard satisfies the following design goals:

  • Feature-based GeoJSON model: The model maximizes reuse of pre-existing standardized property names.

  • Simplicity: The standard provides a simpler, overarching exchange format integrating comments from the Committee on Earth Observation Satellites (CEOS) Working Group on Information Systems and Services (WGISS) community.

  • Multiple use cases: The metadata model supports metadata for an acquisition, for a simple product derived from one acquisition, or for a synthetic product.

This tutorial focuses only on the EO GeoJSON encoding.

Configuring GeoServer for EO-GeoJSON

At the time of writing this tutorial, GeoServer is the Reference Implementation for this standard. GeoServer can be configured to export metadata conforming to the the OGC EO Dataset Metadata GeoJSON(-LD) standard by installing the Features-Templating Extension.

The following instructions have been tested with GeoServer 2.24.

Once the Feature Templating extension has been installed, configure a data source such as the following properties file to serve the metadata as a GeoServer layer.

For simplicity, name it metadata and place it in the cite namespace, so that it can be accessed through the identifier cite:metadata.

1
2
3
 _=id:Integer,identifier:String,status:String,title:String,date:String,updated:String,platform_id:String,platform_name:String,described_by:String,location:Geometry:srid=4326
 metadata.1=1|http://example.org/record/1|ARCHIVED|Example metadata 1|2021-01-26T11:30:18Z|2021-01-26T11:30:18Z|https://earth.esa.int/concept/sentinel-1|Sentinel-1|http://geoserver.org|POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
 metadata.2=2|http://example.org/record/2|ARCHIVED|Example metadata 2|2021-01-26T11:30:18Z|2021-01-26T11:30:18Z|https://earth.esa.int/concept/sentinel-2|Sentinel-2|http://geoserver.org|POLYGON ((50 30, 60 60, 40 60, 30 40, 50 30))

Thereafter, add a feature template as described here.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  {
  "type": "Feature",
  "id": "${identifier}",
  "geometry": "${location}",
  "properties": {
      "status": "${status}",
          "identifier": "${identifier}",
          "title": "${title}",
          "date": "${date}",
          "updated": "${updated}",
          "acquisitionInformation": [
              {
                  "platform": {
                      "id": "${platform_id}",
                      "platformShortName": "${platform_name}"
                  },
          "acquisitionParameters": {
          "beginningDateTime": "${date}",
          "endingDateTime": "${date}",
          "acquisitionType": "NOMINAL"
          }
              }
          ],
      "productInformation": {
      "availabilityTime": "${updated}"
      },
      "offerings": [
          {
              "code":"http://www.opengis.net/spec/owc-geojson/1.0/req/wms",
              "operations": [
              {
                  "code":"urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
                  "method":"GET",
                  "href":"http://example.org/wms?REQUEST=GetCapabilities&version=1.3.0&service=WMS"
              }
              ]
          }
      ],
          "links": {
              "describedBy": [
                  {
                      "href": "https://zenodo.org/record/1209633"
                  }
              ]
          }
  }
  }

Once the feature template has been added to GeoServer, next associate the template with the layer containing the metadata (cite:metadata) and set the template to be applied to the GeoJSON output format.

You can now access the layer through the following URL:

http://localhost:8080/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=cite%3Ametadata&maxFeatures=50&outputFormat=application%2Fjson

The response should be as shown below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  {
  "type": "FeatureCollection",
  "features": [
      {
      "type": "Feature",
      "id": "http://example.org/record/1",
      "geometry": {
          "type": "Polygon",
          "coordinates": [
          [
              [
              30,
              10
              ],
              [
              40,
              40
              ],
              [
              20,
              40
              ],
              [
              10,
              20
              ],
              [
              30,
              10
              ]
          ]
          ]
      },
      "properties": {
          "status": "ARCHIVED",
          "identifier": "http://example.org/record/1",
          "title": "Example metadata 1",
          "date": "2021-01-26T11:30:18Z",
          "updated": "2021-01-26T11:30:18Z",
          "acquisitionInformation": [
          {
              "platform": {
              "id": "https://earth.esa.int/concept/sentinel-1",
              "platformShortName": "Sentinel-1"
              },
              "acquisitionParameters": {
              "beginningDateTime": "2021-01-26T11:30:18Z",
              "endingDateTime": "2021-01-26T11:30:18Z",
              "acquisitionType": "NOMINAL"
              }
          }
          ],
          "productInformation": {
          "availabilityTime": "2021-01-26T11:30:18Z"
          },
          "offerings": [
          {
              "code": "http://www.opengis.net/spec/owc-geojson/1.0/req/wms",
              "operations": [
              {
                  "code": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
                  "method": "GET",
                  "href": "http://example.org/wms?REQUEST=GetCapabilities&version=1.3.0&service=WMS"
              }
              ]
          }
          ],
          "links": {
          "describedBy": [
              {
              "href": "https://zenodo.org/record/1209633"
              }
          ]
          }
      }
      },
      {
      "type": "Feature",
      "id": "http://example.org/record/2",
      "geometry": {
          "type": "Polygon",
          "coordinates": [
          [
              [
              50,
              30
              ],
              [
              60,
              60
              ],
              [
              40,
              60
              ],
              [
              30,
              40
              ],
              [
              50,
              30
              ]
          ]
          ]
      },
      "properties": {
          "status": "ARCHIVED",
          "identifier": "http://example.org/record/2",
          "title": "Example metadata 2",
          "date": "2021-01-26T11:30:18Z",
          "updated": "2021-01-26T11:30:18Z",
          "acquisitionInformation": [
          {
              "platform": {
              "id": "https://earth.esa.int/concept/sentinel-2",
              "platformShortName": "Sentinel-2"
              },
              "acquisitionParameters": {
              "beginningDateTime": "2021-01-26T11:30:18Z",
              "endingDateTime": "2021-01-26T11:30:18Z",
              "acquisitionType": "NOMINAL"
              }
          }
          ],
          "productInformation": {
          "availabilityTime": "2021-01-26T11:30:18Z"
          },
          "offerings": [
          {
              "code": "http://www.opengis.net/spec/owc-geojson/1.0/req/wms",
              "operations": [
              {
                  "code": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
                  "method": "GET",
                  "href": "http://example.org/wms?REQUEST=GetCapabilities&version=1.3.0&service=WMS"
              }
              ]
          }
          ],
          "links": {
          "describedBy": [
              {
              "href": "https://zenodo.org/record/1209633"
              }
          ]
          }
      }
      }
  ],
  "totalFeatures": 2,
  "numberMatched": 2,
  "numberReturned": 2,
  "timeStamp": "2024-01-22T18:33:21.068Z",
  "crs": {
      "type": "name",
      "properties": {
      "name": "urn:ogc:def:crs:EPSG::4326"
      }
  }
  }