ol-stac 1.0.0-beta.9 → 1.0.0-rc.2

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/README.md CHANGED
@@ -15,6 +15,8 @@ Explore the examples to get started with some more code:
15
15
  Dig into the API documentation for all details:
16
16
  <https://m-mohr.github.io/ol-stac/en/latest/apidoc/>
17
17
 
18
+ **ol-stac requires OpenLayers version >=7.5.2**
19
+
18
20
  ## Sponsors
19
21
 
20
22
  ol-stac appreciates contributions of all kinds.
package/layer/STAC.d.ts CHANGED
@@ -15,6 +15,15 @@ export type Options = {
15
15
  * `data` take precedence over `url`.
16
16
  */
17
17
  data?: STAC | Asset | any;
18
+ /**
19
+ * For STAC Catalogs and Collections, any child entites
20
+ * to show. Can be STAC ItemCollections (as ItemCollection, GeoJSON FeatureCollection, or URL) or a list of STAC entities.
21
+ */
22
+ children?: ItemCollection | any | Array<STAC> | string | null;
23
+ /**
24
+ * The the given children, apply the given options.
25
+ */
26
+ childrenOptions?: Options | undefined;
18
27
  /**
19
28
  * The selector for the assets to be rendered,
20
29
  * only for STAC Items and Collections.
@@ -45,15 +54,15 @@ export type Options = {
45
54
  */
46
55
  displayGeoTiffByDefault?: boolean | undefined;
47
56
  /**
48
- * Allow to display images that a browser can display (e.g. PNG, JPEG),
49
- * usually assets with role `thumbnail` or the link with relation type `preview`.
57
+ * Allow to display preview images that a browser can display (e.g. PNG, JPEG),
58
+ * i.e. assets with any of the roles `thumbnail`, `overview`, or a link with relation type `preview`.
50
59
  * The previews are usually not covering the full extents and as such may be placed incorrectly on the map.
51
- * For performance reasons, it is recommended to enable this option if you pass in STAC API Items.
60
+ * For performance reasons, it is recommended to enable this option if you pass in STAC API Items instead of `displayOverview`.
52
61
  */
53
62
  displayPreview?: boolean | undefined;
54
63
  /**
55
64
  * Allow to display COGs and, if `displayGeoTiffByDefault` is enabled, GeoTiffs,
56
- * usually the assets with role `overview` or `visual`.
65
+ * usually an asset with role `overview` or `visual`.
57
66
  */
58
67
  displayOverview?: boolean | undefined;
59
68
  /**
@@ -70,7 +79,7 @@ export type Options = {
70
79
  */
71
80
  boundsStyle?: import("ol/style/Style.js").default | undefined;
72
81
  /**
73
- * The style for individual items in a list of STAC Items or Collections.
82
+ * The style for individual children in a list of STAC Items or Collections.
74
83
  */
75
84
  collectionStyle?: import("ol/style/Style.js").default | undefined;
76
85
  /**
@@ -133,6 +142,11 @@ export type Options = {
133
142
  properties?: {
134
143
  [x: string]: any;
135
144
  } | undefined;
145
+ /**
146
+ * Disable the migration of the STAC object to the latest version.
147
+ * Only enable this if you are sure that the STAC object is already in the latest version.
148
+ */
149
+ disableMigration?: boolean | undefined;
136
150
  };
137
151
  /**
138
152
  * @typedef {import("ol/extent.js").Extent} Extent
@@ -155,6 +169,9 @@ export type Options = {
155
169
  * Can also be used as url for data, if it is absolute and doesn't contain a self link.
156
170
  * @property {STAC|Asset|Object} [data] The STAC metadata. Any of `url` and `data` must be provided.
157
171
  * `data` take precedence over `url`.
172
+ * @property {ItemCollection|Object|Array<STAC>|string|null} [children=null] For STAC Catalogs and Collections, any child entites
173
+ * to show. Can be STAC ItemCollections (as ItemCollection, GeoJSON FeatureCollection, or URL) or a list of STAC entities.
174
+ * @property {Options} [childrenOptions={}] The the given children, apply the given options.
158
175
  * @property {Array<string|Asset>|null} [assets=null] The selector for the assets to be rendered,
159
176
  * only for STAC Items and Collections.
160
177
  * This can be an array of strings corresponding to asset keys or Asset objects.
@@ -170,12 +187,12 @@ export type Options = {
170
187
  * by default.
171
188
  * @property {boolean} [displayGeoTiffByDefault=false] Allow to choose non-cloud-optimized GeoTiffs as default image to show,
172
189
  * which might not work well for larger files or larger amounts of files.
173
- * @property {boolean} [displayPreview=false] Allow to display images that a browser can display (e.g. PNG, JPEG),
174
- * usually assets with role `thumbnail` or the link with relation type `preview`.
190
+ * @property {boolean} [displayPreview=false] Allow to display preview images that a browser can display (e.g. PNG, JPEG),
191
+ * i.e. assets with any of the roles `thumbnail`, `overview`, or a link with relation type `preview`.
175
192
  * The previews are usually not covering the full extents and as such may be placed incorrectly on the map.
176
- * For performance reasons, it is recommended to enable this option if you pass in STAC API Items.
193
+ * For performance reasons, it is recommended to enable this option if you pass in STAC API Items instead of `displayOverview`.
177
194
  * @property {boolean} [displayOverview=true] Allow to display COGs and, if `displayGeoTiffByDefault` is enabled, GeoTiffs,
178
- * usually the assets with role `overview` or `visual`.
195
+ * usually an asset with role `overview` or `visual`.
179
196
  * @property {string|boolean|Array<Link|string>} [displayWebMapLink=false] Allow to display a layer
180
197
  * based on the information provided through the web map links extension.
181
198
  * If an array of links or link ids (property `id` in a Link Object) is provided, all corresponding layers will be shown.
@@ -183,7 +200,7 @@ export type Options = {
183
200
  * it lets this library choose a web map link to show, but only if no other data is shown.
184
201
  * To disable the functionality set this to `false`.
185
202
  * @property {Style} [boundsStyle] The style for the overall bounds / footprint.
186
- * @property {Style} [collectionStyle] The style for individual items in a list of STAC Items or Collections.
203
+ * @property {Style} [collectionStyle] The style for individual children in a list of STAC Items or Collections.
187
204
  * @property {null|string} [crossOrigin] For thumbnails: The `crossOrigin` attribute for loaded images / tiles.
188
205
  * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.
189
206
  * @property {function(Asset):string|null} [buildTileUrlTemplate=null] A function that generates a URL template for a tile server (XYZ),
@@ -206,6 +223,8 @@ export type Options = {
206
223
  * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will
207
224
  * be visible.
208
225
  * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`. `stac` and `bounds` are reserved and may be overridden.
226
+ * @property {boolean} [disableMigration=false] Disable the migration of the STAC object to the latest version.
227
+ * Only enable this if you are sure that the STAC object is already in the latest version.
209
228
  */
