ol-stac 1.0.4 → 1.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol-stac",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "An \"automagical\" STAC LayerGroup for OpenLayers",
5
5
  "homepage": "https://moregeo.it",
6
6
  "license": "Apache-2.0",
package/util.d.ts CHANGED
@@ -22,10 +22,10 @@ export function getStacObjectsForEvent(event: import('ol/MapBrowserEvent.js').de
22
22
  /**
23
23
  * Get the source info for the GeoTiff from the asset.
24
24
  * @param {import('stac-js').Asset} asset The asset to read the information from.
25
- * @param {Array<number>} bands The (one-based) bands to show.
25
+ * @param {Array<number>} selectedBands The (one-based) bands to show.
26
26
  * @return {import('ol/source/GeoTIFF.js').SourceInfo} The source info for the GeoTiff asset
27
27
  */
28
- export function getGeoTiffSourceInfoFromAsset(asset: any, bands: Array<number>): import('ol/source/GeoTIFF.js').SourceInfo;
28
+ export function getGeoTiffSourceInfoFromAsset(asset: any, selectedBands: Array<number>): import('ol/source/GeoTIFF.js').SourceInfo;
29
29
  /**
30
30
  * Gets the projection from the asset or link.
31
31
  * @param {import('stac-js').STACReference} reference The asset or link 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":"AAmCA;;;;;;;;;GASG;AACH,sCAPW,SAAS,eACT,MAAM,cACN,SAAS,iBACT,MAAM,GACL,KAAK,CA4BhB;AAgBD;;;;;;;;GAQG;AACH,8CAPW,OAAO,uBAAuB,EAAE,OAAO,6HAItC,QAAQ,WAAW,CAAC,CAoC/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;AAxND;;GAEG;AACH;;;GAGG;AACH;;GAEG;AAEH;;;GAGG;AACH,8BAFU,MAAM,CAG6C;AAyC7D;;;;GAIG;AACH,iCAHU,KAAK,CAG0C;AAEzD;;;;GAIG;AACH,qCAHU,KAAK,CAGoD;wBApEtD,OAAO,iBAAiB,EAAE,SAAS;;sBAOnC,OAAO,eAAe,EAAE,OAAO;kBAhB1B,mBAAmB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/ol/util.js"],"names":[],"mappings":"AAmCA;;;;;;;;;GASG;AACH,sCAPW,SAAS,eACT,MAAM,cACN,SAAS,iBACT,MAAM,GACL,KAAK,CA4BhB;AAgBD;;;;;;;;GAQG;AACH,8CAPW,OAAO,uBAAuB,EAAE,OAAO,6HAItC,QAAQ,WAAW,CAAC,CAoC/B;AAED;;;;;GAKG;AACH,yEAHW,MAAM,MAAM,CAAC,GACZ,OAAO,sBAAsB,EAAE,UAAU,CAmFpD;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;AA1QD;;GAEG;AACH;;;GAGG;AACH;;GAEG;AAEH;;;GAGG;AACH,8BAFU,MAAM,CAG6C;AAyC7D;;;;GAIG;AACH,iCAHU,KAAK,CAG0C;AAEzD;;;;GAIG;AACH,qCAHU,KAAK,CAGoD;wBApEtD,OAAO,iBAAiB,EAAE,SAAS;;sBAOnC,OAAO,eAAe,EAAE,OAAO;kBAhB1B,mBAAmB"}
package/util.js CHANGED
@@ -105,17 +105,19 @@ export async function getStacObjectsForEvent(event, exclude = null, selectedFeat
105
105
  /**
106
106
  * Get the source info for the GeoTiff from the asset.
107
107
  * @param {import('stac-js').Asset} asset The asset to read the information from.
108
- * @param {Array<number>} bands The (one-based) bands to show.
108
+ * @param {Array<number>} selectedBands The (one-based) bands to show.
109
109
  * @return {import('ol/source/GeoTIFF.js').SourceInfo} The source info for the GeoTiff asset
110
110
  */
111
- export function getGeoTiffSourceInfoFromAsset(asset, bands) {
111
+ export function getGeoTiffSourceInfoFromAsset(asset, selectedBands) {
112
112
  const sourceInfo = {
113
113
  url: asset.getAbsoluteUrl(),
114
114
  };
115
115
  let source = asset;
116
+ let bands = asset.getBands();
116
117
  // If there's just one band, we can also read the information from there.
117
- if (asset.getBands().length === 1) {
118
- source = asset.getBand(0);
118
+ if (bands.length === 1) {
119
+ source = bands[0];
120
+ bands = [];
119
121
  }
120
122
  // TODO: It would be useful if OL would allow min/max values per band
121
123
  const { minimum, maximum } = source.getMinMaxValues();
@@ -125,13 +127,58 @@ export function getGeoTiffSourceInfoFromAsset(asset, bands) {
125
127
  if (typeof maximum === 'number') {
126
128
  sourceInfo.max = maximum;
127
129
  }
130
+ if (typeof sourceInfo.min !== 'number' &&
131
+ typeof sourceInfo.max !== 'number' &&
132
+ bands.length > 1) {
133
+ // Read from bands as fallback and if available
134
+ for (const band of bands) {
135
+ const { minimum, maximum } = band.getMinMaxValues();
136
+ if (typeof minimum === 'number' &&
137
+ (typeof sourceInfo.min === 'undefined' || minimum < sourceInfo.min)) {
138
+ sourceInfo.min = minimum;
139
+ }
140
+ if (typeof maximum === 'number' &&
141
+ (typeof sourceInfo.max === 'undefined' || maximum > sourceInfo.max)) {
142
+ sourceInfo.max = maximum;
143
+ }
144
+ }
145
+ }
128
146
  // TODO: It would be useful if OL would allow multiple no-data values
129
147
  const nodata = source.getNoDataValues();
130
148
  if (nodata.length > 0) {
131
149
  sourceInfo.nodata = nodata[0];
132
150
  }
133
- if (bands.length > 0) {
134
- sourceInfo.bands = bands;
151
+ else if (bands.length > 1) {
152
+ // Read from bands as fallback and if available
153
+ let nodata = undefined;
154
+ for (const band of bands) {
155
+ const bandNoData = band.getNoDataValues();
156
+ if (bandNoData.length > 0) {
157
+ if (typeof nodata === 'undefined') {
158
+ nodata = bandNoData[0];
159
+ }
160
+ else if (nodata !== bandNoData[0]) {
161
+ nodata = undefined;
162
+ break;
163
+ }
164
+ }
165
+ }
166
+ if (typeof nodata !== 'undefined') {
167
+ sourceInfo.nodata = nodata;
168
+ }
169
+ }
170
+ if (selectedBands.length > 0) {
171
+ sourceInfo.bands = selectedBands;
172
+ }
173
+ else {
174
+ const visualBands = asset.findVisualBands();
175
+ if (visualBands) {
176
+ sourceInfo.bands = [
177
+ visualBands.red.getIndex() + 1,
178
+ visualBands.green.getIndex() + 1,
179
+ visualBands.blue.getIndex() + 1,
180
+ ];
181
+ }
135
182
  }
136
183
  return sourceInfo;
137
184
  }
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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"}