@basemaps/cli-raster 8.11.1 → 8.11.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/build/cogify/covering/__test__/covering.test.d.ts +1 -0
- package/build/cogify/covering/__test__/covering.test.js +87 -0
- package/build/cogify/covering/__test__/covering.test.js.map +1 -0
- package/build/cogify/covering/tile.cover.d.ts +17 -2
- package/build/cogify/covering/tile.cover.js +39 -12
- package/build/cogify/covering/tile.cover.js.map +1 -1
- package/dist/index.cjs +69335 -69692
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { findOptimialCoveringZoomOffset } from '../tile.cover.js';
|
|
4
|
+
const TileSize = 512;
|
|
5
|
+
function rawDataSize(imageryType) {
|
|
6
|
+
switch (imageryType) {
|
|
7
|
+
case 'uint8':
|
|
8
|
+
return 1;
|
|
9
|
+
case 'uint16':
|
|
10
|
+
return 2;
|
|
11
|
+
case 'float32':
|
|
12
|
+
return 4;
|
|
13
|
+
default:
|
|
14
|
+
throw new Error(`Unknown imagery type: ${imageryType}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function rawTileSize(sourceBands) {
|
|
18
|
+
let size = 0;
|
|
19
|
+
for (const b of sourceBands)
|
|
20
|
+
size += rawDataSize(b.type);
|
|
21
|
+
return size * TileSize * TileSize;
|
|
22
|
+
}
|
|
23
|
+
function tileCount(zoomOffset) {
|
|
24
|
+
let count = 0;
|
|
25
|
+
for (let z = 0; z < zoomOffset; z++) {
|
|
26
|
+
// z:0 - 1x1 - 1 tile
|
|
27
|
+
// z:1 - 2x2 - 4 tiles
|
|
28
|
+
// z:3 - 4x4 - 16 tiles
|
|
29
|
+
// z:3 - 8x8 - 64 tiles
|
|
30
|
+
count = count + 2 ** z * 2 ** z;
|
|
31
|
+
}
|
|
32
|
+
return count;
|
|
33
|
+
}
|
|
34
|
+
function estimatedCogSize(zoomOffset, sourceBands) {
|
|
35
|
+
const tileCountValue = tileCount(zoomOffset);
|
|
36
|
+
const tileSizeValue = rawTileSize(sourceBands);
|
|
37
|
+
return tileCountValue * tileSizeValue;
|
|
38
|
+
}
|
|
39
|
+
describe('coveringOffset', () => {
|
|
40
|
+
const uint8 = { type: 'uint8' };
|
|
41
|
+
const float32 = { type: 'float32' };
|
|
42
|
+
const uint16 = { type: 'uint16' };
|
|
43
|
+
// TODO use these estimated sizes to determine if the covering zoom level offset is ok
|
|
44
|
+
it('should calculate raw size of a 6 level cog correctly', () => {
|
|
45
|
+
assert.equal(tileCount(1), 1);
|
|
46
|
+
assert.equal(tileCount(2), 1 + 4);
|
|
47
|
+
assert.equal(tileCount(3), 1 + 4 + 16);
|
|
48
|
+
assert.equal(tileCount(4), 1 + 4 + 16 + 64);
|
|
49
|
+
assert.equal(tileCount(5), 1 + 4 + 16 + 64 + 256);
|
|
50
|
+
assert.equal(estimatedCogSize(1, [uint8]), 1 * 512 * 512 * 1);
|
|
51
|
+
assert.equal(estimatedCogSize(1, [uint16]), 1 * 512 * 512 * 2);
|
|
52
|
+
assert.equal(estimatedCogSize(1, [uint16, uint16]), 1 * 512 * 512 * 2 * 2);
|
|
53
|
+
assert.equal(estimatedCogSize(1, [float32]), 1 * 512 * 512 * 4);
|
|
54
|
+
rawTileSize([uint16, uint16, uint16, uint16, uint16]);
|
|
55
|
+
});
|
|
56
|
+
it('should cover singleband uint8 or uint16 correctly', () => {
|
|
57
|
+
for (const preset of ['lerc_1mm', 'lerc_10mm', 'zstd_17']) {
|
|
58
|
+
assert.equal(7, findOptimialCoveringZoomOffset(preset, [uint8]));
|
|
59
|
+
assert.equal(7, findOptimialCoveringZoomOffset(preset, [uint16]));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
it('should cover a webp rgb(a) correctly', () => {
|
|
63
|
+
assert.equal(7, findOptimialCoveringZoomOffset('webp', [uint8, uint8, uint8, uint8]));
|
|
64
|
+
assert.equal(7, findOptimialCoveringZoomOffset('webp', [uint8, uint8, uint8]));
|
|
65
|
+
});
|
|
66
|
+
it('should cover a float32 single band correctly', () => {
|
|
67
|
+
assert.equal(7, findOptimialCoveringZoomOffset('lerc_1mm', [float32]));
|
|
68
|
+
assert.equal(7, findOptimialCoveringZoomOffset('lerc_10mm', [float32]));
|
|
69
|
+
});
|
|
70
|
+
it('should reduce the size with zstd compression', () => {
|
|
71
|
+
assert.equal(6, findOptimialCoveringZoomOffset('zstd_17', [float32]));
|
|
72
|
+
assert.equal(6, findOptimialCoveringZoomOffset('zstd_17', [uint8, uint8, uint8]));
|
|
73
|
+
assert.equal(6, findOptimialCoveringZoomOffset('zstd_17', [uint8, uint8, uint8, uint8]));
|
|
74
|
+
// RGBI+Alpha
|
|
75
|
+
assert.equal(6, findOptimialCoveringZoomOffset('zstd_17', [uint8, uint8, uint8, uint8, uint8]));
|
|
76
|
+
assert.equal(6, findOptimialCoveringZoomOffset('zstd_17', [uint16, uint16, uint16, uint16, uint16]));
|
|
77
|
+
});
|
|
78
|
+
it('should default to level 6 for lzw compression', () => {
|
|
79
|
+
assert.equal(6, findOptimialCoveringZoomOffset('lzw', [float32]));
|
|
80
|
+
assert.equal(6, findOptimialCoveringZoomOffset('lzw', [uint8, uint8, uint8]));
|
|
81
|
+
assert.equal(6, findOptimialCoveringZoomOffset('lzw', [uint8, uint8, uint8, uint8]));
|
|
82
|
+
// RGBI+Alpha - these have not been tested and are assumed to be ok
|
|
83
|
+
assert.equal(6, findOptimialCoveringZoomOffset('lzw', [uint8, uint8, uint8, uint8, uint8]));
|
|
84
|
+
assert.equal(6, findOptimialCoveringZoomOffset('lzw', [uint16, uint16, uint16, uint16, uint16]));
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=covering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"covering.test.js","sourceRoot":"","sources":["../../../../src/cogify/covering/__test__/covering.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Rgba } from '@basemaps/config';
|
|
1
|
+
import { ImageryBandType, Rgba } from '@basemaps/config';
|
|
2
2
|
import { ConfigImageryTiff } from '@basemaps/config-loader';
|
|
3
3
|
import { TileMatrixSet } from '@basemaps/geo';
|
|
4
4
|
import { LogType } from '@basemaps/shared';
|
|
@@ -39,5 +39,20 @@ export interface TileCoverResult {
|
|
|
39
39
|
source: GeoJSON.FeatureCollection;
|
|
40
40
|
}
|
|
41
41
|
export declare const TargetZoomOffsetDefault = 7;
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* We are trying to find a zoom level that will create COGS that are optimally sized for the preset,
|
|
44
|
+
* We are looking for cogs that are around 1GB in size on average and keeping under 4GB when maximally filled
|
|
45
|
+
*
|
|
46
|
+
* There are lots of different presets and source imagery bands which affect the final size of the COGs,
|
|
47
|
+
* for examples:
|
|
48
|
+
* - RGB(A) `uint8` imagery compressed with webp this preset is approximately 7 levels from the base zoom level.
|
|
49
|
+
* - Elevation `float32` compressed with zstd is less effective the offset is reduced to 6 levels
|
|
50
|
+
*
|
|
51
|
+
* @param preset target compression preset
|
|
52
|
+
* @param targetBaseZoom the base zoom level to use
|
|
53
|
+
* @param sourceBands bands present in the source dataset
|
|
54
|
+
*
|
|
55
|
+
* @returns a zoom level offset to use for the covering
|
|
56
|
+
*/
|
|
57
|
+
export declare function findOptimialCoveringZoomOffset(preset: PresetName, sourceBands: ImageryBandType[]): number;
|
|
43
58
|
export declare function createTileCover(ctx: TileCoverContext): Promise<TileCoverResult>;
|
|
@@ -31,25 +31,52 @@ function getTargetBaseZoom(tileMatrix, resolution, targetZoomOffset) {
|
|
|
31
31
|
return Projection.getTiffResZoom(tileMatrix, resolution);
|
|
32
32
|
return Projection.getTiffResZoom(tileMatrix, resolution) + targetZoomOffset;
|
|
33
33
|
}
|
|
34
|
-
// The base zoom is 256x256 pixels at its resolution, we are trying to find a image that is <32k pixels wide/high
|
|
35
|
-
// zooming out 7 levels converts a 256x256 image into 32k x 32k image
|
|
36
|
-
// 256 * 2 ** 7 = 32,768 - 256x256 tile
|
|
37
|
-
// 512 * 2 ** 6 = 32,768 - 512x512 tile
|
|
38
|
-
// This math only works for highly compressed RGB imagery, for multispectrial imagery small tiles need to be made
|
|
39
34
|
export const TargetZoomOffsetDefault = 7;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
/**
|
|
36
|
+
* We are trying to find a zoom level that will create COGS that are optimally sized for the preset,
|
|
37
|
+
* We are looking for cogs that are around 1GB in size on average and keeping under 4GB when maximally filled
|
|
38
|
+
*
|
|
39
|
+
* There are lots of different presets and source imagery bands which affect the final size of the COGs,
|
|
40
|
+
* for examples:
|
|
41
|
+
* - RGB(A) `uint8` imagery compressed with webp this preset is approximately 7 levels from the base zoom level.
|
|
42
|
+
* - Elevation `float32` compressed with zstd is less effective the offset is reduced to 6 levels
|
|
43
|
+
*
|
|
44
|
+
* @param preset target compression preset
|
|
45
|
+
* @param targetBaseZoom the base zoom level to use
|
|
46
|
+
* @param sourceBands bands present in the source dataset
|
|
47
|
+
*
|
|
48
|
+
* @returns a zoom level offset to use for the covering
|
|
49
|
+
*/
|
|
50
|
+
export function findOptimialCoveringZoomOffset(preset, sourceBands) {
|
|
51
|
+
// Webp is very efficient at compressing RGB(A) imagery so we can keep the default offset
|
|
52
|
+
if (preset === 'webp')
|
|
53
|
+
return TargetZoomOffsetDefault;
|
|
54
|
+
// LZW is not very effective at compressing most imagery so we reduce the offset by one
|
|
55
|
+
if (preset === 'lzw')
|
|
56
|
+
return TargetZoomOffsetDefault - 1;
|
|
57
|
+
const sourceBandText = sourceBands.map((m) => m.type).join(',');
|
|
58
|
+
// Single band float32 imagery tends to be elevation data which compresses well with lossy lerc and less so with lossless zstd
|
|
59
|
+
if (sourceBandText === 'float32') {
|
|
60
|
+
if (preset === 'lerc_1mm' || preset === 'lerc_10mm')
|
|
61
|
+
return TargetZoomOffsetDefault;
|
|
62
|
+
// all other compressors are lossless
|
|
63
|
+
return TargetZoomOffsetDefault - 1;
|
|
64
|
+
}
|
|
65
|
+
// Single band uint8 or uint16 compresses generally very effectively with most presets
|
|
66
|
+
if (sourceBandText === 'uint8')
|
|
67
|
+
return TargetZoomOffsetDefault;
|
|
68
|
+
if (sourceBandText === 'uint16')
|
|
69
|
+
return TargetZoomOffsetDefault;
|
|
70
|
+
// Unknown preset so assume one level offset is ok
|
|
71
|
+
return TargetZoomOffsetDefault - 1;
|
|
72
|
+
}
|
|
45
73
|
export async function createTileCover(ctx) {
|
|
46
74
|
// Ensure we have the projection loaded for the source imagery
|
|
47
75
|
await ProjectionLoader.load(ctx.imagery.projection);
|
|
48
76
|
await ProjectionLoader.load(EpsgCode.Wgs84);
|
|
49
77
|
// Find the zoom level that is at least as good as the source imagery
|
|
50
78
|
const targetBaseZoom = getTargetBaseZoom(ctx.tileMatrix, ctx.imagery.gsd, ctx.targetZoomOffset);
|
|
51
|
-
const
|
|
52
|
-
const optimalCoveringZoom = Math.max(1, targetBaseZoom - targetZoomOffset); // z12 from z19
|
|
79
|
+
const optimalCoveringZoom = Math.max(1, targetBaseZoom - findOptimialCoveringZoomOffset(ctx.preset, ctx.imagery.bands));
|
|
53
80
|
ctx.logger?.debug({ targetBaseZoom, cogOverZoom: optimalCoveringZoom }, 'Imagery:ZoomLevel');
|
|
54
81
|
const sourceBounds = projectPolygon(polygonFromBounds(ctx.imagery.files), ctx.imagery.projection, ctx.tileMatrix.projection.code);
|
|
55
82
|
ctx.logger?.debug('Cutline:Apply');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.cover.js","sourceRoot":"","sources":["../../../src/cogify/covering/tile.cover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,GAAG,EAAW,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAgB,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI9G,OAAO,EAA8B,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAA6E,eAAe,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAsC/C,SAAS,WAAW,CAAC,GAAqB;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzE,IAAI,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,gCAAgC;IAChC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAAC,UAAyB,EAAE,UAAkB,EAAE,gBAAyB;IACjG,IAAI,gBAAgB,IAAI,IAAI;QAAE,OAAO,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvF,OAAO,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,gBAAgB,CAAC;AAC9E,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"tile.cover.js","sourceRoot":"","sources":["../../../src/cogify/covering/tile.cover.ts"],"names":[],"mappings":"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"}
|