You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: coverage-json/index.html
+43-22Lines changed: 43 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -96,10 +96,10 @@ <h2>Overview of CoverageJSON</h2>
96
96
<h3>High-level structure</h3>
97
97
<p>In CovJSON, a Coverage consists of the following objects:</p>
98
98
<ul>
99
-
<li>A Domain (exactly one), which encodes the set of points in space and time for which we have data values.</li>
100
-
<li>A set of Range objects (one per scalar quantity), holding actual data values.</li>
101
-
<li>A set of Parameter objects (one per scalar quantity), describing the data values.</li>
102
-
<li>An optional set of ParameterGroup objects, which describe any semantic associations between Parameters.</li>
99
+
<li>A <dfn>Domain</dfn> (exactly one), which encodes the set of points in space and time for which we have data values.</li>
100
+
<li>A set of <dfn>Range</dfn> objects (one per scalar quantity), holding actual data values.</li>
101
+
<li>A set of <dfn>Parameter</dfn> objects (one per scalar quantity), describing the data values.</li>
102
+
<li>An optional set of <dfn>ParameterGroup</dfn> objects, which describe any semantic associations between Parameters.</li>
103
103
</ul>
104
104
<p>A sample skeleton document encoding a three-dimensional gridded Coverage with two Parameters (sea surface temperature and sea ice area fraction) is shown here:</p>
<p>TODO: explain range tiling mechanism. Show JSON example. See picture below.</p>
130
+
<h3>Encoding the Domain</h3>
131
+
<p>TODO: explain the "domainType". All domains are collections of orthogonal axes, plus referencing info.</p>
132
+
133
+
<h3>Encoding of data values</h3>
134
+
<p>TODO: explain NdArrays, and TiledNdArrays. Show JSON example of a tileSet. See picture below.</p>
132
135
<imgsrc="covjson-tiling.png" width="500"/>
133
136
134
137
<h3>CovJSON documents</h3>
135
-
<p>TODO: talk about different kinds of documents and how they link together.</p>
138
+
<p>A single CoverageJSON document can contain one of the following types of object:</p>
139
+
<ul>
140
+
<li>A single Coverage</li>
141
+
<li>A collection of Coverages. (TODO describe this more?)</li>
142
+
<li>A standalone Domain</li>
143
+
<li>An NdArray or TiledNdArray</li>
144
+
</ul>
145
+
<p>The top-level object within a document contains a “type” property that identifies the type of the object that it contains. Documents may be linked to other documents; in this way data providers can ensure that each individual document is of a "manageable" size, with large datasets being partitioned among a number of linked documents.</p>
136
146
137
147
<h3>CovJSON, JSON-LD and RDF</h3>
138
148
<p>To a limited extent, a CovJSON document can be converted into RDF through the use of a JSON-LD context header. The extent to which this is possible is discussed in section REF below, and in (TODO: insert link to Montreal paper).</p>
139
149
<p>We did not consider that coversion to RDF should be a primary goal: we focused mainly on simplicity and readability of the format, under the assumption that few of the target users (web developers) would require a pure RDF representation of the data. Enabling a full conversion to RDF would require complicating the format (mainly for technical reasons including limitations of JSON-LD). Also, RDF is an unsuitable format for large arrays of data and so the Domain and Range would not convert efficiently.</p>
150
+
<p>Nevertheless, CoverageJSON makes frequent use of URIs to denote key concepts, such as units, observed properties, coordinate reference systems, domain types and links to other CoverageJSON documents. Clients can make use of these to detect these concepts unambiguously, whether or not they perform a translation to RDF.</p>
140
151
141
152
<h3>Metadata model</h3>
142
153
<p>TODO: talk about scope of metadata, particularly describing Parameters. The sample JSON document below shows a Parameter object describing the sea surface temperature variable from the above skeleton JSON (TODO: insert link to section above somehow).</p>
"en": "The temperature of sea water near the surface",
154
-
"de": "Die Temperatur des Meerwassers nahe der Oberfläche"
164
+
"en": "The temperature of sea water near the surface",
165
+
"de": "Die Temperatur des Meerwassers nahe der Oberfläche"
155
166
}
156
167
},
157
168
"unit" : {
158
169
"label" : {
159
-
"en": "Degree Celsius",
160
-
"de": "Grad Celsius"
170
+
"en": "Degree Celsius",
171
+
"de": "Grad Celsius"
161
172
},
162
173
"symbol": {
163
-
"value": "Cel",
164
-
"type": "http://www.opengis.net/def/uom/UCUM/"
174
+
"value": "Cel",
175
+
"type": "http://www.opengis.net/def/uom/UCUM/"
165
176
}
166
177
}
167
178
}
168
179
</pre>
169
180
<p>Note that the main features of the metadata are: (i) a URI link to the definition of the parameter in question, (ii) a strongly-typed unit string, using UCUM encoding rules, (iii) internationalisation of human-readable strings (labels).<p>
170
181
<p><strong>MAIK</strong> - would this Parameter object convert to RDF nicely? If so we could insert the triples that would result.</p>
171
182
172
-
<h3>Linked Data / Semantic Web support</h3>
173
-
<p>Use of URIs, limited JSON-LD support</p>
174
-
175
183
<h3>Extension points</h3>
176
184
<p>We allow data providers to extend the format in a controlled manner. The possible extensions that can be defined by users include:</p>
177
185
<ul>
178
186
<li>Custom properties (e.g. high-level metadata such as licence information)</li>
179
187
<li>Custom domain types</li>
180
188
<li>Custom data types for axes</li>
181
-
<li>Custom referencing systems (e.g. HEALPix grids, REF)</li>
189
+
<li>Custom referencing systems (e.g. <ahref="http://healpix.jpl.nasa.gov">HEALPix</a> grids)</li>
182
190
<li>Different grammars for encoding unit symbols (e.g. UDUNITS)</li>
183
191
<li>Alternative encodings for range values</li>
184
192
</ul>
185
-
<p>In each case we recommend that URIs (full or compact) be used to denote these extensions (and to point to definitions), to avoid the possibility of clashes between extensions.</p>
193
+
<p>In each case we recommend that URIs be used to denote these extensions (and to point to definitions), to avoid the possibility of clashes between extensions.</p>
186
194
</section>
187
195
188
196
<sectionid="tools">
189
197
<h2>Tools and libraries</h2>
190
-
<p>TODO: describe them and link to the <ahref="https://covjson.org/tools/">website</a>.</p>
198
+
<p>TODO: outline them and link to the <ahref="https://covjson.org/tools/">website</a>.</p>
191
199
</section>
192
200
193
201
<sectionid="otherDataModels">
194
202
<h2>Relationship with other data models</h2>
195
-
<p>NetCDF, CIS, ISO19123, GeoJSON?</p>
203
+
<h3>NetCDF and CF-NetCDF</h3>
204
+
<pclass="note">NetCDF (REF) is a binary, platform-independent data format for multidimensional data, which is independent of any community of practice. Essentially, a NetCDF file is a collection of multidimensional arrays, plus metadata provided as key-value pairs. Metadata conventions are required to specialise NetCDF for particular communities. The Climate and Forecast (REF) conventions are the pre-eminent conventions for geospatial data. NetCDF files that conform to these conventions are known as "CF-NetCDF files".)</p>
205
+
<p>The overall structure of CoverageJSON is quite close to that of NetCDF (REF), consisting essentially of a set of orthogonal domain axes that can be combined in different ways. One major difference is that in CoverageJSON, there is an explicit Domain object, whereas in NetCDF the domain is specified implicitly by linking data variables with coordinate variables. One consequence of this is that NetCDF files can contain several domains and hence several Coverages. A NetCDF file could therefore be converted to a single Coverage or a Coverage Collection in CoverageJSON.</p>
206
+
207
+
<h3>OGC Coverage Implementation Schema (CIS)</h3>
208
+
<p>The overall concepts of CoverageJSON are close to those of the ISO19123 standard (REF) and the OGC standard Coverage Implementation Schema (CIS, REF), which specialises ISO19123. The main points of difference are:</p>
209
+
<ul>
210
+
<li>CIS uses a different set of rules for gridded and non-gridded data, whereas CoverageJSON uses a single consistent set.</li>
211
+
<li>CIS allows each Coverage to have exactly one CRS, whereas CoverageJSON allows different CRSs to be applied to different sets of coordinates in the domain (e.g. one CRS for x and y, and another CRS for z).</li>
212
+
<li>The most recent version of CIS defines a JSON encoding that uses a near-literal translation of GML structures into JSON. CoverageJSON does not use GML as its starting point.</li>
213
+
</ul>
214
+
215
+
<h3>Other data models</h3>
216
+
<p>TODO: say something about TimeseriesML (and WaterML?) and note that CoverageJSON does not support all the details of encoding timeseries that these standards accommodate. Also, we don't support interleaved domain-range syntax, which these standards do support.</p>
0 commit comments