ol-stac 1.2.0 → 1.3.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/util.js CHANGED
@@ -2,12 +2,12 @@
2
2
  * @module ol/util
3
3
  */
4
4
  import VectorLayer from 'ol/layer/Vector.js';
5
- import { isRegistered as isProj4Registered } from 'ol/proj/proj4.js';
6
5
  import Circle from 'ol/style/Circle.js';
7
6
  import Fill from 'ol/style/Fill.js';
8
7
  import Stroke from 'ol/style/Stroke.js';
9
8
  import Style from 'ol/style/Style.js';
10
- import { STAC } from 'stac-js';
9
+ import { VERSION } from 'ol/util.js';
10
+ import { isObject } from 'stac-js/src/utils.js';
11
11
  /**
12
12
  * @typedef {import('ol/colorlike.js').ColorLike} ColorLike
13
13
  */
@@ -19,10 +19,14 @@ import { STAC } from 'stac-js';
19
19
  * @typedef {import('ol/Feature.js').default} Feature
20
20
  */
21
21
  /**
22
- * @typedef {import('ol/proj.js').Projection} Projection
22
+ * @typedef {import('stac-js').Asset} Asset
23
23
  */
24
24
  /**
25
- * @typedef {import('ol/proj.js').ProjectionLike} ProjectionLike
25
+ * @todo use import('stac-js').Band once exported from stac-js
26
+ * @typedef {import('stac-js/src/band.js').default} Band
27
+ */
28
+ /**
29
+ * @typedef {import('stac-js').STAC} STAC
26
30
  */
27
31
  /**
28
32
  * The pattern for the supported versions of the label extension.
@@ -30,6 +34,29 @@ import { STAC } from 'stac-js';
30
34
  */
31
35
  export const LABEL_EXTENSION = 'https://stac-extensions.github.io/label/v1.*/schema.json';
32
36
  const transparentFill = new Fill({ color: 'rgba(0,0,0,0)' });
37
+ /**
38
+ * Check whether the installed OL version is at least the given version.
39
+ * Returns true for dev builds ('latest').
40
+ *
41
+ * @param {string} minVersion The minimum version string (e.g. '10.9.0').
42
+ * @return {boolean} `true` if the OL version is >= minVersion.
43
+ */
44
+ function olVersionAtLeast(minVersion) {
45
+ if (!VERSION || VERSION === 'latest') {
46
+ return true;
47
+ }
48
+ const current = VERSION.split('.').map(Number);
49
+ const required = minVersion.split('.').map(Number);
50
+ for (let i = 0; i < required.length; i++) {
51
+ if ((current[i] || 0) > required[i]) {
52
+ return true;
53
+ }
54
+ if ((current[i] || 0) < required[i]) {
55
+ return false;
56
+ }
57
+ }
58
+ return true;
59
+ }
33
60
  /**
34
61
  * Creates a style for visualization.
35
62
  *
@@ -99,7 +126,7 @@ export async function getStacObjectsForEvent(event, exclude = null, selectedFeat
99
126
  layerFilter(layer) {
100
127
  if (layer instanceof VectorLayer && layer.get('bounds') === true) {
101
128
  const stac = layer.get('stac');
102
- if (stac instanceof STAC && (!exclude || !stac.equals(exclude))) {
129
+ if (stac && stac.isSTAC && (!exclude || !stac.is(exclude))) {
103
130
  return true;
104
131
  }
105
132
  }
@@ -111,70 +138,93 @@ export async function getStacObjectsForEvent(event, exclude = null, selectedFeat
111
138
  /**
112
139
  * Get the source info for the GeoTiff from the asset.
113
140
  * @param {import('stac-js').Asset} asset The asset to read the information from.
114
- * @param {Array<number>} selectedBands The (one-based) bands to show.
141
+ * @param {Array<number|string>} selectedBands The bands to show. One-based index of the band, or the name of the band.
115
142
  * @return {import('ol/source/GeoTIFF.js').SourceInfo} The source info for the GeoTiff asset
116
143
  */
