ogcopenapis 0.0.11 → 1.0.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.
Files changed (60) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +310 -72
  3. package/lib/OgcOpenApiCrsTools.d.ts +10 -9
  4. package/lib/OgcOpenApiCrsTools.d.ts.map +1 -0
  5. package/lib/OgcOpenApiCrsTools.js +40 -39
  6. package/lib/OgcOpenApiCrsTools.js.map +1 -0
  7. package/lib/OgcOpenApiFeatureStore.d.ts +94 -93
  8. package/lib/OgcOpenApiFeatureStore.d.ts.map +1 -0
  9. package/lib/OgcOpenApiFeatureStore.js +200 -240
  10. package/lib/OgcOpenApiFeatureStore.js.map +1 -0
  11. package/lib/OgcOpenApiFetchTools.d.ts +37 -29
  12. package/lib/OgcOpenApiFetchTools.d.ts.map +1 -0
  13. package/lib/OgcOpenApiFetchTools.js +68 -48
  14. package/lib/OgcOpenApiFetchTools.js.map +1 -0
  15. package/lib/OgcOpenApiGetCapabilities.d.ts +209 -112
  16. package/lib/OgcOpenApiGetCapabilities.d.ts.map +1 -0
  17. package/lib/OgcOpenApiGetCapabilities.js +424 -277
  18. package/lib/OgcOpenApiGetCapabilities.js.map +1 -0
  19. package/lib/OgcOpenApiMapsModel.d.ts +41 -36
  20. package/lib/OgcOpenApiMapsModel.d.ts.map +1 -0
  21. package/lib/OgcOpenApiMapsModel.js +88 -75
  22. package/lib/OgcOpenApiMapsModel.js.map +1 -0
  23. package/lib/OgcOpenApiMvtTools.d.ts +12 -0
  24. package/lib/OgcOpenApiMvtTools.d.ts.map +1 -0
  25. package/lib/OgcOpenApiMvtTools.js +100 -0
  26. package/lib/OgcOpenApiMvtTools.js.map +1 -0
  27. package/lib/OgcOpenApiStyleTools.d.ts +51 -0
  28. package/lib/OgcOpenApiStyleTools.d.ts.map +1 -0
  29. package/lib/OgcOpenApiStyleTools.js +155 -0
  30. package/lib/OgcOpenApiStyleTools.js.map +1 -0
  31. package/lib/OgcOpenApiTileMatrixTools.d.ts +41 -0
  32. package/lib/OgcOpenApiTileMatrixTools.d.ts.map +1 -0
  33. package/lib/OgcOpenApiTileMatrixTools.js +88 -0
  34. package/lib/OgcOpenApiTileMatrixTools.js.map +1 -0
  35. package/lib/OgcOpenApiTilesModel.d.ts +56 -31
  36. package/lib/OgcOpenApiTilesModel.d.ts.map +1 -0
  37. package/lib/OgcOpenApiTilesModel.js +167 -128
  38. package/lib/OgcOpenApiTilesModel.js.map +1 -0
  39. package/lib/OgcOpenApiVectorTilesModel.d.ts +39 -0
  40. package/lib/OgcOpenApiVectorTilesModel.d.ts.map +1 -0
  41. package/lib/OgcOpenApiVectorTilesModel.js +122 -0
  42. package/lib/OgcOpenApiVectorTilesModel.js.map +1 -0
  43. package/lib/OgcOpenApiWmtsTools.d.ts +30 -0
  44. package/lib/OgcOpenApiWmtsTools.d.ts.map +1 -0
  45. package/lib/OgcOpenApiWmtsTools.js +89 -0
  46. package/lib/OgcOpenApiWmtsTools.js.map +1 -0
  47. package/package.json +68 -39
  48. package/src/OgcOpenApiCrsTools.ts +40 -0
  49. package/src/OgcOpenApiFeatureStore.ts +296 -0
  50. package/src/OgcOpenApiFetchTools.ts +84 -0
  51. package/src/OgcOpenApiGetCapabilities.ts +641 -0
  52. package/src/OgcOpenApiMapsModel.ts +128 -0
  53. package/src/OgcOpenApiMvtTools.ts +104 -0
  54. package/src/OgcOpenApiStyleTools.ts +187 -0
  55. package/src/OgcOpenApiTileMatrixTools.ts +111 -0
  56. package/src/OgcOpenApiTilesModel.ts +214 -0
  57. package/src/OgcOpenApiVectorTilesModel.ts +141 -0
  58. package/src/OgcOpenApiWmtsTools.ts +114 -0
  59. package/lib/OgcOpenApiGetCollectionTiles.d.ts +0 -7
  60. 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":"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"}
@@ -1,31 +1,56 @@
1
- import { UrlTileSetModel } from "@luciad/ria/model/tileset/UrlTileSetModel";
2
- import { RasterDataType } from "@luciad/ria/model/tileset/RasterDataType";
3
- import { RasterSamplingMode } from "@luciad/ria/model/tileset/RasterSamplingMode";
4
- import { TileCoordinate } from "@luciad/ria/model/tileset/TileCoordinate";
5
- import { ProxifyFunction, TileSetData } from "./OgcOpenApiGetCapabilities";
6
- export interface OgcOpenApiTilesModelOptions {
7
- tileMatrix: TileSetData;
8
- baseURL: string;
9
- collection: string;
10
- dataType?: RasterDataType;
11
- samplingMode?: RasterSamplingMode;
12
- credentials?: boolean;
13
- requestHeaders?: {
14
- [p: string]: string;
15
- };
16
- transparent?: boolean;
17
- bgcolor?: string;
18
- proxify?: ProxifyFunction;
19
- }
20
- export declare class OgcOpenApiTilesModel extends UrlTileSetModel {
21
- private tileMatrix;
22
- private invertY;
23
- private plevel0Rows;
24
- private transparent;
25
- private bgcolor;
26
- private proxy;
27
- constructor(options: OgcOpenApiTilesModelOptions);
28
- getTileURL(baseURL: string, tile: TileCoordinate): string | null;
29
- debugAsImage(tileCorrected: TileCoordinate): string;
30
- private static createURLParameters;
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"}