diff --git a/package-lock.json b/package-lock.json index ddc1d50373..da5ca92005 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "6.12.1-dev", "license": "BSD-2-Clause", "dependencies": { - "geotiff": "^1.0.8", + "geotiff": "^2.0.2", "ol-mapbox-style": "^6.8.2", "pbf": "3.2.1", "rbush": "^3.0.1" @@ -3012,6 +3012,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -3622,6 +3623,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -4599,6 +4601,7 @@ "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, "optional": true, "engines": { "node": ">=6" @@ -5230,16 +5233,16 @@ } }, "node_modules/geotiff": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-1.0.9.tgz", - "integrity": "sha512-PY+q1OP8RtQZkx1630pVfC3hEkxFnGW9LwIF/glSzcalyShkrH+W8uM/M4RVY12j4QkDQvRXVKOpU65hq6t0iQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.2.tgz", + "integrity": "sha512-fTwi3TEC+/bWEB5YQqMgXzLa/s5fh9tj9PvyXzKWxqoyKaT+NRVsfPiJ0aHLaqd0eXMLngy6ICANF/BU69uZbg==", "dependencies": { "@petamoriken/float16": "^3.4.7", "lerc": "^3.0.0", "lru-cache": "^6.0.0", "pako": "^2.0.4", "parse-headers": "^2.0.2", - "threads": "^1.7.0", + "web-worker": "^1.2.0", "xml-utils": "^1.0.2" }, "engines": { @@ -6013,6 +6016,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==", + "dev": true, "engines": { "node": ">=8" }, @@ -7185,7 +7189,8 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/multicast-dns": { "version": "6.2.3", @@ -7396,7 +7401,8 @@ "node_modules/observable-fns": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", - "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==" + "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==", + "dev": true }, "node_modules/obuf": { "version": "1.1.2", @@ -9319,6 +9325,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", "integrity": "sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==", + "dev": true, "dependencies": { "callsites": "^3.1.0", "debug": "^4.2.0", @@ -9348,6 +9355,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", + "dev": true, "optional": true, "dependencies": { "esm": "^3.2.25" @@ -9705,6 +9713,11 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/webfont-matcher": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webfont-matcher/-/webfont-matcher-1.1.0.tgz", @@ -12648,7 +12661,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true }, "camelcase": { "version": "6.2.0", @@ -13115,6 +13129,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -13869,6 +13884,7 @@ "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, "optional": true }, "espree": { @@ -14361,16 +14377,16 @@ "dev": true }, "geotiff": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-1.0.9.tgz", - "integrity": "sha512-PY+q1OP8RtQZkx1630pVfC3hEkxFnGW9LwIF/glSzcalyShkrH+W8uM/M4RVY12j4QkDQvRXVKOpU65hq6t0iQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.2.tgz", + "integrity": "sha512-fTwi3TEC+/bWEB5YQqMgXzLa/s5fh9tj9PvyXzKWxqoyKaT+NRVsfPiJ0aHLaqd0eXMLngy6ICANF/BU69uZbg==", "requires": { "@petamoriken/float16": "^3.4.7", "lerc": "^3.0.0", "lru-cache": "^6.0.0", "pako": "^2.0.4", "parse-headers": "^2.0.2", - "threads": "^1.7.0", + "web-worker": "^1.2.0", "xml-utils": "^1.0.2" } }, @@ -14914,7 +14930,8 @@ "is-observable": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", - "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==" + "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==", + "dev": true }, "is-path-cwd": { "version": "2.2.0", @@ -15816,7 +15833,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "multicast-dns": { "version": "6.2.3", @@ -15978,7 +15996,8 @@ "observable-fns": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", - "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==" + "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==", + "dev": true }, "obuf": { "version": "1.1.2", @@ -17469,6 +17488,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", "integrity": "sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==", + "dev": true, "requires": { "callsites": "^3.1.0", "debug": "^4.2.0", @@ -17493,6 +17513,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", + "dev": true, "optional": true, "requires": { "esm": "^3.2.25" @@ -17760,6 +17781,11 @@ "minimalistic-assert": "^1.0.0" } }, + "web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "webfont-matcher": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webfont-matcher/-/webfont-matcher-1.1.0.tgz", diff --git a/package.json b/package.json index a4f5814ac6..d286c25cfd 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "url": "https://opencollective.com/openlayers" }, "dependencies": { - "geotiff": "^1.0.8", + "geotiff": "^2.0.2", "ol-mapbox-style": "^6.8.2", "pbf": "3.2.1", "rbush": "^3.0.1" diff --git a/src/ol/source/GeoTIFF.js b/src/ol/source/GeoTIFF.js index caae328076..c10b9b3301 100644 --- a/src/ol/source/GeoTIFF.js +++ b/src/ol/source/GeoTIFF.js @@ -4,11 +4,7 @@ import DataTile from './DataTile.js'; import State from './State.js'; import TileGrid from '../tilegrid/TileGrid.js'; -import { - Pool, - fromUrl as tiffFromUrl, - fromUrls as tiffFromUrls, -} from 'geotiff/src/geotiff.js'; +import {Pool, fromUrl as tiffFromUrl, fromUrls as tiffFromUrls} from 'geotiff'; import { Projection, get as getCachedProjection, @@ -16,7 +12,6 @@ import { toUserExtent, } from '../proj.js'; import {clamp} from '../math.js'; -import {create as createDecoderWorker} from '../worker/geotiff-decoder.js'; import {getCenter, getIntersection} from '../extent.js'; import {toSize} from '../size.js'; import {fromCode as unitsFromCode} from '../proj/Units.js'; @@ -55,15 +50,11 @@ import {fromCode as unitsFromCode} from '../proj/Units.js'; */ /** - * @typedef {Object} GeoTIFF - * @property {function():Promise} getImageCount Get the number of internal subfile images. - * @property {function(number):Promise} getImage Get the image at the specified index. + * @typedef {import("geotiff").GeoTIFF} GeoTIFF */ /** - * @typedef {Object} MultiGeoTIFF - * @property {function():Promise} getImageCount Get the number of internal subfile images. - * @property {function(number):Promise} getImage Get the image at the specified index. + * @typedef {import("geotiff").MultiGeoTIFF} MultiGeoTIFF */ /** @@ -76,28 +67,13 @@ const STATISTICS_MAXIMUM = 'STATISTICS_MAXIMUM'; const STATISTICS_MINIMUM = 'STATISTICS_MINIMUM'; /** - * @typedef {Object} GeoTIFFImage - * @property {Object} fileDirectory The file directory. - * @property {GeoKeys} geoKeys The parsed geo-keys. - * @property {boolean} littleEndian Uses little endian byte order. - * @property {Object} tiles The tile cache. - * @property {boolean} isTiled The image is tiled. - * @property {function():Array} getBoundingBox Get the image bounding box. - * @property {function():Array} getOrigin Get the image origin. - * @property {function(GeoTIFFImage):Array} getResolution Get the image resolution. - * @property {function():number} getWidth Get the pixel width of the image. - * @property {function():number} getHeight Get the pixel height of the image. - * @property {function():number} getTileWidth Get the pixel width of image tiles. - * @property {function():number} getTileHeight Get the pixel height of image tiles. - * @property {function():number|null} getGDALNoData Get the nodata value (or null if none). - * @property {function():GDALMetadata|null} getGDALMetadata Get the raster stats (or null if none). - * @property {function():number} getSamplesPerPixel Get the number of samples per pixel. + * @typedef {import("geotiff/dist-module/geotiffimage.js").default} GeoTIFFImage */ let workerPool; function getWorkerPool() { if (!workerPool) { - workerPool = new Pool(undefined, createDecoderWorker()); + workerPool = new Pool(); } return workerPool; } @@ -471,7 +447,7 @@ class GeoTIFFSource extends DataTile { for (let imageIndex = 0; imageIndex < imageCount; ++imageIndex) { const image = images[imageIndex]; const nodataValue = image.getGDALNoData(); - metadata[sourceIndex][imageIndex] = image.getGDALMetadata(); + metadata[sourceIndex][imageIndex] = image.getGDALMetadata(0); nodataValues[sourceIndex][imageIndex] = nodataValue === null ? NaN : nodataValue; diff --git a/src/ol/worker/geotiff-decoder.js b/src/ol/worker/geotiff-decoder.js deleted file mode 100644 index caeb8a866e..0000000000 --- a/src/ol/worker/geotiff-decoder.js +++ /dev/null @@ -1,16 +0,0 @@ -import 'regenerator-runtime/runtime.js'; - -// BEGIN copied from geotiff/src/decoder.worker.js -import {Transfer, expose} from 'threads/worker'; -import {getDecoder} from 'geotiff/src/compression'; - -async function decode(fileDirectory, buffer) { - const decoder = await getDecoder(fileDirectory); - const decoded = await decoder.decode(fileDirectory, buffer); - return Transfer(decoded); -} - -expose(decode); -// END copied from geotiff/src/decoder.worker.js - -export let create;