117
144
  export function getGeoTiffSourceInfoFromAsset(asset, selectedBands) {
118
145
  const sourceInfo = {
119
146
  url: asset.getAbsoluteUrl(),
120
147
  };
121
- let source = asset;
122
- let bands = asset.getBands();
123
- // If there's just one band, we can also read the information from there.
124
- if (bands.length === 1) {
125
- source = bands[0];
126
- bands = [];
148
+ const bands = asset.getBands();
149
+ const sources = bands.length > 0 ? bands : [asset];
150
+ const perBand = sources.length > 1 && olVersionAtLeast('10.9.0');
151
+ const assetNodata = asset.getNoDataValues();
152
+ const bandCount = perBand
153
+ ? Math.max(...bands.map((b) => b.getIndex())) + 1
154
+ : 1;
155
+ const minValues = new Array(bandCount).fill(undefined);
156
+ const maxValues = new Array(bandCount).fill(undefined);
157
+ const nodataValues = new Array(bandCount).fill(undefined);
158
+ let index = 0;
159
+ for (const source of sources) {
160
+ const stats = source.getStatistics();
161
+ let { minimum, maximum } = stats;
162
+ const { mean, stddev } = stats;
163
+ // Use mean ± 2σ for a better visualization stretch (~95% of values)
164
+ if (typeof mean === 'number' && typeof stddev === 'number' && stddev > 0) {
165
+ const stretchMin = mean - 2 * stddev;
166
+ const stretchMax = mean + 2 * stddev;
167
+ minimum =
168
+ typeof minimum === 'number'
169
+ ? Math.max(minimum, stretchMin)
170
+ : stretchMin;
171
+ maximum =
172
+ typeof maximum === 'number'
173
+ ? Math.min(maximum, stretchMax)
174
+ : stretchMax;
175
+ }
176
+ if (typeof minimum === 'number') {
177
+ minValues[index] = minimum;
178
+ }
179
+ if (typeof maximum === 'number') {
180
+ maxValues[index] = maximum;
181
+ }
182
+ const nodata = source.getNoDataValues();
183
+ if (nodata.length > 0) {
184
+ nodataValues[index] = nodata[0];
185
+ }
186
+ else if (assetNodata.length > 0) {
187
+ nodataValues[index] = assetNodata[0];
188
+ }
189
+ index++;
127
190
  }
128
- // TODO: It would be useful if OL would allow min/max values per band
129
- const { minimum, maximum } = source.getMinMaxValues();
130
- if (typeof minimum === 'number') {
131
- sourceInfo.min = minimum;
191
+ const defined = (v) => v !== undefined;
192
+ if (minValues.some(defined)) {
193
+ sourceInfo.min = perBand
194
+ ? minValues
195
+ : Math.min(...minValues.filter(defined));
132
196
  }
133
- if (typeof maximum === 'number') {
134
- sourceInfo.max = maximum;
197
+ if (maxValues.some(defined)) {
198
+ sourceInfo.max = perBand
199
+ ? maxValues
200
+ : Math.max(...maxValues.filter(defined));
135
201
  }
136
- if (typeof sourceInfo.min !== 'number' &&
137
- typeof sourceInfo.max !== 'number' &&
138
- bands.length > 1) {
139
- // Read from bands as fallback and if available
140
- for (const band of bands) {
141
- const { minimum, maximum } = band.getMinMaxValues();
142
- if (typeof minimum === 'number' &&
143
- (typeof sourceInfo.min === 'undefined' || minimum < sourceInfo.min)) {
144
- sourceInfo.min = minimum;
145
- }
146
- if (typeof maximum === 'number' &&
147
- (typeof sourceInfo.max === 'undefined' || maximum > sourceInfo.max)) {
148
- sourceInfo.max = maximum;
149
- }
202
+ if (nodataValues.some(defined)) {
203
+ if (perBand) {
204
+ sourceInfo.nodata = nodataValues;
150
205
  }
151
- }
152
- // TODO: It would be useful if OL would allow multiple no-data values
153
- const nodata = source.getNoDataValues();
154
- if (nodata.length > 0) {
155
- sourceInfo.nodata = nodata[0];
156
- }
157
- else if (bands.length > 1) {
158
- // Read from bands as fallback and if available
159
- let nodata = undefined;
160
- for (const band of bands) {
161
- const bandNoData = band.getNoDataValues();
162
- if (bandNoData.length > 0) {
163
- if (typeof nodata === 'undefined') {
164
- nodata = bandNoData[0];
165
- }
166
- else if (nodata !== bandNoData[0]) {
167
- nodata = undefined;
168
- break;
169
- }
206
+ else {
207
+ const unique = new Set(nodataValues.filter(defined));
208
+ if (unique.size === 1) {
209
+ sourceInfo.nodata = [...unique][0];
170
210
  }
171
211
  }
172
- if (typeof nodata !== 'undefined') {
173
- sourceInfo.nodata = nodata;
174
- }
175
212
  }
176
213
  if (selectedBands.length > 0) {
177
- sourceInfo.bands = selectedBands;
214
+ sourceInfo.bands = selectedBands
215
+ .map((band) => {
216
+ if (typeof band === 'number') {
217
+ return band;
218
+ }
219
+ const b = asset.findBand(band);
220
+ if (b) {
221
+ return b.getIndex() + 1;
222
+ }
223
+ // eslint-disable-next-line no-console
224
+ console.error(`Band with name ${band} not found in asset ${asset.getKey()}`);
225
+ return null;
226
+ })
227
+ .filter((band) => band !== null);
178
228
  }
179
229
  else {
180
230
  const visualBands = asset.findVisualBands();
@@ -188,44 +238,6 @@ export function getGeoTiffSourceInfoFromAsset(asset, selectedBands) {
188
238
  }
189
239
  return sourceInfo;
190
240
  }
191
- /**
192
- * Load the projection for the given projection code from the internet.
193
- *
194
- * @param {string} code Projection code, e.g. 'EPSG:1234'
195
- * @return {Promise<Projection|null>} The loaded projection
196
- */
197
- export async function loadProjection(code) {
198
- try {
199
- // @ts-ignore - Support both old and new OpenLayers versions
200
- const { fromProjectionCode, fromEPSGCode } = await import('ol/proj/proj4.js');
201
- if (typeof fromProjectionCode === 'function') {
202
- // Supported since ol v10.8.0
203
- return await fromProjectionCode(code);
204
- }
205
- // Supported until ol v11.0.0
206
- return await fromEPSGCode(code);
207
- }
208
- catch (_) {
209
- return null;
210
- }
211
- }
212
- /**
213
- * Gets the projection from the asset or link.
214
- * @param {import('stac-js').STACReference} reference The asset or link to read the information from.
215
- * @param {ProjectionLike} defaultProjection A default projection to use.
216
- * @return {Promise<ProjectionLike>} The projection, if any.
217
- */
218
- export async function getProjection(reference, defaultProjection = undefined) {
219
- let projection;
220
- if (isProj4Registered()) {
221
- // TODO: It would be great to handle WKT2 and PROJJSON, but is not supported yet by proj4js.
222
- const code = reference.getMetadata('proj:code');
223
- if (code) {
224
- projection = await loadProjection(code);
225
- }
226
- }
227
- return projection || defaultProjection;
228
- }
229
241
  /**
230
242
  * Returns the style for the footprint.
231
243
  * Removes the fill if anything is meant to be shown in the bounds.
@@ -242,6 +254,47 @@ export function getBoundsStyle(originalStyle, layerGroup) {
242
254
  }
243
255
  return style;
244
256
  }
257
+ /**
258
+ * Parse the GeoZarr source options from an asset.
259
+ *
260
+ * @param {Asset} asset The asset to read the information from.
261
+ * @param {Array<number|string>} selectedBands The bands to show. One-based index of the band, or the name of the band.
262
+ * @return {Object} The GeoZarr source options
263
+ * @api
264
+ */
265
+ export function getGeoZarrSourceOptionsFromAsset(asset, selectedBands) {
266
+ const options = {
267
+ url: asset.getAbsoluteUrl(),
268
+ };
269
+ if (selectedBands.length > 0) {
270
+ options.bands = selectedBands
271
+ .map((band) => {
272
+ if (typeof band === 'string') {
273
+ return band;
274
+ }
275
+ const bands = asset.getBands();
276
+ const bandObj = bands[band - 1];
277
+ if (isObject(bandObj) && typeof bandObj.name === 'string') {
278
+ return bandObj.name;
279
+ }
280
+ // eslint-disable-next-line no-console
281
+ console.error(`Band with index ${band} not found in asset ${asset.getKey()}`);
282
+ return null;
283
+ })
284
+ .filter(Boolean);
285
+ }
286
+ else {
287
+ const bands = asset.findVisualBands();
288
+ if (bands) {
289
+ options.bands = [
290
+ bands.red.name,
291
+ bands.green.name,
292
+ bands.blue.name,
293
+ ].filter(Boolean);
294
+ }
295
+ }
296
+ return options;
297
+ }
245
298
  /**
246
299
  * Get a URL from a web-map-link that is specific enough, i.e.
247
300
  * replaces any occurances of {s} if possible, otherwise returns null.
package/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/ol/util.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/ol/util.js"],"names":[],"mappings":"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"}