@vcmap/core 6.2.2 → 6.2.3
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/dist/src/featureProvider/wmsFeatureProvider.d.ts +2 -0
- package/dist/src/featureProvider/wmsFeatureProvider.js +34 -5
- package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
- package/dist/src/layer/cesium/cogImageryProvider.d.ts +2 -2
- package/dist/src/layer/cesium/cogImageryProvider.js +6 -26
- package/dist/src/layer/cesium/cogImageryProvider.js.map +1 -1
- package/dist/src/layer/cogLayer.d.ts +6 -1
- package/dist/src/layer/cogLayer.js +7 -0
- package/dist/src/layer/cogLayer.js.map +1 -1
- package/package.json +1 -1
- package/src/featureProvider/wmsFeatureProvider.ts +44 -10
- package/src/global.d.ts +0 -1
- package/src/layer/cesium/cogImageryProvider.ts +9 -26
- package/src/layer/cogLayer.ts +17 -1
|
@@ -63,6 +63,7 @@ export type WMSFeatureProviderOptions = AbstractFeatureProviderOptions & {
|
|
|
63
63
|
* @default '1.1.1'
|
|
64
64
|
*/
|
|
65
65
|
version?: string;
|
|
66
|
+
htmlPositionFeatureTitle?: string;
|
|
66
67
|
};
|
|
67
68
|
declare const gmlFormats: {
|
|
68
69
|
GML: typeof GML3;
|
|
@@ -110,6 +111,7 @@ declare class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
110
111
|
* The feature response projection, if not present in the response format.
|
|
111
112
|
*/
|
|
112
113
|
projection: Projection | undefined;
|
|
114
|
+
htmlPositionFeatureTitle?: string;
|
|
113
115
|
constructor(layerName: string, options: WMSFeatureProviderOptions);
|
|
114
116
|
get wmsSource(): TileWMS;
|
|
115
117
|
set wmsSource(source: TileWMS);
|
|
@@ -7,6 +7,7 @@ import Point from 'ol/geom/Point.js';
|
|
|
7
7
|
import { getTransform } from 'ol/proj.js';
|
|
8
8
|
import { Feature } from 'ol';
|
|
9
9
|
import WMSGetFeatureInfo from 'ol/format/WMSGetFeatureInfo.js';
|
|
10
|
+
import { containsCoordinate } from 'ol/extent.js';
|
|
10
11
|
import { parseInteger } from '@vcsuite/parsers';
|
|
11
12
|
import { getLogger } from '@vcsuite/logger';
|
|
12
13
|
import AbstractFeatureProvider from './abstractFeatureProvider.js';
|
|
@@ -71,6 +72,20 @@ export function getFormat(responseType, options = {}, format, gmlFormatKey) {
|
|
|
71
72
|
}
|
|
72
73
|
return null;
|
|
73
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Calculates meters per degree at a given coordinate's latitude
|
|
77
|
+
* @param coordinate - Coordinate in geographic projection
|
|
78
|
+
* @returns Meters per degree at the coordinate's latitude
|
|
79
|
+
*/
|
|
80
|
+
function getMetersPerDegreeAtCoordinate(coordinate) {
|
|
81
|
+
const latitude = coordinate[1];
|
|
82
|
+
const latitudeRadians = (latitude * Math.PI) / 180;
|
|
83
|
+
// Meters per degree longitude varies with latitude: cos(lat) * metersPerDegreeAtEquator
|
|
84
|
+
// Meters per degree latitude is approximately constant at ~111,320 m
|
|
85
|
+
// Using an average that accounts for longitude compression at latitude
|
|
86
|
+
const metersPerDegreeAtEquator = 111320;
|
|
87
|
+
return metersPerDegreeAtEquator * Math.cos(latitudeRadians);
|
|
88
|
+
}
|
|
74
89
|
class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
75
90
|
static get className() {
|
|
76
91
|
return 'WMSFeatureProvider';
|
|
@@ -120,6 +135,7 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
120
135
|
* The feature response projection, if not present in the response format.
|
|
121
136
|
*/
|
|
122
137
|
projection;
|
|
138
|
+
htmlPositionFeatureTitle;
|
|
123
139
|
constructor(layerName, options) {
|
|
124
140
|
super(layerName, options);
|
|
125
141
|
const defaultOptions = WMSFeatureProvider.getDefaultOptions();
|
|
@@ -150,6 +166,7 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
150
166
|
this.projection = options.projection
|
|
151
167
|
? new Projection(options.projection)
|
|
152
168
|
: undefined;
|
|
169
|
+
this.htmlPositionFeatureTitle = options.htmlPositionFeatureTitle;
|
|
153
170
|
}
|
|
154
171
|
get wmsSource() {
|
|
155
172
|
if (!this._wmsSource) {
|
|
@@ -167,7 +184,7 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
167
184
|
let features = [];
|
|
168
185
|
try {
|
|
169
186
|
if (this.featureInfoResponseType === 'text/html') {
|
|
170
|
-
features = [new Feature()];
|
|
187
|
+
features = [new Feature({ title: this.htmlPositionFeatureTitle })];
|
|
171
188
|
}
|
|
172
189
|
else {
|
|
173
190
|
features = this.featureFormat.readFeatures(data, {
|
|
@@ -192,15 +209,24 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
192
209
|
return [];
|
|
193
210
|
}
|
|
194
211
|
async getFeaturesByCoordinate(coordinate, resolution, headers) {
|
|
212
|
+
if (this.extent?.isValid() &&
|
|
213
|
+
!containsCoordinate(this.extent.getCoordinatesInProjection(mercatorProjection), coordinate)) {
|
|
214
|
+
return [];
|
|
215
|
+
}
|
|
195
216
|
const projection = this.wmsSource.getProjection();
|
|
196
217
|
let coords = coordinate;
|
|
218
|
+
let res = resolution;
|
|
197
219
|
if (projection) {
|
|
198
220
|
const transform = getTransform(mercatorProjection.proj, projection);
|
|
199
|
-
|
|
200
|
-
coords = transform(coordinate.slice(), undefined, undefined);
|
|
221
|
+
coords = transform(coordinate.slice());
|
|
201
222
|
}
|
|
202
|
-
|
|
203
|
-
|
|
223
|
+
if (projection.getUnits() === 'degrees') {
|
|
224
|
+
const metersPerDegree = getMetersPerDegreeAtCoordinate(coords);
|
|
225
|
+
res = resolution / metersPerDegree;
|
|
226
|
+
}
|
|
227
|
+
const url = this.wmsSource.getFeatureInfoUrl(coords, res, projection, {
|
|
228
|
+
INFO_FORMAT: this.featureInfoResponseType,
|
|
229
|
+
});
|
|
204
230
|
if (this.featureInfoResponseType === 'text/html') {
|
|
205
231
|
return this.featureResponseCallback(null, coordinate).map((f) => this.getProviderFeature(f));
|
|
206
232
|
}
|
|
@@ -258,6 +284,9 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
258
284
|
if (this.extent) {
|
|
259
285
|
config.extent = this.extent.toJSON();
|
|
260
286
|
}
|
|
287
|
+
if (this.htmlPositionFeatureTitle) {
|
|
288
|
+
config.htmlPositionFeatureTitle = this.htmlPositionFeatureTitle;
|
|
289
|
+
}
|
|
261
290
|
return config;
|
|
262
291
|
}
|
|
263
292
|
destroy() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wmsFeatureProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/wmsFeatureProvider.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,mBAAmB,CAAC;AAErC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,OAA2C,MAAM,sBAAsB,CAAC;AAC/E,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAmC,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAI7B,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,OAAO,UAAU,EAAE,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"wmsFeatureProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/wmsFeatureProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export default class COGImageryProvider {
|
|
|
9
9
|
private _tilingScheme;
|
|
10
10
|
private _tileGrid;
|
|
11
11
|
private _boundTileLoader;
|
|
12
|
+
readonly tileWidth: number;
|
|
13
|
+
readonly tileHeight: number;
|
|
12
14
|
constructor(_source: GeoTIFFSource);
|
|
13
15
|
get _ready(): boolean;
|
|
14
16
|
get ready(): boolean;
|
|
@@ -17,8 +19,6 @@ export default class COGImageryProvider {
|
|
|
17
19
|
readonly errorEvent: CesiumEvent;
|
|
18
20
|
get credit(): undefined;
|
|
19
21
|
get proxy(): undefined;
|
|
20
|
-
get tileWidth(): number;
|
|
21
|
-
get tileHeight(): number;
|
|
22
22
|
get maximumLevel(): number;
|
|
23
23
|
get minimumLevel(): number;
|
|
24
24
|
get tileDiscardPolicy(): undefined;
|
|
@@ -49,6 +49,8 @@ export default class COGImageryProvider {
|
|
|
49
49
|
_tilingScheme;
|
|
50
50
|
_tileGrid;
|
|
51
51
|
_boundTileLoader;
|
|
52
|
+
tileWidth = 256;
|
|
53
|
+
tileHeight = 256;
|
|
52
54
|
constructor(_source) {
|
|
53
55
|
this._source = _source;
|
|
54
56
|
this._emptyCanvas = createEmptyCanvas(this.tileWidth, this.tileHeight);
|
|
@@ -61,6 +63,10 @@ export default class COGImageryProvider {
|
|
|
61
63
|
else {
|
|
62
64
|
this._boundTileLoader = this._loadUnalignedTile.bind(this);
|
|
63
65
|
}
|
|
66
|
+
// @ts-expect-error protected
|
|
67
|
+
const [width, height] = this._source.getTileSize(0);
|
|
68
|
+
this.tileWidth = Math.round(width);
|
|
69
|
+
this.tileHeight = Math.round(height);
|
|
64
70
|
}
|
|
65
71
|
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/naming-convention
|
|
66
72
|
get _ready() {
|
|
@@ -85,32 +91,6 @@ export default class COGImageryProvider {
|
|
|
85
91
|
get proxy() {
|
|
86
92
|
return undefined;
|
|
87
93
|
}
|
|
88
|
-
get tileWidth() {
|
|
89
|
-
const tileGrid = this._source.getTileGrid();
|
|
90
|
-
if (tileGrid) {
|
|
91
|
-
const tileSizeAtZoom0 = tileGrid.getTileSize(0);
|
|
92
|
-
if (Array.isArray(tileSizeAtZoom0)) {
|
|
93
|
-
return Math.round(tileSizeAtZoom0[0]);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
return Math.round(tileSizeAtZoom0); // same width and height
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return 256;
|
|
100
|
-
}
|
|
101
|
-
get tileHeight() {
|
|
102
|
-
const tileGrid = this._source.getTileGrid();
|
|
103
|
-
if (tileGrid) {
|
|
104
|
-
const tileSizeAtZoom0 = tileGrid.getTileSize(0);
|
|
105
|
-
if (Array.isArray(tileSizeAtZoom0)) {
|
|
106
|
-
return Math.round(tileSizeAtZoom0[1]);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
return Math.round(tileSizeAtZoom0); // same width and height
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return 256;
|
|
113
|
-
}
|
|
114
94
|
get maximumLevel() {
|
|
115
95
|
const tileGrid = this._source.getTileGrid();
|
|
116
96
|
if (tileGrid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cogImageryProvider.js","sourceRoot":"","sources":["../../../../src/layer/cesium/cogImageryProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,IAAI,iBAAiB,EAChC,MAAM,IAAI,YAAY,EACtB,QAAQ,IAAI,cAAc,EAC1B,SAAS,IAAI,eAAe,EAC5B,UAAU,IAAI,gBAAgB,GAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,UAAU,EACV,KAAK,IAAI,WAAW,EACpB,sBAAsB,EAEtB,IAAI,IAAI,UAAU,EAClB,SAAS,EAET,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,QAAkB,EAClB,YAA0B;IAE1B,MAAM,WAAW,GAAG,yBAAyB,CAC3C,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACvC,CAAC;IACF,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,OAAO,SAAS,CAAC,aAAa,CAC5B,eAAe,EACf,WAAW,EACX,UAAU,CAAC,QAAQ,CACpB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAqB;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAG,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAG,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEtE,IAAI,YAAsC,CAAC;IAE3C,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;QACzC,YAAY,GAAG,IAAI,sBAAsB,CAAC;YACxC,uBAAuB,EAAE,eAAe,CAAC,QAAQ,EAAE;YACnD,uBAAuB,EAAE,eAAe,CAAC,SAAS,EAAE;YACpD,SAAS,EAAE,yBAAyB,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;QAChD,YAAY,GAAG,IAAI,uBAAuB,CAAC;YACzC,uBAAuB,EAAE,eAAe,CAAC,QAAQ,EAAE;YACnD,uBAAuB,EAAE,eAAe,CAAC,SAAS,EAAE;YACpD,0BAA0B,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAChE,0BAA0B,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"cogImageryProvider.js","sourceRoot":"","sources":["../../../../src/layer/cesium/cogImageryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import GeoTIFF from 'ol/source/GeoTIFF.js';
|
|
1
|
+
import GeoTIFF, { type GeoTIFFSourceOptions } from 'ol/source/GeoTIFF.js';
|
|
2
2
|
import RasterLayer, { type RasterLayerImplementationOptions, type RasterLayerOptions } from './rasterLayer.js';
|
|
3
3
|
import type VcsMap from '../map/vcsMap.js';
|
|
4
4
|
import COGOpenlayersImpl from './openlayers/cogOpenlayersImpl.js';
|
|
@@ -17,6 +17,11 @@ export type COGLayerOptions = Omit<RasterLayerOptions, 'tilingSchema'> & {
|
|
|
17
17
|
* Passed directly to the GeoTIFF source.
|
|
18
18
|
*/
|
|
19
19
|
interpolate?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Passed directly to the GeoTIFF.js source options see
|
|
22
|
+
* https://openlayers.org/en/latest/apidoc/module-ol_source_GeoTIFF.html#~GeoTIFFSourceOptions
|
|
23
|
+
*/
|
|
24
|
+
sourceOptions?: GeoTIFFSourceOptions;
|
|
20
25
|
};
|
|
21
26
|
export type COGLayerImplementationOptions = RasterLayerImplementationOptions & {
|
|
22
27
|
source: GeoTIFF;
|
|
@@ -45,6 +45,7 @@ class COGLayer extends RasterLayer {
|
|
|
45
45
|
convertToRGB: 'auto',
|
|
46
46
|
normalize: undefined,
|
|
47
47
|
interpolate: undefined,
|
|
48
|
+
sourceOptions: undefined,
|
|
48
49
|
};
|
|
49
50
|
}
|
|
50
51
|
_sourceOptions;
|
|
@@ -56,6 +57,9 @@ class COGLayer extends RasterLayer {
|
|
|
56
57
|
convertToRGB: options.convertToRGB ?? defaultOptions.convertToRGB,
|
|
57
58
|
normalize: options.normalize,
|
|
58
59
|
interpolate: options.interpolate,
|
|
60
|
+
sourceOptions: options.sourceOptions
|
|
61
|
+
? structuredClone(options.sourceOptions)
|
|
62
|
+
: defaultOptions.sourceOptions,
|
|
59
63
|
};
|
|
60
64
|
this._supportedMaps = [OpenlayersMap.className, CesiumMap.className];
|
|
61
65
|
}
|
|
@@ -97,6 +101,9 @@ class COGLayer extends RasterLayer {
|
|
|
97
101
|
if (this._sourceOptions.interpolate != null) {
|
|
98
102
|
config.interpolate = this._sourceOptions.interpolate;
|
|
99
103
|
}
|
|
104
|
+
if (this._sourceOptions.sourceOptions != null) {
|
|
105
|
+
config.sourceOptions = structuredClone(this._sourceOptions.sourceOptions);
|
|
106
|
+
}
|
|
100
107
|
return config;
|
|
101
108
|
}
|
|
102
109
|
destroy() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cogLayer.js","sourceRoot":"","sources":["../../../src/layer/cogLayer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cogLayer.js","sourceRoot":"","sources":["../../../src/layer/cogLayer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ import type { TileWMS } from 'ol/source.js';
|
|
|
13
13
|
import type FeatureFormat from 'ol/format/Feature.js';
|
|
14
14
|
import WMSGetFeatureInfo from 'ol/format/WMSGetFeatureInfo.js';
|
|
15
15
|
import type { Options as WMSGetFeatureInfoOptions } from 'ol/format/WMSGetFeatureInfo.js';
|
|
16
|
+
import { containsCoordinate } from 'ol/extent.js';
|
|
16
17
|
import { parseInteger } from '@vcsuite/parsers';
|
|
17
18
|
import { getLogger } from '@vcsuite/logger';
|
|
18
19
|
import type { AbstractFeatureProviderOptions } from './abstractFeatureProvider.js';
|
|
@@ -76,6 +77,7 @@ export type WMSFeatureProviderOptions = AbstractFeatureProviderOptions & {
|
|
|
76
77
|
* @default '1.1.1'
|
|
77
78
|
*/
|
|
78
79
|
version?: string;
|
|
80
|
+
htmlPositionFeatureTitle?: string;
|
|
79
81
|
};
|
|
80
82
|
|
|
81
83
|
const gmlFormats = { GML: GML3, GML2, GML3, GML32 };
|
|
@@ -153,6 +155,22 @@ export function getFormat(
|
|
|
153
155
|
return null;
|
|
154
156
|
}
|
|
155
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Calculates meters per degree at a given coordinate's latitude
|
|
160
|
+
* @param coordinate - Coordinate in geographic projection
|
|
161
|
+
* @returns Meters per degree at the coordinate's latitude
|
|
162
|
+
*/
|
|
163
|
+
function getMetersPerDegreeAtCoordinate(coordinate: Coordinate): number {
|
|
164
|
+
const latitude = coordinate[1];
|
|
165
|
+
const latitudeRadians = (latitude * Math.PI) / 180;
|
|
166
|
+
|
|
167
|
+
// Meters per degree longitude varies with latitude: cos(lat) * metersPerDegreeAtEquator
|
|
168
|
+
// Meters per degree latitude is approximately constant at ~111,320 m
|
|
169
|
+
// Using an average that accounts for longitude compression at latitude
|
|
170
|
+
const metersPerDegreeAtEquator = 111320;
|
|
171
|
+
return metersPerDegreeAtEquator * Math.cos(latitudeRadians);
|
|
172
|
+
}
|
|
173
|
+
|
|
156
174
|
class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
157
175
|
static get className(): string {
|
|
158
176
|
return 'WMSFeatureProvider';
|
|
@@ -213,6 +231,8 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
213
231
|
*/
|
|
214
232
|
projection: Projection | undefined;
|
|
215
233
|
|
|
234
|
+
htmlPositionFeatureTitle?: string;
|
|
235
|
+
|
|
216
236
|
constructor(layerName: string, options: WMSFeatureProviderOptions) {
|
|
217
237
|
super(layerName, options);
|
|
218
238
|
const defaultOptions = WMSFeatureProvider.getDefaultOptions();
|
|
@@ -250,6 +270,7 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
250
270
|
this.projection = options.projection
|
|
251
271
|
? new Projection(options.projection)
|
|
252
272
|
: undefined;
|
|
273
|
+
this.htmlPositionFeatureTitle = options.htmlPositionFeatureTitle;
|
|
253
274
|
}
|
|
254
275
|
|
|
255
276
|
get wmsSource(): TileWMS {
|
|
@@ -273,7 +294,7 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
273
294
|
|
|
274
295
|
try {
|
|
275
296
|
if (this.featureInfoResponseType === 'text/html') {
|
|
276
|
-
features = [new Feature()];
|
|
297
|
+
features = [new Feature({ title: this.htmlPositionFeatureTitle })];
|
|
277
298
|
} else {
|
|
278
299
|
features = this.featureFormat!.readFeatures(data, {
|
|
279
300
|
dataProjection: this.projection ? this.projection.proj : undefined,
|
|
@@ -305,21 +326,31 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
305
326
|
resolution: number,
|
|
306
327
|
headers?: Record<string, string>,
|
|
307
328
|
): Promise<Feature[]> {
|
|
329
|
+
if (
|
|
330
|
+
this.extent?.isValid() &&
|
|
331
|
+
!containsCoordinate(
|
|
332
|
+
this.extent.getCoordinatesInProjection(mercatorProjection),
|
|
333
|
+
coordinate,
|
|
334
|
+
)
|
|
335
|
+
) {
|
|
336
|
+
return [];
|
|
337
|
+
}
|
|
338
|
+
|
|
308
339
|
const projection = this.wmsSource.getProjection() as OLProjection;
|
|
309
340
|
let coords = coordinate;
|
|
341
|
+
let res = resolution;
|
|
310
342
|
if (projection) {
|
|
311
343
|
const transform = getTransform(mercatorProjection.proj, projection);
|
|
312
|
-
|
|
313
|
-
|
|
344
|
+
coords = transform(coordinate.slice());
|
|
345
|
+
}
|
|
346
|
+
if (projection.getUnits() === 'degrees') {
|
|
347
|
+
const metersPerDegree = getMetersPerDegreeAtCoordinate(coords);
|
|
348
|
+
res = resolution / metersPerDegree;
|
|
314
349
|
}
|
|
315
350
|
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
resolution / metersPerUnit,
|
|
320
|
-
projection,
|
|
321
|
-
{ INFO_FORMAT: this.featureInfoResponseType },
|
|
322
|
-
);
|
|
351
|
+
const url = this.wmsSource.getFeatureInfoUrl(coords, res, projection, {
|
|
352
|
+
INFO_FORMAT: this.featureInfoResponseType,
|
|
353
|
+
});
|
|
323
354
|
|
|
324
355
|
if (this.featureInfoResponseType === 'text/html') {
|
|
325
356
|
return this.featureResponseCallback(null, coordinate).map((f) =>
|
|
@@ -389,6 +420,9 @@ class WMSFeatureProvider extends AbstractFeatureProvider {
|
|
|
389
420
|
if (this.extent) {
|
|
390
421
|
config.extent = this.extent.toJSON();
|
|
391
422
|
}
|
|
423
|
+
if (this.htmlPositionFeatureTitle) {
|
|
424
|
+
config.htmlPositionFeatureTitle = this.htmlPositionFeatureTitle;
|
|
425
|
+
}
|
|
392
426
|
|
|
393
427
|
return config as WMSFeatureProviderOptions;
|
|
394
428
|
}
|
package/src/global.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import type { mouseOverSymbol } from './util/editor/editorSymbols.js';
|
|
|
4
4
|
import type { default as VcsModule, VcsModuleConfig } from './vcsModule.js';
|
|
5
5
|
|
|
6
6
|
declare global {
|
|
7
|
-
// eslint-disable-next-line no-var
|
|
8
7
|
var useVcsCustomShading: boolean | undefined;
|
|
9
8
|
|
|
10
9
|
interface Window {
|
|
@@ -98,6 +98,10 @@ export default class COGImageryProvider {
|
|
|
98
98
|
level: number,
|
|
99
99
|
) => Promise<ImageryTypes>;
|
|
100
100
|
|
|
101
|
+
readonly tileWidth: number = 256;
|
|
102
|
+
|
|
103
|
+
readonly tileHeight: number = 256;
|
|
104
|
+
|
|
101
105
|
constructor(private _source: GeoTIFFSource) {
|
|
102
106
|
this._emptyCanvas = createEmptyCanvas(this.tileWidth, this.tileHeight);
|
|
103
107
|
this._projection = this._source.getProjection()!;
|
|
@@ -108,6 +112,11 @@ export default class COGImageryProvider {
|
|
|
108
112
|
} else {
|
|
109
113
|
this._boundTileLoader = this._loadUnalignedTile.bind(this);
|
|
110
114
|
}
|
|
115
|
+
|
|
116
|
+
// @ts-expect-error protected
|
|
117
|
+
const [width, height] = this._source.getTileSize(0);
|
|
118
|
+
this.tileWidth = Math.round(width);
|
|
119
|
+
this.tileHeight = Math.round(height);
|
|
111
120
|
}
|
|
112
121
|
|
|
113
122
|
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/naming-convention
|
|
@@ -140,32 +149,6 @@ export default class COGImageryProvider {
|
|
|
140
149
|
return undefined;
|
|
141
150
|
}
|
|
142
151
|
|
|
143
|
-
get tileWidth(): number {
|
|
144
|
-
const tileGrid = this._source.getTileGrid();
|
|
145
|
-
if (tileGrid) {
|
|
146
|
-
const tileSizeAtZoom0 = tileGrid.getTileSize(0);
|
|
147
|
-
if (Array.isArray(tileSizeAtZoom0)) {
|
|
148
|
-
return Math.round(tileSizeAtZoom0[0]);
|
|
149
|
-
} else {
|
|
150
|
-
return Math.round(tileSizeAtZoom0); // same width and height
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return 256;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
get tileHeight(): number {
|
|
157
|
-
const tileGrid = this._source.getTileGrid();
|
|
158
|
-
if (tileGrid) {
|
|
159
|
-
const tileSizeAtZoom0 = tileGrid.getTileSize(0);
|
|
160
|
-
if (Array.isArray(tileSizeAtZoom0)) {
|
|
161
|
-
return Math.round(tileSizeAtZoom0[1]);
|
|
162
|
-
} else {
|
|
163
|
-
return Math.round(tileSizeAtZoom0); // same width and height
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return 256;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
152
|
get maximumLevel(): number {
|
|
170
153
|
const tileGrid = this._source.getTileGrid();
|
|
171
154
|
if (tileGrid) {
|
package/src/layer/cogLayer.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import GeoTIFF, {
|
|
1
|
+
import GeoTIFF, {
|
|
2
|
+
type GeoTIFFSourceOptions,
|
|
3
|
+
type Options as GeoTIFFOptions,
|
|
4
|
+
} from 'ol/source/GeoTIFF.js';
|
|
2
5
|
import type { EventsKey } from 'ol/events.js';
|
|
3
6
|
import { unByKey } from 'ol/Observable.js';
|
|
4
7
|
import RasterLayer, {
|
|
@@ -28,6 +31,11 @@ export type COGLayerOptions = Omit<RasterLayerOptions, 'tilingSchema'> & {
|
|
|
28
31
|
* Passed directly to the GeoTIFF source.
|
|
29
32
|
*/
|
|
30
33
|
interpolate?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Passed directly to the GeoTIFF.js source options see
|
|
36
|
+
* https://openlayers.org/en/latest/apidoc/module-ol_source_GeoTIFF.html#~GeoTIFFSourceOptions
|
|
37
|
+
*/
|
|
38
|
+
sourceOptions?: GeoTIFFSourceOptions;
|
|
31
39
|
};
|
|
32
40
|
|
|
33
41
|
export type COGLayerImplementationOptions = RasterLayerImplementationOptions & {
|
|
@@ -72,6 +80,7 @@ class COGLayer extends RasterLayer<COGOpenlayersImpl | COGCesiumImpl> {
|
|
|
72
80
|
convertToRGB: 'auto',
|
|
73
81
|
normalize: undefined,
|
|
74
82
|
interpolate: undefined,
|
|
83
|
+
sourceOptions: undefined,
|
|
75
84
|
};
|
|
76
85
|
}
|
|
77
86
|
|
|
@@ -85,6 +94,9 @@ class COGLayer extends RasterLayer<COGOpenlayersImpl | COGCesiumImpl> {
|
|
|
85
94
|
convertToRGB: options.convertToRGB ?? defaultOptions.convertToRGB,
|
|
86
95
|
normalize: options.normalize,
|
|
87
96
|
interpolate: options.interpolate,
|
|
97
|
+
sourceOptions: options.sourceOptions
|
|
98
|
+
? structuredClone(options.sourceOptions)
|
|
99
|
+
: defaultOptions.sourceOptions,
|
|
88
100
|
};
|
|
89
101
|
|
|
90
102
|
this._supportedMaps = [OpenlayersMap.className, CesiumMap.className];
|
|
@@ -138,6 +150,10 @@ class COGLayer extends RasterLayer<COGOpenlayersImpl | COGCesiumImpl> {
|
|
|
138
150
|
config.interpolate = this._sourceOptions.interpolate;
|
|
139
151
|
}
|
|
140
152
|
|
|
153
|
+
if (this._sourceOptions.sourceOptions != null) {
|
|
154
|
+
config.sourceOptions = structuredClone(this._sourceOptions.sourceOptions);
|
|
155
|
+
}
|
|
156
|
+
|
|
141
157
|
return config;
|
|
142
158
|
}
|
|
143
159
|
|