ogcopenapis 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -1
- package/README.md +34 -3
- package/lib/OgcOpenApiFeatureStore.d.ts +3 -1
- package/lib/OgcOpenApiFeatureStore.d.ts.map +1 -1
- package/lib/OgcOpenApiFeatureStore.js +22 -37
- package/lib/OgcOpenApiFeatureStore.js.map +1 -1
- package/lib/OgcOpenApiFetchTools.d.ts +9 -0
- package/lib/OgcOpenApiFetchTools.d.ts.map +1 -1
- package/lib/OgcOpenApiFetchTools.js +15 -0
- package/lib/OgcOpenApiFetchTools.js.map +1 -1
- package/lib/OgcOpenApiGetCapabilities.d.ts +16 -0
- package/lib/OgcOpenApiGetCapabilities.d.ts.map +1 -1
- package/lib/OgcOpenApiGetCapabilities.js +39 -3
- package/lib/OgcOpenApiGetCapabilities.js.map +1 -1
- package/lib/OgcOpenApiStyleTools.js +1 -1
- package/lib/OgcOpenApiStyleTools.js.map +1 -1
- package/lib/OgcOpenApiTileMatrixTools.d.ts +6 -0
- package/lib/OgcOpenApiTileMatrixTools.d.ts.map +1 -1
- package/lib/OgcOpenApiTileMatrixTools.js +13 -0
- package/lib/OgcOpenApiTileMatrixTools.js.map +1 -1
- package/lib/OgcOpenApiTilesModel.d.ts +2 -0
- package/lib/OgcOpenApiTilesModel.d.ts.map +1 -1
- package/lib/OgcOpenApiTilesModel.js +3 -2
- package/lib/OgcOpenApiTilesModel.js.map +1 -1
- package/lib/OgcOpenApiVectorTilesModel.d.ts +1 -0
- package/lib/OgcOpenApiVectorTilesModel.d.ts.map +1 -1
- package/lib/OgcOpenApiVectorTilesModel.js +1 -1
- package/lib/OgcOpenApiVectorTilesModel.js.map +1 -1
- package/package.json +1 -1
- package/src/OgcOpenApiFeatureStore.ts +21 -35
- package/src/OgcOpenApiFetchTools.ts +17 -0
- package/src/OgcOpenApiGetCapabilities.ts +47 -3
- package/src/OgcOpenApiStyleTools.ts +1 -1
- package/src/OgcOpenApiTileMatrixTools.ts +13 -0
- package/src/OgcOpenApiTilesModel.ts +7 -2
- package/src/OgcOpenApiVectorTilesModel.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,34 @@ Each pull request adds its changes under Unreleased. A release renames Unrelease
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [1.1.0] - 2026-10-27
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- The tiles of the dataset limited to some of its collections (OGC API Tiles, collections selection): the option
|
|
15
|
+
`collections` of OgcOpenApiTilesModel and OgcOpenApiVectorTilesModel, which request `collections=a,b`.
|
|
16
|
+
- `fromURL` reads the conformance classes of the server, in `capabilities.conformsTo`.
|
|
17
|
+
- `supportsCollectionSelection(capabilities)`: whether the server declares collections selection, by the conformance
|
|
18
|
+
class of the standard (`COLLECTIONS_SELECTION_CONFORMANCE`), or by the name ldproxy declares it under, which is not in
|
|
19
|
+
the standard (`COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS`).
|
|
20
|
+
- Demo: the collections in the tiles of the dataset, when the server supports collections selection.
|
|
21
|
+
|
|
22
|
+
## [1.0.3] - 2026-10-27
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- OgcOpenApiFeatureStore keeps every parameter of the items link, such as `profile` or an api key, instead of only
|
|
26
|
+
`f`. A parameter of a request replaces the one of the link with the same name.
|
|
27
|
+
- OgcOpenApiFeatureStore encodes the values of its queries: a CQL `filter` with spaces, `&` or `#`, or a `datetime`
|
|
28
|
+
interval, no longer gives a malformed URL. `get(id)` encodes the id.
|
|
29
|
+
- `fromURL` requests the landing page with the query of the URL it is given.
|
|
30
|
+
- The tileset URL built from a tile matrix set id, and the styles URL built from the self link of a collection, keep
|
|
31
|
+
the query of the link they start from.
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
- `isJsonFgLink`, `JSON_FG_MEDIA_TYPE` and `JSON_FG_PROFILE`: JSON-FG links, by their media type or by the JSON-FG
|
|
35
|
+
profile of an `application/geo+json` link. `outputFormats` of a collection reports JSON-FG as
|
|
36
|
+
`application/vnd.ogc.fg+json`. Reading JSON-FG needs a JSON-FG codec, which the application provides.
|
|
37
|
+
- Demo: a format for features. JSON-FG is listed, but cannot be selected yet.
|
|
38
|
+
|
|
11
39
|
## [1.0.2] - 2026-10-27
|
|
12
40
|
|
|
13
41
|
### Fixed
|
|
@@ -68,7 +96,9 @@ Each pull request adds its changes under Unreleased. A release renames Unrelease
|
|
|
68
96
|
|
|
69
97
|
See the [git history](https://github.com/felipecarrillo100/ogcopenapis/commits/main).
|
|
70
98
|
|
|
71
|
-
[Unreleased]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.0
|
|
99
|
+
[Unreleased]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.1.0...HEAD
|
|
100
|
+
[1.1.0]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.0.3...v1.1.0
|
|
101
|
+
[1.0.3]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.0.2...v1.0.3
|
|
72
102
|
[1.0.2]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.0.1...v1.0.2
|
|
73
103
|
[1.0.1]: https://github.com/felipecarrillo100/ogcopenapis/compare/v1.0.0...v1.0.1
|
|
74
104
|
[1.0.0]: https://github.com/felipecarrillo100/ogcopenapis/releases/tag/v1.0.0
|
package/README.md
CHANGED
|
@@ -143,8 +143,9 @@ import {OgcOpenApiFeatureStore} from "ogcopenapis/OgcOpenApiFeatureStore";
|
|
|
143
143
|
|
|
144
144
|
function createFeatureLayer(collection: OgcOpenApiCapabilitiesCollection) {
|
|
145
145
|
const items = OgcOpenApiGetCapabilities.filterCollectionLinks(collection.links, CollectionLinkType.Items);
|
|
146
|
-
// GeoJSON, the encoding that GeoJsonCodec reads
|
|
147
|
-
const
|
|
146
|
+
// GeoJSON, the encoding that GeoJsonCodec reads. Not JSON-FG, which some servers also type application/geo+json
|
|
147
|
+
const geoJson = items.filter(l => !OgcOpenApiGetCapabilities.isJsonFgLink(l));
|
|
148
|
+
const link = geoJson.find(l => l.type === "application/geo+json") || geoJson.find(l => l.type === "application/json");
|
|
148
149
|
if (!link) throw new Error("Collection " + collection.id + " has no GeoJSON items");
|
|
149
150
|
// CRS84: OGC API Features requires every server to support it
|
|
150
151
|
const crs = CRS84;
|
|
@@ -161,7 +162,13 @@ function createFeatureLayer(collection: OgcOpenApiCapabilitiesCollection) {
|
|
|
161
162
|
return new FeatureLayer(model, {label: collection.title || collection.id, loadingStrategy: new LoadSpatially()});
|
|
162
163
|
}
|
|
163
164
|
```
|
|
164
|
-
The store requests the features in view, a query does not follow the `next` links of a response yet (no paging).
|
|
165
|
+
The store requests the features in view, a query does not follow the `next` links of a response yet (no paging). It
|
|
166
|
+
keeps the parameters of the items link, such as `profile` or an api key, and encodes the values of its own.
|
|
167
|
+
|
|
168
|
+
JSON-FG (OGC Features and Geometries JSON) needs a JSON-FG codec, which LuciadRIA does not have yet. Servers offer it as
|
|
169
|
+
`application/vnd.ogc.fg+json`, or as `application/geo+json` with the JSON-FG profile (ldproxy); `isJsonFgLink` tells them
|
|
170
|
+
apart, and `outputFormats` of a collection reports JSON-FG as `application/vnd.ogc.fg+json`. To read JSON-FG, pass a
|
|
171
|
+
JSON-FG codec of your own to the store with that link.
|
|
165
172
|
|
|
166
173
|
Keep the ids of the server: `generateIDs: false`. Each feature of an OGC API Features collection has an id, `get(id)` of
|
|
167
174
|
the store requests `items/{id}` with it, and LuciadRIA updates only the features that changed when the ids stay the same
|
|
@@ -309,6 +316,30 @@ if (OgcOpenApiGetCapabilities.hasDatasetTileSets(capabilities, CollectionLinkTyp
|
|
|
309
316
|
}
|
|
310
317
|
```
|
|
311
318
|
|
|
319
|
+
The tiles of the dataset can hold only some of its collections, when the server supports the `collections` parameter
|
|
320
|
+
(OGC API Tiles, collections selection). Both tiles models take them as `collections`:
|
|
321
|
+
```typescript
|
|
322
|
+
if (OgcOpenApiGetCapabilities.supportsCollectionSelection(capabilities)) {
|
|
323
|
+
const model = new OgcOpenApiVectorTilesModel({
|
|
324
|
+
tileMatrix,
|
|
325
|
+
baseURL: link.href,
|
|
326
|
+
collection: "dataset",
|
|
327
|
+
tileMatrixSetLimits: tileSet.tileMatrixSetLimits,
|
|
328
|
+
// The ids of the collections, as capabilities.collections lists them
|
|
329
|
+
collections: ["abschnitteaeste"],
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
* `supportsCollectionSelection` reads the conformance classes of the server (`capabilities.conformsTo`): the class of the
|
|
334
|
+
standard, `http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection` (OGC 20-057, Table 7).
|
|
335
|
+
* It also accepts `http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collection-selection`, a name that is not in the
|
|
336
|
+
standard: ldproxy declares the class so, and supports the parameter as the standard requires.
|
|
337
|
+
`COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS` lists it, to be removed once ldproxy declares the class of the standard.
|
|
338
|
+
* The models do not check the conformance classes: they request the collections they are given. Use `collections` for
|
|
339
|
+
tilesets of the dataset only, the tiles of a collection hold that collection.
|
|
340
|
+
* A comma inside a collection id is encoded, the commas between ids are not. A `collections` parameter in the tile URL
|
|
341
|
+
template is replaced.
|
|
342
|
+
|
|
312
343
|
### Styles
|
|
313
344
|
* LuciadRIA reads the Mapbox GL encoding of OGC API Styles only, not SLD or other encodings.
|
|
314
345
|
* A server can publish a stylesheet per tile matrix set, because zoom levels depend on it. `pickStylesheet` picks the one for the tile matrix set in use.
|
|
@@ -67,6 +67,7 @@ export declare class OgcOpenApiFeatureStore extends Store {
|
|
|
67
67
|
private codec;
|
|
68
68
|
private baseUrl;
|
|
69
69
|
private dataFormat;
|
|
70
|
+
private linkParameters;
|
|
70
71
|
private customCrs;
|
|
71
72
|
private dataBounds;
|
|
72
73
|
private requestHeaders;
|
|
@@ -83,12 +84,13 @@ export declare class OgcOpenApiFeatureStore extends Store {
|
|
|
83
84
|
isOperationSupported(methodName: StoreOperationName): boolean;
|
|
84
85
|
get(id: number | string, optionsInput?: any): Promise<Feature>;
|
|
85
86
|
query(receivedQuery?: OgcOpenApiFeatureStoreQueryOptions, options?: QueryOptions): Cursor | Promise<Cursor>;
|
|
87
|
+
private withQuery;
|
|
86
88
|
private fetchFeatures;
|
|
87
89
|
spatialQuery(bounds?: Bounds, receivedQuery?: OgcOpenApiFeatureStoreQueryOptions, options?: QueryOptions): Promise<Cursor> | Cursor;
|
|
88
90
|
private static getCRS84BoundingBox;
|
|
89
91
|
private static targetBounds;
|
|
90
92
|
private static cleanUrl;
|
|
91
|
-
private static
|
|
93
|
+
private static getQueryParameters;
|
|
92
94
|
}
|
|
93
95
|
export type { OgcOpenApiFeaturesCodecDecodeOptions };
|
|
94
96
|
//# sourceMappingURL=OgcOpenApiFeatureStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgcOpenApiFeatureStore.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiFeatureStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OgcOpenApiFeatureStore.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiFeatureStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,8 @@ export class OgcOpenApiFeatureStore extends Store {
|
|
|
21
21
|
const predictedFeatureUrl = this.dataUrl.replace(/\.[^/.]+$/, "");
|
|
22
22
|
this.featureUrl = options.featureUrl ? OgcOpenApiFeatureStore.cleanUrl(options.featureUrl, true) : OgcOpenApiFeatureStore.cleanUrl(predictedFeatureUrl, true);
|
|
23
23
|
this.baseUrl = OgcOpenApiFeatureStore.cleanUrl(this.dataUrl);
|
|
24
|
-
this.
|
|
24
|
+
this.linkParameters = OgcOpenApiFeatureStore.getQueryParameters(this.dataUrl);
|
|
25
|
+
this.dataFormat = this.linkParameters.f;
|
|
25
26
|
this.customCrs = options.crs === "http://www.opengis.net/def/crs/OGC/1.3/CRS84" ? undefined : options.crs;
|
|
26
27
|
this.codec = options.codec;
|
|
27
28
|
this.requestHeaders = options.requestHeaders ? options.requestHeaders : {};
|
|
@@ -57,16 +58,7 @@ export class OgcOpenApiFeatureStore extends Store {
|
|
|
57
58
|
options.query = (options.query ? options.query : {});
|
|
58
59
|
options.query.f = options.query.f ? options.query.f : this.dataFormat;
|
|
59
60
|
options.query.crs = options.query.crs ? options.query.crs : this.customCrs;
|
|
60
|
-
|
|
61
|
-
const simpleQuery = [];
|
|
62
|
-
if (options.query.f)
|
|
63
|
-
simpleQuery.push("f");
|
|
64
|
-
if (options.query.crs)
|
|
65
|
-
simpleQuery.push("crs");
|
|
66
|
-
if (simpleQuery.length > 0) {
|
|
67
|
-
const queryString = simpleQuery.map(k => "" + k + "=" + options.query[k]).join("&");
|
|
68
|
-
request += "?" + queryString;
|
|
69
|
-
}
|
|
61
|
+
const request = this.withQuery(this.featureUrl + encodeURIComponent(String(id)), { f: options.query.f, crs: options.query.crs });
|
|
70
62
|
return this.fetchFeatures(request, options.abortSignal).then(cursor => cursor && cursor.hasNext() ? cursor.next() : null);
|
|
71
63
|
}
|
|
72
64
|
query(receivedQuery, options) {
|
|
@@ -74,19 +66,20 @@ export class OgcOpenApiFeatureStore extends Store {
|
|
|
74
66
|
query.f = query.f ? query.f : this.dataFormat;
|
|
75
67
|
query.crs = query.crs ? query.crs : this.customCrs;
|
|
76
68
|
query.limit = query.limit ? query.limit : undefined;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const queryString = filteredKeys.map(k => "" + k + "=" + query[k]).join("&");
|
|
87
|
-
request += "?" + queryString;
|
|
69
|
+
return this.fetchFeatures(this.withQuery(this.baseUrl, query), options?.abortSignal);
|
|
70
|
+
}
|
|
71
|
+
// The parameters of the items link, then those of the request, which replace a link parameter of the same name.
|
|
72
|
+
// f comes first, every value is encoded
|
|
73
|
+
withQuery(url, parameters) {
|
|
74
|
+
const merged = { ...this.linkParameters };
|
|
75
|
+
for (const key of Object.keys(parameters)) {
|
|
76
|
+
if (typeof parameters[key] !== "undefined" && parameters[key] !== null)
|
|
77
|
+
merged[key] = parameters[key];
|
|
88
78
|
}
|
|
89
|
-
|
|
79
|
+
const keys = Object.keys(merged).sort((a, b) => (a === "f" ? -1 : b === "f" ? 1 : 0));
|
|
80
|
+
if (keys.length === 0)
|
|
81
|
+
return url;
|
|
82
|
+
return url + "?" + keys.map(k => encodeURIComponent(k) + "=" + OgcOpenApiFetchTools.encodeQueryValue(merged[k])).join("&");
|
|
90
83
|
}
|
|
91
84
|
// Fetches and decodes features. The promise always settles: it rejects with the reason when the request,
|
|
92
85
|
// the response or the decoding fails, and when LuciadRIA aborts the request through abortSignal.
|
|
@@ -181,20 +174,12 @@ export class OgcOpenApiFeatureStore extends Store {
|
|
|
181
174
|
const parts = dataUrl.split('?');
|
|
182
175
|
return parts[0].endsWith('/') ? parts[0] : (addSlash ? parts[0] + '/' : parts[0]);
|
|
183
176
|
}
|
|
184
|
-
static
|
|
185
|
-
|
|
186
|
-
const
|
|
187
|
-
if (
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
for (const q of qs) {
|
|
191
|
-
if (q.startsWith('f=')) {
|
|
192
|
-
format = q.slice(2);
|
|
193
|
-
return format;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return format;
|
|
177
|
+
static getQueryParameters(url) {
|
|
178
|
+
const parameters = {};
|
|
179
|
+
const query = url.split("?")[1];
|
|
180
|
+
if (query)
|
|
181
|
+
new URLSearchParams(query).forEach((value, key) => parameters[key] = value);
|
|
182
|
+
return parameters;
|
|
198
183
|
}
|
|
199
184
|
}
|
|
200
185
|
//# sourceMappingURL=OgcOpenApiFeatureStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgcOpenApiFeatureStore.js","sourceRoot":"","sources":["../src/OgcOpenApiFeatureStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA0B,MAAM,kCAAkC,CAAC;AAEnG,OAAO,EAAC,OAAO,EAAC,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,KAAK,EAA0B,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAC,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAC,YAAY,EAAC,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAC,oBAAoB,EAAC,MAAM,qDAAqD,CAAC;AACzF,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,qCAAqC,CAAC;AAE7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAyD/D,MAAM,OAAO,sBAAuB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"OgcOpenApiFeatureStore.js","sourceRoot":"","sources":["../src/OgcOpenApiFeatureStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,15 @@ declare class OgcOpenApiFetchTools {
|
|
|
29
29
|
*/
|
|
30
30
|
static resolveUrl(href: string, documentUrl: string, serverOptions: FetchServerOptions): string;
|
|
31
31
|
static addHostURL(url: string, HostUrl?: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* A value for a query parameter: encoded, except for , : and / which are allowed in a query (RFC 3986) and keep
|
|
34
|
+
* values such as bbox=1,2,3,4 and crs=http://www.opengis.net/def/crs/... readable. Spaces, &, #, + and = are encoded.
|
|
35
|
+
*/
|
|
36
|
+
static encodeQueryValue(value: string | number | boolean | Array<string | number>): string;
|
|
37
|
+
/**
|
|
38
|
+
* url with path appended to its path, keeping its query: .../collections/c?f=json and styles give .../collections/c/styles?f=json
|
|
39
|
+
*/
|
|
40
|
+
static appendPath(url: string, path: string): string;
|
|
32
41
|
static cleanUrl(inputUrl: string): string;
|
|
33
42
|
static cleanUrlToAsset(inputUrl: string): string;
|
|
34
43
|
static getHostURL(fullUrl: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgcOpenApiFetchTools.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiFetchTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAEpE,UAAU,eAAe;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,OAAO,CAAC,EAAE,eAAe,CAAA;CAC5B;AACD,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,KAAA,KAAK;QAAE,YAAY,EAAE,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACpC;AAMD,cAAM,oBAAoB;WAER,kBAAkB,CAAC,OAAO,EAAE,eAAe;;wBAfxC,MAAM,KAAK,MAAM;qBAsB6C,MAAM;;;;;WAOvE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB;IAM1F;;;;OAIG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB;WAQ/E,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"OgcOpenApiFetchTools.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiFetchTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAEpE,UAAU,eAAe;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,OAAO,CAAC,EAAE,eAAe,CAAA;CAC5B;AACD,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,KAAA,KAAK;QAAE,YAAY,EAAE,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACpC;AAMD,cAAM,oBAAoB;WAER,kBAAkB,CAAC,OAAO,EAAE,eAAe;;wBAfxC,MAAM,KAAK,MAAM;qBAsB6C,MAAM;;;;;WAOvE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB;IAM1F;;;;OAIG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB;WAQ/E,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAYtD;;;OAGG;WACW,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAKxF;;OAEG;WACW,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;WAKpC,QAAQ,CAAC,QAAQ,EAAC,MAAM;WAIxB,eAAe,CAAC,QAAQ,EAAC,MAAM;WAI/B,UAAU,CAAC,OAAO,EAAE,MAAM;CAO3C;AAED,OAAO,EACH,oBAAoB,EACvB,CAAA"}
|
|
@@ -49,6 +49,21 @@ class OgcOpenApiFetchTools {
|
|
|
49
49
|
}
|
|
50
50
|
return hostUrl + "/" + url;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* A value for a query parameter: encoded, except for , : and / which are allowed in a query (RFC 3986) and keep
|
|
54
|
+
* values such as bbox=1,2,3,4 and crs=http://www.opengis.net/def/crs/... readable. Spaces, &, #, + and = are encoded.
|
|
55
|
+
*/
|
|
56
|
+
static encodeQueryValue(value) {
|
|
57
|
+
return encodeURIComponent(Array.isArray(value) ? value.join(",") : String(value))
|
|
58
|
+
.replace(/%2C/gi, ",").replace(/%3A/gi, ":").replace(/%2F/gi, "/");
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* url with path appended to its path, keeping its query: .../collections/c?f=json and styles give .../collections/c/styles?f=json
|
|
62
|
+
*/
|
|
63
|
+
static appendPath(url, path) {
|
|
64
|
+
const [base, query] = url.split(/\?(.*)/s);
|
|
65
|
+
return OgcOpenApiFetchTools.cleanUrl(base) + path + (query ? "?" + query : "");
|
|
66
|
+
}
|
|
52
67
|
static cleanUrl(inputUrl) {
|
|
53
68
|
return inputUrl.split("?")[0].replace(/\/?$/, '/');
|
|
54
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgcOpenApiFetchTools.js","sourceRoot":"","sources":["../src/OgcOpenApiFetchTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OgcOpenApiFetchTools.js","sourceRoot":"","sources":["../src/OgcOpenApiFetchTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,12 @@ export interface LinkType {
|
|
|
7
7
|
type: string;
|
|
8
8
|
title: string;
|
|
9
9
|
href: string;
|
|
10
|
+
profile?: string | string[];
|
|
10
11
|
}
|
|
12
|
+
export declare const JSON_FG_MEDIA_TYPE = "application/vnd.ogc.fg+json";
|
|
13
|
+
export declare const JSON_FG_PROFILE = "http://www.opengis.net/def/profile/OGC/0/jsonfg";
|
|
14
|
+
export declare const COLLECTIONS_SELECTION_CONFORMANCE = "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection";
|
|
15
|
+
export declare const COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS: string[];
|
|
11
16
|
export interface TileMatrix {
|
|
12
17
|
id: string;
|
|
13
18
|
scaleDenominator: number;
|
|
@@ -86,6 +91,7 @@ export interface OgcOpenApiCapabilitiesObject {
|
|
|
86
91
|
baseUrl: string;
|
|
87
92
|
tileMatrixSetsUrl?: string;
|
|
88
93
|
links?: LinkType[];
|
|
94
|
+
conformsTo?: string[];
|
|
89
95
|
serverOptions: FetchServerOptions;
|
|
90
96
|
}
|
|
91
97
|
export interface OgcOpenApiCapabilitiesCollection {
|
|
@@ -106,6 +112,7 @@ export interface OgcOpenApiCapabilitiesCollectionServiceLinkType {
|
|
|
106
112
|
type: string;
|
|
107
113
|
title: string;
|
|
108
114
|
href: string;
|
|
115
|
+
profile?: string | string[];
|
|
109
116
|
}
|
|
110
117
|
export declare enum CollectionLinkType {
|
|
111
118
|
Items = "items",
|
|
@@ -131,6 +138,10 @@ export declare class OgcOpenApiGetCapabilities {
|
|
|
131
138
|
private static fetchLinkContentAsJSON;
|
|
132
139
|
static filterCollectionLinks(links: OgcOpenApiCapabilitiesCollectionServiceLinkType[], linkType: CollectionLinkType): OgcOpenApiCapabilitiesCollectionServiceLinkType[];
|
|
133
140
|
static getDataLink(currentLayer: OgcOpenApiCapabilitiesCollection, preferedFormat: string): string;
|
|
141
|
+
/**
|
|
142
|
+
* Whether the link is to JSON-FG: by its media type, or by the JSON-FG profile of an application/geo+json link
|
|
143
|
+
*/
|
|
144
|
+
static isJsonFgLink(link: LinkType): boolean;
|
|
134
145
|
private static detectTypeFormat;
|
|
135
146
|
/**
|
|
136
147
|
* The tile matrix sets of the server, with their definitions. A definition that cannot be read is left out, so one
|
|
@@ -150,6 +161,11 @@ export declare class OgcOpenApiGetCapabilities {
|
|
|
150
161
|
}, linkType?: CollectionLinkType): Promise<LinkType[]>;
|
|
151
162
|
private static getTileSetsHref;
|
|
152
163
|
private static getDatasetTileSetsHref;
|
|
164
|
+
/**
|
|
165
|
+
* Whether the server supports the collections parameter of dataset tiles (OGC API Tiles, collections selection),
|
|
166
|
+
* as its conformance classes declare: the class of the standard, or the variant of COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS
|
|
167
|
+
*/
|
|
168
|
+
static supportsCollectionSelection(capabilities: OgcOpenApiCapabilitiesObject | null): boolean;
|
|
153
169
|
/**
|
|
154
170
|
* Whether the server tiles the dataset as a whole, all its collections in each tile, for linkType Tiles or VectorTiles
|
|
155
171
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgcOpenApiGetCapabilities.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiGetCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,kBAAkB,EAAuB,MAAM,2BAA2B,CAAC;AAGxF,KAAK,cAAc,GAAG;IAAC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAAC,GAAG,IAAI,CAAA;AAC5D,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OgcOpenApiGetCapabilities.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiGetCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { OgcOpenApiFetchTools } from "./OgcOpenApiFetchTools.js";
|
|
2
2
|
const SCALE_DENOMINATOR_TOLERANCE = 1e-8;
|
|
3
|
+
// JSON-FG, OGC Features and Geometries JSON: a media type of its own, or application/geo+json with the JSON-FG profile.
|
|
4
|
+
// Reading it needs a JSON-FG codec, GeoJsonCodec reads GeoJSON
|
|
5
|
+
export const JSON_FG_MEDIA_TYPE = "application/vnd.ogc.fg+json";
|
|
6
|
+
export const JSON_FG_PROFILE = "http://www.opengis.net/def/profile/OGC/0/jsonfg";
|
|
7
|
+
// The conformance class of OGC API Tiles for the collections parameter of dataset tiles (OGC 20-057, Table 7)
|
|
8
|
+
export const COLLECTIONS_SELECTION_CONFORMANCE = "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection";
|
|
9
|
+
// The same class under another name, also accepted. Not in the standard: ldproxy declares it so, and supports the
|
|
10
|
+
// collections parameter as the standard requires. To be removed once ldproxy declares the class of the standard
|
|
11
|
+
export const COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS = ["http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collection-selection"];
|
|
3
12
|
export var CollectionLinkType;
|
|
4
13
|
(function (CollectionLinkType) {
|
|
5
14
|
CollectionLinkType["Items"] = "items";
|
|
@@ -27,8 +36,9 @@ export class OgcOpenApiGetCapabilities {
|
|
|
27
36
|
static fromURL(inputRequest, fromUrlOptions) {
|
|
28
37
|
const options = fromUrlOptions ? fromUrlOptions : {};
|
|
29
38
|
return new Promise((resolve, reject) => {
|
|
39
|
+
// The landing page, with the query it was given, such as an api key. baseUrl is without it
|
|
30
40
|
const baseUrl = OgcOpenApiFetchTools.cleanUrl(inputRequest);
|
|
31
|
-
const requestUrl = OgcOpenApiFetchTools.
|
|
41
|
+
const requestUrl = OgcOpenApiFetchTools.appendPath(inputRequest, "");
|
|
32
42
|
const serverOptions = OgcOpenApiFetchTools.createFetchOptions({ originalUrl: requestUrl, proxify: options?.proxify });
|
|
33
43
|
OgcOpenApiFetchTools.fetch(requestUrl, {
|
|
34
44
|
method: 'GET',
|
|
@@ -53,6 +63,12 @@ export class OgcOpenApiGetCapabilities {
|
|
|
53
63
|
const linkToTileMatrixSets = tilingSchemes.find((link) => link.type === 'application/json') || tilingSchemes.find((link) => !link.type);
|
|
54
64
|
// The links of the landing page are relative to it, the links of the collections to /collections
|
|
55
65
|
const resolveLink = (link, documentUrl) => ({ ...link, href: OgcOpenApiFetchTools.resolveUrl(link.href, documentUrl, serverOptions) });
|
|
66
|
+
// The conformance classes, read with the collections. A server without them declares no classes
|
|
67
|
+
const conformance = jsonObject.links.find((link) => isRel(link, 'conformance'));
|
|
68
|
+
const conformancePromise = conformance ?
|
|
69
|
+
OgcOpenApiGetCapabilities.fetchJson({ serverOptions }, resolveLink(conformance, requestUrl).href, options)
|
|
70
|
+
.then(data => Array.isArray(data.conformsTo) ? data.conformsTo : [], () => []) :
|
|
71
|
+
Promise.resolve([]);
|
|
56
72
|
const promiseArray = [];
|
|
57
73
|
if (linkToData) {
|
|
58
74
|
const collectionsLink = resolveLink(linkToData, requestUrl);
|
|
@@ -109,7 +125,7 @@ export class OgcOpenApiGetCapabilities {
|
|
|
109
125
|
baseUrl,
|
|
110
126
|
tileMatrixSetsUrl: linkToTileMatrixSets ? resolveLink(linkToTileMatrixSets, requestUrl).href : undefined
|
|
111
127
|
};
|
|
112
|
-
resolve(o);
|
|
128
|
+
conformancePromise.then(conformsTo => resolve({ ...o, conformsTo }));
|
|
113
129
|
});
|
|
114
130
|
}
|
|
115
131
|
else {
|
|
@@ -157,7 +173,18 @@ export class OgcOpenApiGetCapabilities {
|
|
|
157
173
|
const dataLink = OgcOpenApiGetCapabilities.filterCollectionLinks(currentLayer.links, CollectionLinkType.Items).find((link) => link.type === preferedFormat);
|
|
158
174
|
return dataLink ? dataLink.href : '';
|
|
159
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Whether the link is to JSON-FG: by its media type, or by the JSON-FG profile of an application/geo+json link
|
|
178
|
+
*/
|
|
179
|
+
static isJsonFgLink(link) {
|
|
180
|
+
const type = link.type ? link.type.toLowerCase() : "";
|
|
181
|
+
const profiles = Array.isArray(link.profile) ? link.profile : link.profile ? [link.profile] : [];
|
|
182
|
+
return type.indexOf(JSON_FG_MEDIA_TYPE) === 0 || profiles.indexOf(JSON_FG_PROFILE) > -1;
|
|
183
|
+
}
|
|
184
|
+
// JSON-FG is reported as JSON-FG also when the server types it application/geo+json with the JSON-FG profile
|
|
160
185
|
static detectTypeFormat(link) {
|
|
186
|
+
if (link.type && OgcOpenApiGetCapabilities.isJsonFgLink(link) && link.type.indexOf(JSON_FG_MEDIA_TYPE) !== 0)
|
|
187
|
+
return JSON_FG_MEDIA_TYPE;
|
|
161
188
|
if (link.type)
|
|
162
189
|
return link.type;
|
|
163
190
|
for (const key in CollectionLinkTypeAlternatives) {
|
|
@@ -264,6 +291,15 @@ export class OgcOpenApiGetCapabilities {
|
|
|
264
291
|
const link = dataLinks.find((link) => link.type === "application/json") || dataLinks.find((link) => !link.type) || dataLinks[0];
|
|
265
292
|
return link ? link.href : '';
|
|
266
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Whether the server supports the collections parameter of dataset tiles (OGC API Tiles, collections selection),
|
|
296
|
+
* as its conformance classes declare: the class of the standard, or the variant of COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS
|
|
297
|
+
*/
|
|
298
|
+
static supportsCollectionSelection(capabilities) {
|
|
299
|
+
const conformsTo = capabilities && capabilities.conformsTo ? capabilities.conformsTo : [];
|
|
300
|
+
return conformsTo.indexOf(COLLECTIONS_SELECTION_CONFORMANCE) > -1 ||
|
|
301
|
+
COLLECTIONS_SELECTION_CONFORMANCE_VARIANTS.some(variant => conformsTo.indexOf(variant) > -1);
|
|
302
|
+
}
|
|
267
303
|
/**
|
|
268
304
|
* Whether the server tiles the dataset as a whole, all its collections in each tile, for linkType Tiles or VectorTiles
|
|
269
305
|
*/
|
|
@@ -391,7 +427,7 @@ export class OgcOpenApiGetCapabilities {
|
|
|
391
427
|
const tileSetsHref = currentCollection ?
|
|
392
428
|
OgcOpenApiGetCapabilities.getTileSetsHref(currentCollection, linkType) :
|
|
393
429
|
OgcOpenApiGetCapabilities.getDatasetTileSetsHref(capabilities, linkType);
|
|
394
|
-
const tileInfoUrl = typeof tileMatrix === "string" ? OgcOpenApiFetchTools.
|
|
430
|
+
const tileInfoUrl = typeof tileMatrix === "string" ? OgcOpenApiFetchTools.appendPath(tileSetsHref, tileMatrix) : tileMatrix.href;
|
|
395
431
|
// pygeoapi answers 500 without f=json or an Accept header
|
|
396
432
|
const data = await OgcOpenApiGetCapabilities.fetchJson(capabilities, tileInfoUrl, options);
|
|
397
433
|
const links = data.links ? data.links.filter(l => l.rel === "item" || l.rel === "items").map(a => ({ ...a, href: OgcOpenApiFetchTools.resolveUrl(a.href, tileInfoUrl, capabilities.serverOptions) })) : [];
|