ogcopenapis 0.0.12 → 1.0.1
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 +63 -0
- package/LICENSE +20 -20
- package/README.md +305 -72
- package/lib/OgcOpenApiCrsTools.d.ts +10 -9
- package/lib/OgcOpenApiCrsTools.d.ts.map +1 -0
- package/lib/OgcOpenApiCrsTools.js +40 -39
- package/lib/OgcOpenApiCrsTools.js.map +1 -0
- package/lib/OgcOpenApiFeatureStore.d.ts +94 -93
- package/lib/OgcOpenApiFeatureStore.d.ts.map +1 -0
- package/lib/OgcOpenApiFeatureStore.js +200 -244
- package/lib/OgcOpenApiFeatureStore.js.map +1 -0
- package/lib/OgcOpenApiFetchTools.d.ts +37 -30
- package/lib/OgcOpenApiFetchTools.d.ts.map +1 -0
- package/lib/OgcOpenApiFetchTools.js +68 -50
- package/lib/OgcOpenApiFetchTools.js.map +1 -0
- package/lib/OgcOpenApiGetCapabilities.d.ts +209 -112
- package/lib/OgcOpenApiGetCapabilities.d.ts.map +1 -0
- package/lib/OgcOpenApiGetCapabilities.js +424 -277
- package/lib/OgcOpenApiGetCapabilities.js.map +1 -0
- package/lib/OgcOpenApiMapsModel.d.ts +41 -36
- package/lib/OgcOpenApiMapsModel.d.ts.map +1 -0
- package/lib/OgcOpenApiMapsModel.js +88 -75
- package/lib/OgcOpenApiMapsModel.js.map +1 -0
- package/lib/OgcOpenApiMvtTools.d.ts +12 -0
- package/lib/OgcOpenApiMvtTools.d.ts.map +1 -0
- package/lib/OgcOpenApiMvtTools.js +100 -0
- package/lib/OgcOpenApiMvtTools.js.map +1 -0
- package/lib/OgcOpenApiStyleTools.d.ts +51 -0
- package/lib/OgcOpenApiStyleTools.d.ts.map +1 -0
- package/lib/OgcOpenApiStyleTools.js +155 -0
- package/lib/OgcOpenApiStyleTools.js.map +1 -0
- package/lib/OgcOpenApiTileMatrixTools.d.ts +41 -0
- package/lib/OgcOpenApiTileMatrixTools.d.ts.map +1 -0
- package/lib/OgcOpenApiTileMatrixTools.js +88 -0
- package/lib/OgcOpenApiTileMatrixTools.js.map +1 -0
- package/lib/OgcOpenApiTilesModel.d.ts +56 -31
- package/lib/OgcOpenApiTilesModel.d.ts.map +1 -0
- package/lib/OgcOpenApiTilesModel.js +167 -128
- package/lib/OgcOpenApiTilesModel.js.map +1 -0
- package/lib/OgcOpenApiVectorTilesModel.d.ts +39 -0
- package/lib/OgcOpenApiVectorTilesModel.d.ts.map +1 -0
- package/lib/OgcOpenApiVectorTilesModel.js +122 -0
- package/lib/OgcOpenApiVectorTilesModel.js.map +1 -0
- package/lib/OgcOpenApiWmtsTools.d.ts +30 -0
- package/lib/OgcOpenApiWmtsTools.d.ts.map +1 -0
- package/lib/OgcOpenApiWmtsTools.js +89 -0
- package/lib/OgcOpenApiWmtsTools.js.map +1 -0
- package/package.json +57 -27
- package/src/OgcOpenApiCrsTools.ts +40 -0
- package/src/OgcOpenApiFeatureStore.ts +296 -0
- package/src/OgcOpenApiFetchTools.ts +84 -0
- package/src/OgcOpenApiGetCapabilities.ts +641 -0
- package/src/OgcOpenApiMapsModel.ts +128 -0
- package/src/OgcOpenApiMvtTools.ts +104 -0
- package/src/OgcOpenApiStyleTools.ts +187 -0
- package/src/OgcOpenApiTileMatrixTools.ts +111 -0
- package/src/OgcOpenApiTilesModel.ts +214 -0
- package/src/OgcOpenApiVectorTilesModel.ts +141 -0
- package/src/OgcOpenApiWmtsTools.ts +114 -0
- package/lib/OgcOpenApiGetCollectionTiles.d.ts +0 -7
- package/lib/OgcOpenApiGetCollectionTiles.js +0 -7
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { CollectionLinkType, OgcOpenApiGetCapabilities } from "./OgcOpenApiGetCapabilities.js";
|
|
2
|
+
import { OgcOpenApiFetchTools } from "./OgcOpenApiFetchTools.js";
|
|
3
|
+
export const MAPBOX_STYLE_TYPE = "application/vnd.mapbox.style+json";
|
|
4
|
+
const DEFAULT_COLORS = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"];
|
|
5
|
+
class OgcOpenApiStyleTools {
|
|
6
|
+
/**
|
|
7
|
+
* Lists the styles of a collection (OGC API Styles) that are available as a Mapbox GL style, or with collection
|
|
8
|
+
* null the styles of the dataset, for its dataset tilesets.
|
|
9
|
+
*/
|
|
10
|
+
static fetchStyles(capabilities, collection, options) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
if (capabilities === null) {
|
|
13
|
+
reject();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const href = OgcOpenApiStyleTools.withJsonFormat(OgcOpenApiStyleTools.getStylesHref(capabilities, collection));
|
|
17
|
+
OgcOpenApiFetchTools.fetch(href, {
|
|
18
|
+
method: "GET",
|
|
19
|
+
credentials: options?.credentials ? "same-origin" : "omit",
|
|
20
|
+
headers: { ...(options?.requestHeaders ? options.requestHeaders : {}), Accept: "application/json" }
|
|
21
|
+
}, capabilities.serverOptions).then(response => {
|
|
22
|
+
// A collection without styles
|
|
23
|
+
if (response.status === 404) {
|
|
24
|
+
resolve([]);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (response.status !== 200) {
|
|
28
|
+
reject({ error: true, message: "Invalid response: " + response.status });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
response.json().then(data => {
|
|
32
|
+
const styles = data.styles ? data.styles : [];
|
|
33
|
+
resolve(styles.map(style => ({
|
|
34
|
+
id: style.id,
|
|
35
|
+
title: style.title ? style.title : style.id,
|
|
36
|
+
mapboxStylesheets: (style.links ? style.links : [])
|
|
37
|
+
.filter(l => l.rel === "stylesheet" && typeof l.type === "string" && l.type.indexOf(MAPBOX_STYLE_TYPE) === 0)
|
|
38
|
+
// Relative to the styles document
|
|
39
|
+
.map(l => ({ ...l, href: OgcOpenApiFetchTools.resolveUrl(l.href, href, capabilities.serverOptions) }))
|
|
40
|
+
})).filter(style => style.mapboxStylesheets.length > 0));
|
|
41
|
+
}, () => reject({ error: true, message: "Not JSON data" }));
|
|
42
|
+
}, err => reject({ error: true, message: err.message }));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The styles for a tile matrix set. Zoom levels are tile matrix set specific, so a server can have a style per
|
|
47
|
+
* tile matrix set and name it after it (PDOK: bgt_standaardvisualisatie__netherlandsrdnewquad). A style named after
|
|
48
|
+
* another of tileMatrixSetIds, and not after tileMatrixSetId, is left out. Other styles have a stylesheet per tile
|
|
49
|
+
* matrix set or serve all of them (pickStylesheet).
|
|
50
|
+
*/
|
|
51
|
+
static getStylesForTileMatrixSet(styles, tileMatrixSetId, tileMatrixSetIds) {
|
|
52
|
+
const names = (style, id) => (style.id + " " + style.title).toLowerCase().indexOf(id.toLowerCase()) > -1;
|
|
53
|
+
const others = tileMatrixSetIds.filter(id => id.toLowerCase() !== tileMatrixSetId.toLowerCase());
|
|
54
|
+
return styles.filter(style => names(style, tileMatrixSetId) || !others.some(id => names(style, id)));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A style can have one stylesheet per tile matrix set, because zoom levels are tile matrix set specific.
|
|
58
|
+
* Prefers the stylesheet for tileMatrixSetId, then the one without a tile matrix set.
|
|
59
|
+
*/
|
|
60
|
+
static pickStylesheet(style, tileMatrixSetId) {
|
|
61
|
+
const forTileMatrixSet = style.mapboxStylesheets.find(l => l.href.indexOf("tile-matrix-set=" + tileMatrixSetId) > -1);
|
|
62
|
+
if (forTileMatrixSet)
|
|
63
|
+
return forTileMatrixSet;
|
|
64
|
+
const generic = style.mapboxStylesheets.find(l => l.href.indexOf("tile-matrix-set=") === -1);
|
|
65
|
+
return generic ? generic : style.mapboxStylesheets[0];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fetches a Mapbox GL style. Properties without a value, as in `"filter" : ,`, are removed so that styles
|
|
69
|
+
* that are not valid JSON can still be used.
|
|
70
|
+
*/
|
|
71
|
+
static fetchMapboxStyle(capabilities, stylesheet, options) {
|
|
72
|
+
return OgcOpenApiFetchTools.fetch(stylesheet.href, {
|
|
73
|
+
method: "GET",
|
|
74
|
+
credentials: options?.credentials ? "same-origin" : "omit",
|
|
75
|
+
headers: { ...(options?.requestHeaders ? options.requestHeaders : {}), Accept: MAPBOX_STYLE_TYPE }
|
|
76
|
+
}, capabilities.serverOptions).then(response => {
|
|
77
|
+
if (response.status !== 200)
|
|
78
|
+
throw new Error("Invalid response: " + response.status);
|
|
79
|
+
return response.text();
|
|
80
|
+
}).then(text => OgcOpenApiStyleTools.parseMapboxStyle(text));
|
|
81
|
+
}
|
|
82
|
+
static parseMapboxStyle(text) {
|
|
83
|
+
try {
|
|
84
|
+
return JSON.parse(text);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
const repaired = text
|
|
88
|
+
.replace(/"[^"\\]*"\s*:\s*(?=[,}\]])/g, "")
|
|
89
|
+
.replace(/,(\s*[,}\]])/g, "$1")
|
|
90
|
+
.replace(/,(\s*[,}\]])/g, "$1")
|
|
91
|
+
.replace(/([{\[])(\s*),/g, "$1$2");
|
|
92
|
+
return JSON.parse(repaired);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* A Mapbox GL style that paints every layer of a vector tileset, by geometryDimension: points as dots,
|
|
97
|
+
* lines as lines and surfaces as filled polygons. Layers without geometryDimension get all three, filtered
|
|
98
|
+
* by geometry type.
|
|
99
|
+
*/
|
|
100
|
+
static createDefaultStyle(layers, name) {
|
|
101
|
+
const styleLayers = [];
|
|
102
|
+
layers.forEach((layer, index) => {
|
|
103
|
+
const color = DEFAULT_COLORS[index % DEFAULT_COLORS.length];
|
|
104
|
+
const dimension = layer.geometryDimension;
|
|
105
|
+
const known = typeof dimension === "number";
|
|
106
|
+
if (!known || dimension === 2) {
|
|
107
|
+
styleLayers.push({
|
|
108
|
+
id: layer.id + "_fill", type: "fill", "source-layer": layer.id,
|
|
109
|
+
...(known ? {} : { filter: ["==", ["geometry-type"], "Polygon"] }),
|
|
110
|
+
paint: { "fill-color": color, "fill-opacity": 0.4, "fill-outline-color": color }
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (!known || dimension === 1 || dimension === 2) {
|
|
114
|
+
styleLayers.push({
|
|
115
|
+
id: layer.id + "_line", type: "line", "source-layer": layer.id,
|
|
116
|
+
...(known ? {} : { filter: ["!=", ["geometry-type"], "Point"] }),
|
|
117
|
+
paint: { "line-color": color, "line-width": dimension === 2 ? 1 : 2 }
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (!known || dimension === 0) {
|
|
121
|
+
// A text dot rather than a circle layer: LuciadRIA 2026.1.1 does not paint circle layers
|
|
122
|
+
styleLayers.push({
|
|
123
|
+
id: layer.id + "_point", type: "symbol", "source-layer": layer.id,
|
|
124
|
+
...(known ? {} : { filter: ["==", ["geometry-type"], "Point"] }),
|
|
125
|
+
layout: { "text-field": "\u25CF", "text-size": 16, "text-allow-overlap": true },
|
|
126
|
+
paint: { "text-color": color, "text-halo-color": "#ffffff", "text-halo-width": 1 }
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return { version: 8, name: name ? name : "default", sources: {}, layers: styleLayers };
|
|
131
|
+
}
|
|
132
|
+
// Some servers (ldproxy) list the styles link only in the collection document, not in /collections.
|
|
133
|
+
// The styles of the dataset are linked from the landing page.
|
|
134
|
+
static getStylesHref(capabilities, collection) {
|
|
135
|
+
if (!collection) {
|
|
136
|
+
const datasetLinks = OgcOpenApiGetCapabilities.filterCollectionLinks(capabilities.links ? capabilities.links : [], CollectionLinkType.Styles);
|
|
137
|
+
const datasetLink = datasetLinks.find(l => l.type === "application/json") || datasetLinks.find(l => !l.type);
|
|
138
|
+
return datasetLink ? datasetLink.href : capabilities.baseUrl + "styles";
|
|
139
|
+
}
|
|
140
|
+
const stylesLinks = OgcOpenApiGetCapabilities.filterCollectionLinks(collection.links, CollectionLinkType.Styles);
|
|
141
|
+
const link = stylesLinks.find(l => l.type === "application/json") || stylesLinks.find(l => !l.type);
|
|
142
|
+
if (link)
|
|
143
|
+
return link.href;
|
|
144
|
+
const self = collection.links.find(l => l.rel === "self");
|
|
145
|
+
const collectionHref = self ? self.href : capabilities.baseUrl + "collections/" + collection.id;
|
|
146
|
+
return OgcOpenApiFetchTools.cleanUrl(collectionHref) + "styles";
|
|
147
|
+
}
|
|
148
|
+
static withJsonFormat(href) {
|
|
149
|
+
if (/[?&]f=/.test(href))
|
|
150
|
+
return href;
|
|
151
|
+
return href + (href.indexOf("?") > -1 ? "&" : "?") + "f=json";
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
export { OgcOpenApiStyleTools };
|
|
155
|
+
//# sourceMappingURL=OgcOpenApiStyleTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OgcOpenApiStyleTools.js","sourceRoot":"","sources":["../src/OgcOpenApiStyleTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Bounds } from "@luciad/ria/shape/Bounds.js";
|
|
2
|
+
import { CoordinateReference } from "@luciad/ria/reference/CoordinateReference.js";
|
|
3
|
+
import type { TileCoordinate } from "@luciad/ria/model/tileset/TileCoordinate.js";
|
|
4
|
+
import { type TileMatrix, type TileSetData } from "./OgcOpenApiGetCapabilities.js";
|
|
5
|
+
/**
|
|
6
|
+
* The part of an OGC TileMatrixSet that LuciadRIA can address as a quad-tree:
|
|
7
|
+
* LuciadRIA level 0 maps to tileMatrices[levelOffset].
|
|
8
|
+
*/
|
|
9
|
+
export interface OgcOpenApiTileGrid {
|
|
10
|
+
reference: CoordinateReference;
|
|
11
|
+
bounds: Bounds;
|
|
12
|
+
levelOffset: number;
|
|
13
|
+
levelCount: number;
|
|
14
|
+
level0Columns: number;
|
|
15
|
+
level0Rows: number;
|
|
16
|
+
tileWidth: number;
|
|
17
|
+
tileHeight: number;
|
|
18
|
+
tileMatrices: TileMatrix[];
|
|
19
|
+
}
|
|
20
|
+
declare class OgcOpenApiTileMatrixTools {
|
|
21
|
+
static createTileGrid(tileSet: TileSetData): OgcOpenApiTileGrid;
|
|
22
|
+
/**
|
|
23
|
+
* Resolves {tileMatrix}, {tileRow} and {tileCol} for a LuciadRIA tile. LuciadRIA counts rows
|
|
24
|
+
* bottom-up, OGC counts them from the cornerOfOrigin (topLeft by default).
|
|
25
|
+
*/
|
|
26
|
+
static resolveTileTemplate(template: string, grid: OgcOpenApiTileGrid, tile: TileCoordinate): string | null;
|
|
27
|
+
static getOgcTile(grid: OgcOpenApiTileGrid, tile: TileCoordinate): {
|
|
28
|
+
tileMatrix: string;
|
|
29
|
+
tileRow: number;
|
|
30
|
+
tileCol: number;
|
|
31
|
+
} | null;
|
|
32
|
+
static getLuciadTile(grid: OgcOpenApiTileGrid, tileMatrixId: string, tileRow: number, tileCol: number): TileCoordinate | null;
|
|
33
|
+
static appendQueryParameters(url: string, parameters: {
|
|
34
|
+
[key: string]: string | number | boolean | undefined;
|
|
35
|
+
}): string;
|
|
36
|
+
private static isBottomLeft;
|
|
37
|
+
private static getTileMatrixBounds;
|
|
38
|
+
private static isFirstAxisNorthing;
|
|
39
|
+
}
|
|
40
|
+
export { OgcOpenApiTileMatrixTools };
|
|
41
|
+
//# sourceMappingURL=OgcOpenApiTileMatrixTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OgcOpenApiTileMatrixTools.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiTileMatrixTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8CAA8C,CAAC;AACjF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6CAA6C,CAAC;AAIhF,OAAO,EAA4B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAE5G;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,UAAU,EAAE,CAAC;CAC9B;AAED,cAAM,yBAAyB;WAEb,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,kBAAkB;IAqBtE;;;OAGG;WACW,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;WASpG,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;WAQ3H,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;WAQtH,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;KAAE,GAAG,MAAM;IAS9H,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAMrC;AAED,OAAO,EACH,yBAAyB,EAC5B,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Bounds } from "@luciad/ria/shape/Bounds.js";
|
|
2
|
+
import { CoordinateReference } from "@luciad/ria/reference/CoordinateReference.js";
|
|
3
|
+
import { getReference } from "@luciad/ria/reference/ReferenceProvider.js";
|
|
4
|
+
import { createBounds } from "@luciad/ria/shape/ShapeFactory.js";
|
|
5
|
+
import { OgcOpenApiCrsTools } from "./OgcOpenApiCrsTools.js";
|
|
6
|
+
import { OgcOpenApiGetCapabilities } from "./OgcOpenApiGetCapabilities.js";
|
|
7
|
+
class OgcOpenApiTileMatrixTools {
|
|
8
|
+
static createTileGrid(tileSet) {
|
|
9
|
+
if (!tileSet.tileMatrices || tileSet.tileMatrices.length === 0) {
|
|
10
|
+
throw new Error("TileMatrixSet " + tileSet.id + " has no tileMatrices");
|
|
11
|
+
}
|
|
12
|
+
const reference = getReference(OgcOpenApiCrsTools.getReferenceName(tileSet.crs));
|
|
13
|
+
const levelOffset = OgcOpenApiGetCapabilities.getQuadTreeCompatibleLevelOffset(tileSet);
|
|
14
|
+
const tileMatrices = tileSet.tileMatrices.slice(levelOffset);
|
|
15
|
+
const tm0 = tileMatrices[0];
|
|
16
|
+
return {
|
|
17
|
+
reference,
|
|
18
|
+
bounds: OgcOpenApiTileMatrixTools.getTileMatrixBounds(reference, tileSet, tm0),
|
|
19
|
+
levelOffset,
|
|
20
|
+
levelCount: tileMatrices.length,
|
|
21
|
+
level0Columns: tm0.matrixWidth,
|
|
22
|
+
level0Rows: tm0.matrixHeight,
|
|
23
|
+
tileWidth: tm0.tileWidth,
|
|
24
|
+
tileHeight: tm0.tileHeight,
|
|
25
|
+
tileMatrices
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolves {tileMatrix}, {tileRow} and {tileCol} for a LuciadRIA tile. LuciadRIA counts rows
|
|
30
|
+
* bottom-up, OGC counts them from the cornerOfOrigin (topLeft by default).
|
|
31
|
+
*/
|
|
32
|
+
static resolveTileTemplate(template, grid, tile) {
|
|
33
|
+
const ogcTile = OgcOpenApiTileMatrixTools.getOgcTile(grid, tile);
|
|
34
|
+
if (ogcTile === null)
|
|
35
|
+
return null;
|
|
36
|
+
return template
|
|
37
|
+
.replace("{tileMatrix}", ogcTile.tileMatrix)
|
|
38
|
+
.replace("{tileRow}", ogcTile.tileRow.toString())
|
|
39
|
+
.replace("{tileCol}", ogcTile.tileCol.toString());
|
|
40
|
+
}
|
|
41
|
+
static getOgcTile(grid, tile) {
|
|
42
|
+
const tileMatrix = grid.tileMatrices[tile.level];
|
|
43
|
+
if (!tileMatrix)
|
|
44
|
+
return null;
|
|
45
|
+
const tileRow = OgcOpenApiTileMatrixTools.isBottomLeft(tileMatrix) ? tile.y : tileMatrix.matrixHeight - 1 - tile.y;
|
|
46
|
+
return { tileMatrix: tileMatrix.id, tileRow, tileCol: tile.x };
|
|
47
|
+
}
|
|
48
|
+
// The inverse of getOgcTile, null when the tile matrix is not part of the grid
|
|
49
|
+
static getLuciadTile(grid, tileMatrixId, tileRow, tileCol) {
|
|
50
|
+
const level = grid.tileMatrices.findIndex(m => m.id === tileMatrixId);
|
|
51
|
+
if (level < 0)
|
|
52
|
+
return null;
|
|
53
|
+
const tileMatrix = grid.tileMatrices[level];
|
|
54
|
+
const y = OgcOpenApiTileMatrixTools.isBottomLeft(tileMatrix) ? tileRow : tileMatrix.matrixHeight - 1 - tileRow;
|
|
55
|
+
return { level, x: tileCol, y };
|
|
56
|
+
}
|
|
57
|
+
static appendQueryParameters(url, parameters) {
|
|
58
|
+
const query = Object.keys(parameters)
|
|
59
|
+
.filter(k => parameters[k] !== undefined && parameters[k] !== null)
|
|
60
|
+
.map(k => encodeURIComponent(k) + "=" + encodeURIComponent(String(parameters[k])))
|
|
61
|
+
.join("&");
|
|
62
|
+
if (query === "")
|
|
63
|
+
return url;
|
|
64
|
+
return url + (url.indexOf("?") > -1 ? "&" : "?") + query;
|
|
65
|
+
}
|
|
66
|
+
static isBottomLeft(tileMatrix) {
|
|
67
|
+
return typeof tileMatrix.cornerOfOrigin === "string" && tileMatrix.cornerOfOrigin.toUpperCase() === "BOTTOMLEFT";
|
|
68
|
+
}
|
|
69
|
+
// The grid extent follows from the origin and cell size, pointOfOrigin is given in orderedAxes order.
|
|
70
|
+
static getTileMatrixBounds(reference, tileSet, tileMatrix) {
|
|
71
|
+
const swap = OgcOpenApiTileMatrixTools.isFirstAxisNorthing(tileSet.orderedAxes);
|
|
72
|
+
const originX = tileMatrix.pointOfOrigin[swap ? 1 : 0];
|
|
73
|
+
const originY = tileMatrix.pointOfOrigin[swap ? 0 : 1];
|
|
74
|
+
const width = tileMatrix.cellSize * tileMatrix.tileWidth * tileMatrix.matrixWidth;
|
|
75
|
+
const height = tileMatrix.cellSize * tileMatrix.tileHeight * tileMatrix.matrixHeight;
|
|
76
|
+
const minY = OgcOpenApiTileMatrixTools.isBottomLeft(tileMatrix) ? originY : originY - height;
|
|
77
|
+
return createBounds(reference, [originX, width, minY, height]);
|
|
78
|
+
}
|
|
79
|
+
static isFirstAxisNorthing(orderedAxes) {
|
|
80
|
+
if (!orderedAxes || orderedAxes.length === 0)
|
|
81
|
+
return false;
|
|
82
|
+
const axis = orderedAxes[0].toUpperCase();
|
|
83
|
+
// EPSG:3035 names its northing Y and its easting X, with Y first
|
|
84
|
+
return ["LAT", "LATITUDE", "N", "S", "Y", "NORTHING"].indexOf(axis) > -1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export { OgcOpenApiTileMatrixTools };
|
|
88
|
+
//# sourceMappingURL=OgcOpenApiTileMatrixTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OgcOpenApiTileMatrixTools.js","sourceRoot":"","sources":["../src/OgcOpenApiTileMatrixTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EAAC,YAAY,EAAC,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,yBAAyB,EAAoC,MAAM,gCAAgC,CAAC;AAkB5G,MAAM,yBAAyB;IAEpB,MAAM,CAAC,cAAc,CAAC,OAAoB;QAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,EAAE,GAAG,sBAAsB,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,yBAAyB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;QACxF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO;YACH,SAAS;YACT,MAAM,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC;YAC9E,WAAW;YACX,UAAU,EAAE,YAAY,CAAC,MAAM;YAC/B,aAAa,EAAE,GAAG,CAAC,WAAW;YAC9B,UAAU,EAAE,GAAG,CAAC,YAAY;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY;SACf,CAAC;IACN,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,IAAwB,EAAE,IAAoB;QAC9F,MAAM,OAAO,GAAG,yBAAyB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,QAAQ;aACV,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC;aAC3C,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;aAChD,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAwB,EAAE,IAAoB;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACnH,OAAO,EAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC;IACjE,CAAC;IAED,+EAA+E;IACxE,MAAM,CAAC,aAAa,CAAC,IAAwB,EAAE,YAAoB,EAAE,OAAe,EAAE,OAAe;QACxG,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;QACtE,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC;QAC/G,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,GAAW,EAAE,UAAoE;QACjH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjF,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC;QAC7B,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7D,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,UAAsB;QAC9C,OAAO,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC;IACrH,CAAC;IAED,sGAAsG;IAC9F,MAAM,CAAC,mBAAmB,CAAC,SAA8B,EAAE,OAAoB,EAAE,UAAsB;QAC3G,MAAM,IAAI,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;QAClF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC;QACrF,MAAM,IAAI,GAAG,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7F,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,WAAiC;QAChE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,iEAAiE;QACjE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;CACJ;AAED,OAAO,EACH,yBAAyB,EAC5B,CAAA"}
|
|
@@ -1,31 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
-
}
|
|
1
|
+
import { WMTSTileSetModel } from "@luciad/ria/model/tileset/WMTSTileSetModel.js";
|
|
2
|
+
import type { QuadTreeRasterTileSetStructure, TileMatrixSet2DRasterTileSetStructure } from "@luciad/ria/model/tileset/RasterTileSetModel.js";
|
|
3
|
+
import { RasterDataType } from "@luciad/ria/model/tileset/RasterDataType.js";
|
|
4
|
+
import { RasterSamplingMode } from "@luciad/ria/model/tileset/RasterSamplingMode.js";
|
|
5
|
+
import type { TileCoordinate } from "@luciad/ria/model/tileset/TileCoordinate.js";
|
|
6
|
+
import type { ProxifyFunction, TileMatrixLimits, TileSetData } from "./OgcOpenApiGetCapabilities.js";
|
|
7
|
+
export interface OgcOpenApiTilesModelOptions {
|
|
8
|
+
tileMatrix: TileSetData;
|
|
9
|
+
baseURL: string;
|
|
10
|
+
collection: string;
|
|
11
|
+
dataType?: RasterDataType;
|
|
12
|
+
samplingMode?: RasterSamplingMode;
|
|
13
|
+
credentials?: boolean;
|
|
14
|
+
requestHeaders?: {
|
|
15
|
+
[p: string]: string;
|
|
16
|
+
};
|
|
17
|
+
transparent?: boolean;
|
|
18
|
+
bgcolor?: string;
|
|
19
|
+
proxify?: ProxifyFunction;
|
|
20
|
+
}
|
|
21
|
+
export interface OgcOpenApiTilesModelCreateOptions extends OgcOpenApiTilesModelOptions {
|
|
22
|
+
tileMatrixSetLimits?: TileMatrixLimits[];
|
|
23
|
+
extent?: number[];
|
|
24
|
+
format?: string;
|
|
25
|
+
}
|
|
26
|
+
interface WmtsTileStructure {
|
|
27
|
+
structure: QuadTreeRasterTileSetStructure | TileMatrixSet2DRasterTileSetStructure;
|
|
28
|
+
tileMatrices: {
|
|
29
|
+
id: string;
|
|
30
|
+
matrixHeight: number;
|
|
31
|
+
}[];
|
|
32
|
+
}
|
|
33
|
+
export declare class OgcOpenApiTilesModel extends WMTSTileSetModel {
|
|
34
|
+
private transparent;
|
|
35
|
+
private bgcolor;
|
|
36
|
+
private proxy;
|
|
37
|
+
private tileMatrixSetLimits;
|
|
38
|
+
private ogcTileMatrices;
|
|
39
|
+
private tileGrid;
|
|
40
|
+
private ogcTemplate;
|
|
41
|
+
/**
|
|
42
|
+
* Creates the model with LuciadRIA's WMTS support, which handles tile matrix sets that are quad-trees and
|
|
43
|
+
* tile matrix sets that are not, such as GlobalCRS84Scale.
|
|
44
|
+
*/
|
|
45
|
+
static createFromTileSet(options: OgcOpenApiTilesModelCreateOptions): Promise<OgcOpenApiTilesModel>;
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated Supports quad-tree tile matrix sets only, use createFromTileSet
|
|
48
|
+
*/
|
|
49
|
+
constructor(options: OgcOpenApiTilesModelCreateOptions, wmtsStructure?: WmtsTileStructure);
|
|
50
|
+
getTileURL(baseURL: string, tile: TileCoordinate): string | null;
|
|
51
|
+
private hasData;
|
|
52
|
+
private static getTileStructure;
|
|
53
|
+
debugAsImage(tileCorrected: TileCoordinate): string;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=OgcOpenApiTilesModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OgcOpenApiTilesModel.d.ts","sourceRoot":"","sources":["../src/OgcOpenApiTilesModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAA0C,MAAM,+CAA+C,CAAC;AAExH,OAAO,KAAK,EAAC,8BAA8B,EAAc,qCAAqC,EAAC,MAAM,iDAAiD,CAAC;AACvJ,OAAO,EAAC,cAAc,EAAC,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,iDAAiD,CAAC;AACnF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6CAA6C,CAAC;AAChF,OAAO,KAAK,EAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAKnG,MAAM,WAAW,2BAA2B;IACxC,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,eAAe,CAAA;CAC5B;AAED,MAAM,WAAW,iCAAkC,SAAQ,2BAA2B;IAElF,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,iBAAiB;IACvB,SAAS,EAAE,8BAA8B,GAAG,qCAAqC,CAAC;IAElF,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,eAAe,CAAyC;IAEhE,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;OAGG;WACU,iBAAiB,CAAC,OAAO,EAAE,iCAAiC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAezG;;OAEG;gBACS,OAAO,EAAE,iCAAiC,EAAE,aAAa,CAAC,EAAE,iBAAiB;IAgDzF,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAmBhE,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA4C/B,YAAY,CAAC,aAAa,EAAE,cAAc;CAgB7C"}
|