210
229
  /**
211
230
  * @classdesc
@@ -230,12 +249,17 @@ declare class STACLayer extends LayerGroup {
230
249
  */
231
250
  private getSourceOptions_;
232
251
  /**
233
- * @type {STAC|Asset}
252
+ * @type {Array<STAC>|null}
253
+ * @private
254
+ */
255
+ private children_;
256
+ /**
257
+ * @type {Options}
234
258
  * @private
235
259
  */
236
- private data_;
260
+ private childrenOptions_;
237
261
  /**
238
- * @type {Array<Asset> | null}
262
+ * @type {Array<Asset>|null}
239
263
  * @private
240
264
  */
241
265
  private assets_;
@@ -245,7 +269,7 @@ declare class STACLayer extends LayerGroup {
245
269
  */
246
270
  private bands_;
247
271
  /**
248
- * @type {string | null}
272
+ * @type {string|null}
249
273
  * @private
250
274
  */
251
275
  private crossOrigin_;
@@ -298,12 +322,17 @@ declare class STACLayer extends LayerGroup {
298
322
  * @private
299
323
  */
300
324
  private boundsLayer_;
325
+ /**
326
+ * @type {boolean}
327
+ * @private
328
+ */
329
+ private disableMigration_;
301
330
  /**
302
331
  * Returns the vector layer that visualizes the bounds / footprint.
303
332
  * @return {VectorLayer|null} The vector layer for the bounds
304
333
  * @api
305
334
  */
306
- getBoundsLayer(): VectorLayer<any> | null;
335
+ getBoundsLayer(): VectorLayer | null;
307
336
  /**
308
337
  * @private
309
338
  * @param {Error} error The error.
@@ -313,37 +342,24 @@ declare class STACLayer extends LayerGroup {
313
342
  * @private
314
343
  * @param {STAC|Asset|Object} data The STAC data.
315
344
  * @param {string} url The url to the data.
316
- * @param {Array<Asset|string> | null} assets The assets to show.
345
+ * @param {ItemCollection|Object|Array<STAC>|string|null} children The child STAC entities to show.
346
+ * @param {Array<Asset|string>|null} assets The assets to show.
317
347
  * @param {Array<number>} bands The (one-based) bands to show.
318
348
  */
319
349
  private configure_;
320
350
  /**
321
351
  * @private
352
+ * @param {Array<STAC>} collection The list of STAC entities to show.
353
+ * @param {Options} [options] Options for the children.
322
354
  * @return {Promise} Resolves when complete.
323
355
  */
324
- private addApiCollection_;
325
- /**
326
- * @private
327
- * @return {Promise} Resolves when complete.
328
- */
329
- private addStacAssets_;
330
- /**
331
- * @private
332
- * @param {Asset|Link} [ref] A STAC Link or Asset
333
- * @return {Promise<Layer|undefined>} Resolves with a Layer or undefined when complete.
334
- */
335
- private addImagery_;
356
+ private addChildren_;
336
357
  /**
337
358
  * @private
338
- * @param {Asset|Link} [thumbnail] A STAC Link or Asset
359
+ * @param {Asset|Link} [image] A STAC Link or Asset
339
360
  * @return {Promise<ImageLayer|undefined>} Resolves with am ImageLayer or udnefined when complete.
340
361
  */
341
- private addThumbnail_;
342
- /**
343
- * Adds a layer for the web map links available in the STAC links.
344
- * @return {Promise<Array<Layer>|undefined>} Resolves with a Layer or undefined when complete.
345
- */
346
- addWebMapLinks_(): Promise<Array<Layer> | undefined>;
362
+ private addPreviewImage_;
347
363
  /**
348
364
  * Adds a layer for a link that implements the web-map-links extension.
349
365
  * Supports: PMTiles, TileJSON, WMS, WMTS, XYZ
@@ -400,6 +416,14 @@ declare class STACLayer extends LayerGroup {
400
416
  * @api
401
417
  */
402
418
  setAssets(assets: Array<string | Asset> | null): Promise<any>;
419
+ /**
420
+ * Updates the children STAC entities to be rendered.
421
+ * @param {ItemCollection|Object|Array<STAC>|string|null} childs The children to show.
422
+ * @param {Options} [options] STACLayer options for the children. Only applies if `children` are given.
423
+ * @return {Promise} Resolves when all items are rendered.
424
+ * @api
425
+ */
426
+ setChildren(childs: ItemCollection | any | Array<STAC> | string | null, options?: Options | undefined): Promise<any>;
403
427
  /**
404
428
  * Get the STAC object.
405
429
  *
@@ -407,6 +431,13 @@ declare class STACLayer extends LayerGroup {
407
431
  * @api
408
432
  */
409
433
  getData(): STAC | Asset;
434
+ /**
435
+ * Get the children STAC entities.
436
+ *
437
+ * @return {STAC} The STAC child entities.
438
+ * @api
439
+ */
440
+ getChildren(): STAC;
410
441
  /**
411
442
  * Get the STAC assets shown.
412
443
  *
@@ -414,6 +445,18 @@ declare class STACLayer extends LayerGroup {
414
445
  * @api
415
446
  */
416
447
  getAssets(): Array<Asset>;
448
+ /**
449
+ * Get the attributions of the STAC entity assigned to this layer.
450
+ *
451
+ * @return {Array<string>} Attributions for this layer.
452
+ * @api
453
+ */
454
+ getAttributions(): Array<string>;
455
+ /**
456
+ * Get the layer source.
457
+ * @return {SourceType|null} The layer source (or `null` if not yet set).
458
+ */
459
+ getSource(): SourceType | null;
417
460
  }
418
461
  import SourceType from '../source/type.js';
419
462
  import LayerGroup from 'ol/layer/Group.js';
@@ -1 +1 @@
1
- {"version":3,"file":"STAC.d.ts","sourceRoot":"","sources":["../../../src/ol/layer/STAC.js"],"names":[],"mappings":";qBAoCa,OAAO,cAAc,EAAE,MAAM;oBAG7B,OAAO,aAAa,EAAE,KAAK;;oBAM3B,OAAO,aAAa,EAAE,KAAK;4BAG3B,OAAO,mBAAmB,EAAE,aAAa;;;;;;;;;;;WAOxC,kBAAiB;;;;;;;;;;;;;;;;;;;+BAOR,UAAU,QAAE,aAAa,QAAE,CAAC,QAAM,IAAI,CAAC,KAAE,CAAC,aAAa,GAAC,QAAQ,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA0BxE,MAAM,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AArDzC;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH;;;;;;;;;;GAUG;AACH;IACE;;;OAGG;IACH,qBAHW,OAAO,EAmIjB;IAjHC;;;OAGG;IACH,0BAAiD;IAEjD;;;OAGG;IACH,cAAU;IAEV;;;OAGG;IACH,gBAAmB;IAEnB;;;OAGG;IACH,eAAgB;IAEhB;;;OAGG;IACH,qBAA+C;IAE/C;;;OAGG;IACH,0BAA0E;IAE1E;;;OAGG;IACH,iCAAwE;IAExE;;;OAGG;IACH,wBAAsD;IAEtD;;;OAGG;IACH,yBAAwE;IAExE;;OAEG;IACH,oBAFU,MAAM,GAAC,OAAO,GAAC,MAAM,IAAI,GAAC,MAAM,CAAC,CAEiB;IAE5D;;;OAGG;IACH,8BAAiE;IAEjE;;;OAGG;IACH,gCAAsE;IAEtE;;;OAGG;IACH,qBAA6D;IAE7D;;;OAGG;IACH,yBAAyE;IAEzE;;;OAGG;IACH,qBAAwB;IA4B1B;;;;OAIG;IACH,kBAHY,mBAAY,IAAI,CAK3B;IAED;;;OAGG;IACH,qBASC;IAED;;;;;;OAMG;IACH,mBAuCC;IAED;;;OAGG;IACH,0BAiBC;IAED;;;OAGG;IACH,uBAsBC;IAED;;;;OAIG;IACH,oBAUC;IAED;;;;OAIG;IACH,sBA0BC;IAED;;;OAGG;IACH,mBAFY,QAAQ,MAAM,KAAK,CAAC,GAAC,SAAS,CAAC,CAO1C;IAED;;;;;;;OAOG;IACH,4BAHY,QAAQ,MAAM,KAAK,CAAC,GAAC,SAAS,CAAC,CAuI1C;IAED;;;;OAIG;IACH,oBA+DC;IAED;;;;OAIG;IACH,gCAgBC;IAED;;;;;OAKG;IACH,kBAIC;IAED;;;OAGG;IACH,sBA+BC;IAED;;OAEG;IACH,sBAwBC;IAED;;;;OAIG;IACH,iBAHY,OAAO,CASlB;IAED;;;;OAIG;IACH,kBAHY,MAAM,IAAI,CAAC,CA+BtB;IAED;;;;;OAKG;IACH,kBAJW,MAAM,MAAM,QAAM,CAAC,GAAC,IAAI,gBAmBlC;IAED;;;;;OAKG;IACH,WAHY,YAAU,CAKrB;IAED;;;;;OAKG;IACH,aAHY,YAAY,CAKvB;CAoCF;uBAr2BsB,mBAAmB;uBADnB,mBAAmB;wBAKlB,oBAAoB"}
1
+ {"version":3,"file":"STAC.d.ts","sourceRoot":"","sources":["../../../src/ol/layer/STAC.js"],"names":[],"mappings":";qBAoCa,OAAO,cAAc,EAAE,MAAM;oBAG7B,OAAO,aAAa,EAAE,KAAK;;oBAM3B,OAAO,aAAa,EAAE,KAAK;4BAG3B,OAAO,mBAAmB,EAAE,aAAa;;;;;;;;;;;WAOxC,kBAAiB;;;;;eAEjB,uBAAsB,WAAW,GAAC,MAAM,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;+BAQpC,UAAU,QAAE,aAAa,QAAE,CAAC,QAAM,IAAI,CAAC,KAAE,CAAC,aAAa,GAAC,QAAQ,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA0BxE,MAAM,GAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxDzC;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH;;;;;;;;;;GAUG;AACH;IACE;;;OAGG;IACH,qBAHW,OAAO,EAqJjB;IAnIC;;;OAGG;IACH,0BAAiD;IAEjD;;;OAGG;IACH,kBAAqB;IAErB;;;OAGG;IACH,yBAAqD;IAErD;;;OAGG;IACH,gBAAmB;IAEnB;;;OAGG;IACH,eAAgB;IAEhB;;;OAGG;IACH,qBAA+C;IAE/C;;;OAGG;IACH,0BAA0E;IAE1E;;;OAGG;IACH,iCAAwE;IAExE;;;OAGG;IACH,wBAAsD;IAEtD;;;OAGG;IACH,yBAAwE;IAExE;;OAEG;IACH,oBAFU,MAAM,GAAC,OAAO,GAAC,MAAM,IAAI,GAAC,MAAM,CAAC,CAEiB;IAE5D;;;OAGG;IACH,8BAAiE;IAEjE;;;OAGG;IACH,gCAAsE;IAEtE;;;OAGG;IACH,qBAA6D;IAE7D;;;OAGG;IACH,yBAAyE;IAEzE;;;OAGG;IACH,qBAAwB;IACxB;;;OAGG;IACH,0BAA0D;IAmC5D;;;;OAIG;IACH,kBAHY,WAAW,GAAC,IAAI,CAK3B;IAED;;;OAGG;IACH,qBASC;IAED;;;;;;;OAOG;IACH,mBAoDC;IAED;;;;;OAKG;IACH,qBAgBC;IAED;;;;OAIG;IACH,yBA6BC;IAED;;;;;;;OAOG;IACH,4BAHY,QAAQ,MAAM,KAAK,CAAC,GAAC,SAAS,CAAC,CAuI1C;IAED;;;;OAIG;IACH,oBAmDC;IAED;;;;OAIG;IACH,gCAgBC;IAED;;;;;OAKG;IACH,kBAMC;IAED;;;OAGG;IACH,sBA+BC;IAED;;OAEG;IACH,sBA0EC;IAED;;;;OAIG;IACH,iBAHY,OAAO,CASlB;IAED;;;;OAIG;IACH,kBAHY,MAAM,IAAI,CAAC,CA+BtB;IAED;;;;;OAKG;IACH,kBAJW,MAAM,MAAM,QAAM,CAAC,GAAC,IAAI,gBAmBlC;IAED;;;;;;OAMG;IACH,oBALW,uBAAsB,WAAW,GAAC,MAAM,GAAC,IAAI,+CAoCvD;IAED;;;;;OAKG;IACH,WAHY,YAAU,CAKrB;IAED;;;;;OAKG;IACH,oBAEC;IAED;;;;;OAKG;IACH,aAHY,YAAY,CAKvB;IAqCD;;;;;OAKG;IACH,mBAHY,MAAM,MAAM,CAAC,CAaxB;IAED;;;OAGG;IACH,aAFY,UAAU,GAAC,IAAI,CAI1B;CACF;uBA18BsB,mBAAmB;uBADnB,mBAAmB;wBAKlB,oBAAoB"}
package/layer/STAC.js CHANGED
@@ -19,7 +19,7 @@ import WMS from 'ol/source/TileWMS.js';
19
19
  import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS.js';
20
20
  import WebGLTileLayer from 'ol/layer/WebGLTile.js';
21
21
  import XYZ from 'ol/source/XYZ.js';
22
- import create, { Asset, STAC } from 'stac-js';
22
+ import create, { Asset, ItemCollection, STAC } from 'stac-js';
23
23
  import { PMTilesRasterSource, PMTilesVectorSource } from 'ol-pmtiles';
24
24
  import { defaultBoundsStyle, defaultCollectionStyle, getBoundsStyle, getGeoTiffSourceInfoFromAsset, getProjection, getSpecificWebMapUrl, getWmtsCapabilities, } from '../util.js';
25
25
  import { toGeoJSON } from 'stac-js/src/geo.js';
@@ -45,6 +45,9 @@ import { transformExtent } from 'ol/proj.js';
45
45
  * Can also be used as url for data, if it is absolute and doesn't contain a self link.
46
46
  * @property {STAC|Asset|Object} [data] The STAC metadata. Any of `url` and `data` must be provided.
47
47
  * `data` take precedence over `url`.
48
+ * @property {ItemCollection|Object|Array<STAC>|string|null} [children=null] For STAC Catalogs and Collections, any child entites
49
+ * to show. Can be STAC ItemCollections (as ItemCollection, GeoJSON FeatureCollection, or URL) or a list of STAC entities.
50
+ * @property {Options} [childrenOptions={}] The the given children, apply the given options.
48
51
  * @property {Array<string|Asset>|null} [assets=null] The selector for the assets to be rendered,
49
52
  * only for STAC Items and Collections.
50
53
  * This can be an array of strings corresponding to asset keys or Asset objects.
@@ -60,12 +63,12 @@ import { transformExtent } from 'ol/proj.js';
60
63
  * by default.
61
64
  * @property {boolean} [displayGeoTiffByDefault=false] Allow to choose non-cloud-optimized GeoTiffs as default image to show,
62
65
  * which might not work well for larger files or larger amounts of files.
63
- * @property {boolean} [displayPreview=false] Allow to display images that a browser can display (e.g. PNG, JPEG),
64
- * usually assets with role `thumbnail` or the link with relation type `preview`.
66
+ * @property {boolean} [displayPreview=false] Allow to display preview images that a browser can display (e.g. PNG, JPEG),
67
+ * i.e. assets with any of the roles `thumbnail`, `overview`, or a link with relation type `preview`.
65
68
  * The previews are usually not covering the full extents and as such may be placed incorrectly on the map.
66
- * For performance reasons, it is recommended to enable this option if you pass in STAC API Items.
69
+ * For performance reasons, it is recommended to enable this option if you pass in STAC API Items instead of `displayOverview`.
67
70
  * @property {boolean} [displayOverview=true] Allow to display COGs and, if `displayGeoTiffByDefault` is enabled, GeoTiffs,
68
- * usually the assets with role `overview` or `visual`.
71
+ * usually an asset with role `overview` or `visual`.
69
72
  * @property {string|boolean|Array<Link|string>} [displayWebMapLink=false] Allow to display a layer
70
73
  * based on the information provided through the web map links extension.
71
74
  * If an array of links or link ids (property `id` in a Link Object) is provided, all corresponding layers will be shown.
@@ -73,7 +76,7 @@ import { transformExtent } from 'ol/proj.js';
73
76
  * it lets this library choose a web map link to show, but only if no other data is shown.
74
77
  * To disable the functionality set this to `false`.
75
78
  * @property {Style} [boundsStyle] The style for the overall bounds / footprint.
76
- * @property {Style} [collectionStyle] The style for individual items in a list of STAC Items or Collections.
79
+ * @property {Style} [collectionStyle] The style for individual children in a list of STAC Items or Collections.
77
80
  * @property {null|string} [crossOrigin] For thumbnails: The `crossOrigin` attribute for loaded images / tiles.
78
81
  * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.
79
82
  * @property {function(Asset):string|null} [buildTileUrlTemplate=null] A function that generates a URL template for a tile server (XYZ),
@@ -96,6 +99,8 @@ import { transformExtent } from 'ol/proj.js';
96
99
  * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will
97
100
  * be visible.
98
101
  * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`. `stac` and `bounds` are reserved and may be overridden.
102
+ * @property {boolean} [disableMigration=false] Disable the migration of the STAC object to the latest version.
103
+ * Only enable this if you are sure that the STAC object is already in the latest version.
99
104
  */
100
105
  /**
101
106
  * @classdesc
@@ -132,12 +137,17 @@ class STACLayer extends LayerGroup {
132
137
  */
133
138
  this.getSourceOptions_ = options.getSourceOptions;
134
139
  /**
135
- * @type {STAC|Asset}
140
+ * @type {Array<STAC>|null}
136
141
  * @private
137
142
  */
138
- this.data_;
143
+ this.children_ = null;
139
144
  /**
140
- * @type {Array<Asset> | null}
145
+ * @type {Options}
146
+ * @private
147
+ */
148
+ this.childrenOptions_ = options.childrenOptions || {};
149
+ /**
150
+ * @type {Array<Asset>|null}
141
151
  * @private
142
152
  */
143
153
  this.assets_ = null;
@@ -147,7 +157,7 @@ class STACLayer extends LayerGroup {
147
157
  */
148
158
  this.bands_ = [];
149
159
  /**
150
- * @type {string | null}
160
+ * @type {string|null}
151
161
  * @private
152
162
  */
153
163
  this.crossOrigin_ = options.crossOrigin || null;
@@ -200,9 +210,14 @@ class STACLayer extends LayerGroup {
200
210
  * @private
201
211
  */
202
212
  this.boundsLayer_ = null;
213
+ /**
214
+ * @type {boolean}
215
+ * @private
216
+ */
217
+ this.disableMigration_ = options.disableMigration || false;
203
218
  if (options.data) {
204
219
  try {
205
- this.configure_(options.data, options.url, options.assets, options.bands);
220
+ this.configure_(options.data, options.url, options.children, options.assets, options.bands);
206
221
  }
207
222
  catch (error) {
208
223
  this.handleError_(error);
@@ -214,7 +229,7 @@ class STACLayer extends LayerGroup {
214
229
  }
215
230
  fetch(options.url)
216
231
  .then((response) => response.json())
217
- .then((data) => this.configure_(data, options.url, options.assets, options.bands))
232
+ .then((data) => this.configure_(data, options.url, options.children, options.assets, options.bands))
218
233
  .catch((error) => this.handleError_(error));
219
234
  }
220
235
  /**
@@ -243,19 +258,22 @@ class STACLayer extends LayerGroup {
243
258
  * @private
244
259
  * @param {STAC|Asset|Object} data The STAC data.
245
260
  * @param {string} url The url to the data.
246
- * @param {Array<Asset|string> | null} assets The assets to show.
261
+ * @param {ItemCollection|Object|Array<STAC>|string|null} children The child STAC entities to show.
262
+ * @param {Array<Asset|string>|null} assets The assets to show.
247
263
  * @param {Array<number>} bands The (one-based) bands to show.
248
264
  */
249
- configure_(data, url = null, assets = null, bands = []) {
265
+ configure_(data, url = null, children = null, assets = null, bands = []) {
266
+ let stac;
250
267
  if (data instanceof Asset || data instanceof STAC) {
251
- this.data_ = data;
268
+ stac = data;
252
269
  }
253
270
  else {
254
- this.data_ = create(data);
271
+ stac = create(data, !this.disableMigration_);
255
272
  }
256
273
  if (url && url.includes('://')) {
257
- this.data_.setAbsoluteUrl(url);
274
+ stac.setAbsoluteUrl(url);
258
275
  }
276
+ this.set('stac', stac);
259
277
  this.bands_ = bands;
260
278
  this.boundsLayer_ = this.addFootprint_();
261
279
  const updateBoundsStyle = () => {
@@ -265,6 +283,16 @@ class STACLayer extends LayerGroup {
265
283
  };
266
284
  this.getLayers().on('add', updateBoundsStyle);
267
285
  this.getLayers().on('remove', updateBoundsStyle);
286
+ this.setChildren(children)
287
+ .then(() => {
288
+ /**
289
+ * Invoked once the child STAC entites are loaded and shown on the map.
290
+ *
291
+ * @event childrenready
292
+ */
293
+ return this.dispatchEvent('childrenready');
294
+ })
295
+ .catch((error) => this.handleError_(error));
268
296
  this.setAssets(assets)
269
297
  .then(() => {
270
298
  /**
@@ -286,13 +314,13 @@ class STACLayer extends LayerGroup {
286
314
  }
287
315
  /**
288
316
  * @private
317
+ * @param {Array<STAC>} collection The list of STAC entities to show.
318
+ * @param {Options} [options] Options for the children.
289
319
  * @return {Promise} Resolves when complete.
290
320
  */
291
- async addApiCollection_() {
292
- const promises = this.getData()
293
- .getAll()
294
- .map((obj) => {
295
- const subgroup = new STACLayer({
321
+ async addChildren_(collection, options = {}) {
322
+ const promises = collection.map((obj) => {
323
+ const defaultOptions = {
296
324
  data: obj,
297
325
  crossOrigin: this.crossOrigin_,
298
326
  boundsStyle: this.collectionStyle_,
@@ -300,90 +328,44 @@ class STACLayer extends LayerGroup {
300
328
  displayOverview: this.displayOverview_,
301
329
  displayPreview: this.displayPreview_,
302
330
  displayFootprint: this.displayFootprint_,
303
- });
304
- this.addLayer_(subgroup);
331
+ };
332
+ const subgroup = new STACLayer(Object.assign(defaultOptions, options));
333
+ this.addLayer_(subgroup, null);
305
334
  return subgroup;
306
335
  });
307
336
  return await Promise.all(promises);
308
337
  }
309
338
  /**
310
339
  * @private
311
- * @return {Promise} Resolves when complete.
312
- */
313
- async addStacAssets_() {
314
- let assets = this.getAssets();
315
- if (assets === null) {
316
- assets = [];
317
- // No specific asset given by the user, visualize the default geotiff
318
- const geotiff = this.getData().getDefaultGeoTIFF(true, !this.displayGeoTiffByDefault_);
319
- if (geotiff) {
320
- assets.push(geotiff);
321
- }
322
- else {
323
- // This may return Links or Assets
324
- const thumbnails = this.getData().getThumbnails();
325
- if (thumbnails.length > 0) {
326
- assets.push(thumbnails[0]);
327
- }
328
- }
329
- }
330
- const promises = assets.map((asset) => this.addImagery_(asset));
331
- return await Promise.all(promises);
332
- }
333
- /**
334
- * @private
335
- * @param {Asset|Link} [ref] A STAC Link or Asset
336
- * @return {Promise<Layer|undefined>} Resolves with a Layer or undefined when complete.
337
- */
338
- async addImagery_(ref) {
339
- if (!ref) {
340
- return;
341
- }
342
- if (ref.isGeoTIFF()) {
343
- return await this.addGeoTiff_(ref);
344
- }
345
- if (ref.canBrowserDisplayImage()) {
346
- return await this.addThumbnail_(ref);
347
- }
348
- }
349
- /**
350
- * @private
351
- * @param {Asset|Link} [thumbnail] A STAC Link or Asset
340
+ * @param {Asset|Link} [image] A STAC Link or Asset
352
341
  * @return {Promise<ImageLayer|undefined>} Resolves with am ImageLayer or udnefined when complete.
353
342
  */
354
- async addThumbnail_(thumbnail) {
355
- if (!this.displayPreview_) {
343
+ async addPreviewImage_(image) {
344
+ const projection = await getProjection(image, 'EPSG:4326');
345
+ const bboxes = image.getContext().getBoundingBoxes();
346
+ if (bboxes.length !== 1) {
356
347
  return;
357
348
  }
349
+ const bbox = bboxes[0];
358
350
  /**
359
351
  * @type {import("ol/source/ImageStatic.js").Options}
360
352
  */
361
353
  let options = {
362
- url: thumbnail.getAbsoluteUrl(),
363
- projection: await getProjection(thumbnail, 'EPSG:4326'),
364
- imageExtent: thumbnail.getContext().getBoundingBox(),
354
+ url: image.getAbsoluteUrl(),
355
+ projection,
356
+ imageExtent: transformExtent(bbox, 'EPSG:4326', projection),
365
357
  crossOrigin: this.crossOrigin_,
366
358
  };
367
359
  if (this.getSourceOptions_) {
368
360
  // @ts-ignore
369
- options = await this.getSourceOptions_(SourceType.ImageStatic, options, thumbnail);
361
+ options = await this.getSourceOptions_(SourceType.ImageStatic, options, image);
370
362
  }
371
363
  const layer = new ImageLayer({
372
364
  source: new StaticImage(options),
373
365
  });
374
- this.addLayer_(layer, thumbnail);
366
+ this.addLayer_(layer, image);
375
367
  return layer;
376
368
  }
377
- /**
378
- * Adds a layer for the web map links available in the STAC links.
379
- * @return {Promise<Array<Layer>|undefined>} Resolves with a Layer or undefined when complete.
380
- */
381
- async addWebMapLinks_() {
382
- const links = this.getWebMapLinks();
383
- if (links.length > 0) {
384
- return await this.addLayerForLink(links[0]);
385
- }
386
- }
387
369
  /**
388
370
  * Adds a layer for a link that implements the web-map-links extension.
389
371
  * Supports: PMTiles, TileJSON, WMS, WMTS, XYZ
@@ -400,7 +382,7 @@ class STACLayer extends LayerGroup {
400
382
  }
401
383
  const options = {
402
384
  attributions: link.getMetadata('attribution') ||
403
- this.data_.getMetadata('attribution'),
385
+ this.getData().getMetadata('attribution'),
404
386
  crossOrigin: this.crossOrigin_,
405
387
  url,
406
388
  };
@@ -439,8 +421,8 @@ class STACLayer extends LayerGroup {
439
421
  break;
440
422
  }
441
423
  for (const i in link['wms:layers']) {
442
- const layers = link['wms:layers'][i];
443
- let styles;
424
+ const layers = link['wms:layers'][i] || '';
425
+ let styles = '';
444
426
  if (Array.isArray(link['wms:styles']) &&
445
427
  typeof link['wms:styles'][i] === 'string') {
446
428
  styles = link['wms:styles'][i];
@@ -508,9 +490,6 @@ class STACLayer extends LayerGroup {
508
490
  * @return {Promise<Layer|undefined>} Resolves with a Layer or undefined when complete.
509
491
  */
510
492
  async addGeoTiff_(asset) {
511
- if (!this.displayOverview_) {
512
- return;
513
- }
514
493
  if (this.buildTileUrlTemplate_ && !this.useTileLayerAsFallback_) {
515
494
  return await this.addTileLayerForImagery_(asset);
516
495
  }
@@ -529,35 +508,28 @@ class STACLayer extends LayerGroup {
529
508
  // @ts-ignore
530
509
  options = await this.getSourceOptions_(SourceType.GeoTIFF, options, asset);
531
510
  }
532
- const tileserverFallback = async (asset, layer) => {
533
- if (layer) {
534
- this.getLayers().remove(layer);
535
- }
536
- return await this.addTileLayerForImagery_(asset);
537
- };
511
+ const source = new GeoTIFF(options);
512
+ const status = new Promise((resolve, reject) => {
513
+ source.on('error', reject);
514
+ source.on('change', () => {
515
+ // see https://github.com/openlayers/openlayers/issues/14926
516
+ if (source.getState() === 'error') {
517
+ reject(source.getError());
518
+ }
519
+ else {
520
+ resolve();
521
+ }
522
+ });
523
+ });
538
524
  try {
539
- const source = new GeoTIFF(options);
525
+ await status;
540
526
  const layer = new WebGLTileLayer({ source });
541
- if (this.useTileLayerAsFallback_) {
542
- const errorFn = () => tileserverFallback(asset, layer);
543
- source.on('error', errorFn);
544
- source.on('tileloaderror', errorFn);
545
- // see https://github.com/openlayers/openlayers/issues/14926
546
- source.on('change', () => {
547
- if (source.getState() === 'error') {
548
- tileserverFallback(asset, layer);
549
- }
550
- });
551
- layer.on('error', errorFn);
552
- // Call this to ensure we can load the GeoTIFF, otherwise try fallback
553
- await source.getView();
554
- }
555
527
  this.addLayer_(layer, asset);
556
528
  return layer;
557
529
  }
558
530
  catch (error) {
559
531
  if (this.useTileLayerAsFallback_) {
560
- return await tileserverFallback(asset, null);
532
+ return await this.addTileLayerForImagery_(asset);
561
533
  }
562
534
  this.handleError_(error);
563
535
  }
@@ -590,8 +562,10 @@ class STACLayer extends LayerGroup {
590
562
  * @param {number} [zIndex=0] The z-index for the layer
591
563
  * @private
592
564
  */
593
- addLayer_(layer, data, zIndex = 0) {
594
- layer.set('stac', data);
565
+ addLayer_(layer, data = null, zIndex = 0) {
566
+ if (data) {
567
+ layer.set('stac', data);
568
+ }
595
569
  layer.setZIndex(zIndex);
596
570
  this.getLayers().push(layer);
597
571
  }
@@ -638,22 +612,66 @@ class STACLayer extends LayerGroup {
638
612
  const oldLayers = this.getLayers();
639
613
  for (let i = oldLayers.getLength() - 1; i >= 0; i--) {
640
614
  const layer = oldLayers.item(i);
641
- const stac = layer.get('stac');
642
- if (stac && (stac.isLink() || stac.isAsset())) {
615
+ if (layer.get('stac') && !layer.get('bounds')) {
643
616
  oldLayers.removeAt(i);
644
617
  }
645
618
  }
646
- // Add new layers
619
+ // Add layers by priority
647
620
  const data = this.getData();
648
- if (data.isItemCollection() || data.isCollectionCollection()) {
649
- await this.addApiCollection_();
650
- }
651
- else if (data.isItem() || data.isCollection()) {
652
- await this.addStacAssets_();
653
- }
654
- if (this.displayWebMapLink_ &&
655
- (Array.isArray(this.displayWebMapLink_) || this.hasOnlyBounds())) {
656
- await this.addWebMapLinks_();
621
+ // Show the web map links provided by the user
622
+ if (Array.isArray(this.displayWebMapLink_)) {
623
+ const promises = this.getWebMapLinks().map(async (link) => await this.addLayerForLink(link));
624
+ await Promise.all(promises);
625
+ }
626
+ // Show children if provided
627
+ if (this.children_) {
628
+ await this.addChildren_(this.children_, this.childrenOptions_);
629
+ }
630
+ // Show the assets provided by the user
631
+ const assets = this.getAssets();
632
+ if (assets) {
633
+ const promises = assets.map(async (ref) => {
634
+ if (ref && ref.isGeoTIFF()) {
635
+ return await this.addGeoTiff_(ref);
636
+ }
637
+ if (ref && ref.canBrowserDisplayImage()) {
638
+ return await this.addPreviewImage_(ref);
639
+ }
640
+ });
641
+ await Promise.all(promises);
642
+ }
643
+ // If the user didn't provide any specific asset/map link/children to show,
644
+ // choose a sensible default visualization
645
+ if (this.hasOnlyBounds()) {
646
+ // Show the ItemCollection/CollectionCollection entries
647
+ if (data.isItemCollection() || data.isCollectionCollection()) {
648
+ await this.addChildren_(this.getData().getAll(), this.childrenOptions_);
649
+ }
650
+ else {
651
+ // Show web map links
652
+ const links = this.getWebMapLinks();
653
+ if (links.length > 0) {
654
+ await this.addLayerForLink(links[0]);
655
+ }
656
+ else {
657
+ // Find an asset that we can visualize
658
+ const geotiff = this.getData().getDefaultGeoTIFF(true, !this.displayGeoTiffByDefault_);
659
+ let layer;
660
+ // Try to visualize the default GeoTIFF first
661
+ if (geotiff && this.displayOverview_) {
662
+ layer = await this.addGeoTiff_(geotiff);
663
+ }
664
+ // If no GeoTIFF is available or it can't be shown (e.g. error),
665
+ // try to visualize the default thumbnail
666
+ if (this.displayPreview_ && (!geotiff || !layer)) {
667
+ // This may return Links or Assets
668
+ const thumbnails = this.getData().getThumbnails(true, 'overview');
669
+ if (thumbnails.length > 0) {
670
+ await this.addPreviewImage_(thumbnails[0]);
671
+ }
672
+ }
673
+ }
674
+ }
657
675
  }
658
676
  }
659
677
  /**
@@ -676,7 +694,7 @@ class STACLayer extends LayerGroup {
676
694
  if (typeof this.displayWebMapLink_ === 'string') {
677
695
  types = [this.displayWebMapLink_];
678
696
  }
679
- let mapLinks = this.data_.getLinksWithRels(types);
697
+ let mapLinks = this.getData().getLinksWithRels(types);
680
698
  if (Array.isArray(this.displayWebMapLink_)) {
681
699
  mapLinks = this.displayWebMapLink_
682
700
  .map((link) => {
@@ -723,6 +741,47 @@ class STACLayer extends LayerGroup {
723
741
  }
724
742
  await this.updateLayers_();
725
743
  }
744
+ /**
745
+ * Updates the children STAC entities to be rendered.
746
+ * @param {ItemCollection|Object|Array<STAC>|string|null} childs The children to show.
747
+ * @param {Options} [options] STACLayer options for the children. Only applies if `children` are given.
748
+ * @return {Promise} Resolves when all items are rendered.
749
+ * @api
750
+ */
751
+ async setChildren(childs, options = {}) {
752
+ if (!childs) {
753
+ this.children_ = null;
754
+ this.childrenOptions_ = {};
755
+ return;
756
+ }
757
+ if (typeof childs === 'string') {
758
+ const response = await fetch(childs);
759
+ childs = await response.json();
760
+ }
761
+ if (typeof childs === 'object' && childs.type === 'FeatureCollection') {
762
+ childs = childs.features;
763
+ }
764
+ if (childs instanceof ItemCollection) {
765
+ this.children_ = childs.getAll();
766
+ }
767
+ else if (Array.isArray(childs)) {
768
+ childs = childs.map((child) => {
769
+ if (child instanceof STAC) {
770
+ return child;
771
+ }
772
+ return create(child);
773
+ });
774
+ this.children_ = childs;
775
+ }
776
+ else {
777
+ this.children_ = null; // Invalid input
778
+ }
779
+ if (this.children_ && this.children_.length === 0) {
780
+ this.children_ = null;
781
+ }
782
+ this.childrenOptions_ = options;
783
+ await this.updateLayers_();
784
+ }
726
785
  /**
727
786
  * Get the STAC object.
728
787
  *
@@ -730,7 +789,16 @@ class STACLayer extends LayerGroup {
730
789
  * @api
731
790
  */
732
791
  getData() {
733
- return this.data_;
792
+ return this.get('stac');
793
+ }
794
+ /**
795
+ * Get the children STAC entities.
796
+ *
797
+ * @return {STAC} The STAC child entities.
798
+ * @api
799
+ */
800
+ getChildren() {
801
+ return this.children_;
734
802
  }
735
803
  /**
736
804
  * Get the STAC assets shown.
@@ -771,6 +839,30 @@ class STACLayer extends LayerGroup {
771
839
  return transformExtent(bbox, 'EPSG:4326', view.getProjection());
772
840
  }
773
841
  }
842
+ /**
843
+ * Get the attributions of the STAC entity assigned to this layer.
844
+ *
845
+ * @return {Array<string>} Attributions for this layer.
846
+ * @api
847
+ */
848
+ getAttributions() {
849
+ const attribution = [];
850
+ const stac = this.getData();
851
+ if (stac) {
852
+ const attribution = stac.getMetadata('attribution');
853
+ if (attribution) {
854
+ attribution.push(attribution);
855
+ }
856
+ }
857
+ return attribution;
858
+ }
859
+ /**
860
+ * Get the layer source.
861
+ * @return {SourceType|null} The layer source (or `null` if not yet set).
862
+ */
863
+ getSource() {
864
+ return null;
865
+ }
774
866
  }
775
867
  export default STACLayer;
776
868
  //# sourceMappingURL=STAC.js.map
package/layer/STAC.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"STAC.js","sourceRoot":"","sources":["../../../src/ol/layer/STAC.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"STAC.js","sourceRoot":"","sources":["../../../src/ol/layer/STAC.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol-stac",
3
- "version": "1.0.0-beta.9",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "An \"automagical\" STAC LayerGroup for OpenLayers",
5
5
  "homepage": "https://mohr.ws",
6
6
  "license": "Apache-2.0",
@@ -18,11 +18,11 @@
18
18
  "url": "https://github.com/sponsors/m-mohr"
19
19
  },
20
20
  "dependencies": {
21
- "ol-pmtiles": "^0.2.0",
22
- "stac-js": "0.0.9"
21
+ "ol-pmtiles": "~0.2.0",
22
+ "stac-js": "~0.1.1"
23
23
  },
24
24
  "peerDependencies": {
25
- "ol": ">=7.5.2"
25
+ "ol": "*"
26
26
  },
27
27
  "browserslist": [
28
28
  "> 1%",
package/util.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Get the STAC objects associated with this event, if any. Excludes API Collections.
3
3
  * @param {import('ol/MapBrowserEvent.js').default} event The asset to read the information from.
4
+ * @param {STAC} [exclude=null] Excludes the given STAC entity from the list.
4
5
  * @return {Promise<Array<STAC>>} A list of STAC objects
5
6
  * @api
6
7
  */
7
- export function getStacObjectsForEvent(event: import("ol/MapBrowserEvent.js").default<any>): Promise<Array<STAC>>;
8
+ export function getStacObjectsForEvent(event: import("ol/MapBrowserEvent.js").default<any>, exclude?: any): Promise<Array<STAC>>;
8
9
  /**
9
10
  * Get the source info for the GeoTiff from the asset.
10
11
  * @param {import('stac-js').Asset} asset The asset to read the information from.
package/util.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/ol/util.js"],"names":[],"mappings":"AAwCA;;;;;GAKG;AACH,6FAHY,QAAQ,WAAW,CAAC,CAsB/B;AAED;;;;;GAKG;AACH,iEAHW,MAAM,MAAM,CAAC,GACZ,OAAO,sBAAsB,EAAE,UAAU,CAiCpD;AAED;;;;;GAKG;AACH,kEAHW,OAAO,YAAY,EAAE,cAAc,GAClC,QAAQ,OAAO,YAAY,EAAE,cAAc,CAAC,CAgBvD;AAED;;;;;;;;GAQG;AACH,+HAHY,KAAK,CAShB;AAED;;;;;GAKG;AACH,iDAFY,MAAM,GAAC,IAAI,CAgBtB;AAED;;;;GAIG;AACH,yCAHW,MAAM,GACL,QAAQ,MAAO,IAAI,CAAC,CAY/B;AAzKD;;;;GAIG;AACH,iCAHU,KAAK,CAWZ;AAEH;;;;GAIG;AACH,qCAHU,KAAK,CAQZ;sBAjC+B,aAAa"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/ol/util.js"],"names":[],"mappings":"AAwCA;;;;;;GAMG;AACH,4GAHY,QAAQ,WAAW,CAAC,CA4B/B;AAED;;;;;GAKG;AACH,iEAHW,MAAM,MAAM,CAAC,GACZ,OAAO,sBAAsB,EAAE,UAAU,CAiCpD;AAED;;;;;GAKG;AACH,kEAHW,OAAO,YAAY,EAAE,cAAc,GAClC,QAAQ,OAAO,YAAY,EAAE,cAAc,CAAC,CAmBvD;AAED;;;;;;;;GAQG;AACH,+HAHY,KAAK,CAShB;AAED;;;;;GAKG;AACH,iDAFY,MAAM,GAAC,IAAI,CAgBtB;AAED;;;;GAIG;AACH,yCAHW,MAAM,GACL,QAAQ,MAAO,IAAI,CAAC,CAY/B;AAnLD;;;;GAIG;AACH,iCAHU,KAAK,CAWZ;AAEH;;;;GAIG;AACH,qCAHU,KAAK,CAQZ;sBAjC+B,aAAa"}
package/util.js CHANGED
@@ -28,22 +28,29 @@ export const defaultBoundsStyle = new Style({
28
28
  export const defaultCollectionStyle = new Style({
29
29
  stroke: new Stroke({
30
30
  color: '#ff9933',
31
- width: 1,
31
+ width: 2,
32
32
  }),
33
33
  });
34
34
  /**
35
35
  * Get the STAC objects associated with this event, if any. Excludes API Collections.
36
36
  * @param {import('ol/MapBrowserEvent.js').default} event The asset to read the information from.
37
+ * @param {STAC} [exclude=null] Excludes the given STAC entity from the list.
37
38
  * @return {Promise<Array<STAC>>} A list of STAC objects
38
39
  * @api
39
40
  */
40
- export async function getStacObjectsForEvent(event) {
41
+ export async function getStacObjectsForEvent(event, exclude = null) {
41
42
  const objects = event.map
42
43
  .getAllLayers()
43
44
  .filter((layer) => {
44
45
  if (layer instanceof VectorLayer &&
45
46
  layer.get('bounds') === true &&
46
47
  layer.get('stac') instanceof STAC) {
48
+ if (exclude) {
49
+ const stac = layer.get('stac');
50
+ if (stac.equals(exclude)) {
51
+ return false;
52
+ }
53
+ }
47
54
  const features = layer
48
55
  .getSource()
49
56
  .getFeaturesAtCoordinate(event.coordinate);
@@ -65,13 +72,13 @@ export function getGeoTiffSourceInfoFromAsset(asset, bands) {
65
72
  const sourceInfo = {
66
73
  url: asset.getAbsoluteUrl(),
67
74
  };
68
- let band = null;
75
+ let source = asset;
69
76
  // If there's just one band, we can also read the information from there.
70
77
  if (asset.getBands().length === 1) {
71
- band = 0;
78
+ source = asset.getBand(0);
72
79
  }
73
80
  // TODO: It would be useful if OL would allow min/max values per band
74
- const { minimum, maximum } = asset.getMinMaxValues(band);
81
+ const { minimum, maximum } = source.getMinMaxValues();
75
82
  if (typeof minimum === 'number') {
76
83
  sourceInfo.min = minimum;
77
84
  }
@@ -79,7 +86,7 @@ export function getGeoTiffSourceInfoFromAsset(asset, bands) {
79
86
  sourceInfo.max = maximum;
80
87
  }
81
88
  // TODO: It would be useful if OL would allow multiple no-data values
82
- const nodata = asset.getNoDataValues(band);
89
+ const nodata = source.getNoDataValues();
83
90
  if (nodata.length > 0) {
84
91
  sourceInfo.nodata = nodata[0];
85
92
  }
@@ -98,10 +105,13 @@ export async function getProjection(reference, defaultProjection = undefined) {
98
105
  let projection = defaultProjection;
99
106
  if (isProj4Registered()) {
100
107
  // TODO: It would be great to handle WKT2 and PROJJSON, but is not supported yet by proj4js.
101
- const epsgCode = reference.getMetadata('proj:epsg');
102
- if (epsgCode) {
108
+ const code = reference.getMetadata('proj:code');
109
+ if (code) {
103
110
  try {
104
- projection = await fromEPSGCode(epsgCode);
111
+ if (code.startsWith('EPSG:')) {
112
+ const id = parseInt(code.replace('EPSG:', ''), 10);
113
+ projection = await fromEPSGCode(id);
114
+ }
105
115
  }
106
116
  catch (_) {
107
117
  // pass
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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"}