-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpatterns.pug
115 lines (100 loc) · 8.15 KB
/
patterns.pug
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
doctype html
html(lang='en')
head
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no')
meta(name='description', content='')
meta(name='author', content='')
title Records Deployment Patterns
// Favicon
link(rel='icon', type='image/x-icon', href='assets/3d_emblem_lockup.ico')
// Font Awesome icons (free version)
//script(src='https://use.fontawesome.com/releases/v5.15.3/js/all.js', crossorigin='anonymous')
script(src='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/js/all.min.js', crossorigin='anonymous')
//script(src='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/brands.min.css', crossorigin='anonymous')
// Google fonts
link(href='https://fonts.googleapis.com/css?family=Montserrat:400,700', rel='stylesheet', type='text/css')
link(href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700', rel='stylesheet', type='text/css')
// Core theme CSS (includes Bootstrap)
link(href='css/styles.css', rel='stylesheet')
// prims.js
script(src="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/prism.min.js" integrity="sha512-UOoJElONeUNzQbbKQbjldDf9MwOHqxNz49NNJJ1d90yp+X9edsHyJoAs6O4K19CZGaIdjI5ohK+O2y5lBTW6uQ==" crossorigin="anonymous" referrerpolicy="no-referrer")
script(src="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/components/prism-bash.min.js" integrity="sha512-35RBtvuCKWANuRid6RXP2gYm4D5RMieVL/xbp6KiMXlIqgNrI7XRUh9HurE8lKHW4aRpC0TZU3ZfqG8qmQ35zA==" crossorigin="anonymous" referrerpolicy="no-referrer")
link(rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/themes/prism-funky.min.css" integrity="sha512-KaCkQvJ0dQIhdJ0Am5LM3sgXA+Y0LWpbxkfKACZnlOqDvk54lZaWYk/sQiJGNRuSyFpe24jpjwJ4q+u3Rbez5g==" crossorigin="anonymous" referrerpolicy="no-referrer")
// Core theme JS
script(src='js/scripts.js')
body#page-top
// Standard
section#standard.page-section.bg-light
.container
.text-center
h2.section-heading.text-uppercase Records Deployment Patterns
.row.text-justified
.col-md-6
p.text-muted
|The OGC API - Records Standard specifies several deployment patterns for accessing and maintaining geospatial asset catalogs.
p.text-muted
| The Records API
i Crawlable Catalog
| pattern involves creating static metadata files along with the data, in a web accessible location such as an Amazon S3 bucket.
| At the top-level, there should be a file to provide information about the catalog, including links to navigate through the metadata records.
.text-center.text-muted
//- img(src='assets/img/crawlable_catalogue_example.png', alt='...', style='width:40%', title='https://github.com/opengeospatial/ogcapi-records/blob/master/images/crawlable_catalogue_example.png')
img(src='https://raw.githubusercontent.com/opengeospatial/ogcapi-records/master/images/crawlable_catalogue_example.png', alt='...', style='width:40%', title='crawlable catalogue example')
p.text-muted
| Although providing only visibility and navigation, a crawlable catalog can be implemented relatively quickly and can provide quick return on investment for use cases such as organizing directories full of files such as a repository of Earth Observation (EO) images.
p.text-muted
| An implementation of the Records API
i Searchable Catalog
| pattern supports accessing collection level metadata and the individual metadata records. However, unlike the crawlable catalog, this pattern enables clients to filter the response with query parameters.
| This searching capability requires the metadata to be stored in a SQL or NoSQL database that can provide the querying functionality.
| As such, a simple setup using files on a web accessible folder is no longer possible.
.col-md-6
p.text-muted
| Bellow are some real-life examples of querying patterns that can be used in a searchable catalog.
.text-left
ul
li
p.text-muted
| Query by bounding box:
a(href="https://demo.pygeoapi.io/master/collections/dutch-metadata/items?bbox=50.75,3.2,53.7,7.22&f=json" target="_blank")
code /collections/dutch-metadata/items?bbox=50.75,3.2,53.7,7.22
li
p.text-muted
| Free text search:
a(href="https://demo.pygeoapi.io/master/collections/dutch-metadata/items?q=Kaartboeck&f=json" target="_blank")
code /collections/dutch-metadata/items?q=Kaartboeck
li
p.text-muted
| Query by property:
a(href="https://demo.pygeoapi.io/master/collections/dutch-metadata/items?type=’dataset’&f=json" target="_blank")
code /collections/dutch-metadata/items?type=’dataset’&f=json
p.text-muted
| The
code /collections
| endpoint is also defined in other OGC API Standards, such as OGC API - Features and OGC API - Coverages.
p.text-muted
| The
i Local Resources
| catalog pattern extends other OGC APIs endpoints to behave like catalogs, enabling querying functionality.
| For instance, this query filters a feature collection by bounding box:
div.box#code-box
pre
code.language-bash
| curl -X 'GET' \
| 'https://emotional.byteroad.net/collections/hex350_grid_obesity_1920/items?bbox=-0.078921,51.473444,-0.063901,51.478062' \
| -H 'accept: application/geo+json'
a.btn.btn-primary(onclick='copyToClipboard(this)') Copy
//- code https://emotional.byteroad.net/collections/hex350_grid_obesity_1920/items?bbox=-0.078921,51.473444,-0.063901,51.478062&f=json
p.text-muted
| Other OGC API endpoints that can be repurposed as catalogs include
a(href="https://app.swaggerhub.com/apis/OGC/ogcapi-processes-1-example-1/1.0.0#/ProcessList/getProcesses" target="_blank") processes
| and
a(href="https://petstore.swagger.io/?url=https://raw.githubusercontent.com/opengeospatial/ogcapi-coverages/master/standard/openapi/ogcapi-coverages-1.bundled.json#/Scenes/getCollectionScenes" target="_blank") coverage scenes.
p.text-muted
i.fas.fa-book-open
| You can read more about the OGC API - Records Standard on the
a(href="https://docs.ogc.org/DRAFTS/20-004.html" target="_blank") editor's draft
| and follow/participate (in) its development on the Standard's
a(href="https://github.com/opengeospatial/ogcapi-records?" target="_blank") GitHub repository
|.