Update to geotiff@2

This commit is contained in:
Andreas Hocevar
2022-01-27 11:15:01 +01:00
parent a1454ce18f
commit b5c91b8f05
4 changed files with 48 additions and 62 deletions

56
package-lock.json generated
View File

@@ -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",

View File

@@ -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"

View File

@@ -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<number>} getImageCount Get the number of internal subfile images.
* @property {function(number):Promise<GeoTIFFImage>} getImage Get the image at the specified index.
* @typedef {import("geotiff").GeoTIFF} GeoTIFF
*/
/**
* @typedef {Object} MultiGeoTIFF
* @property {function():Promise<number>} getImageCount Get the number of internal subfile images.
* @property {function(number):Promise<GeoTIFFImage>} 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<number>} getBoundingBox Get the image bounding box.
* @property {function():Array<number>} getOrigin Get the image origin.
* @property {function(GeoTIFFImage):Array<number>} 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;

View File

@@ -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;