@basemaps/cli 7.0.0 → 7.1.0

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.
Files changed (76) hide show
  1. package/build/cli/__tests__/util.test.d.ts +0 -1
  2. package/build/cli/__tests__/util.test.js +11 -10
  3. package/build/cli/__tests__/util.test.js.map +1 -1
  4. package/build/cli/bin.d.ts +0 -1
  5. package/build/cli/config/action.bundle.assets.d.ts +5 -7
  6. package/build/cli/config/action.bundle.assets.js +34 -21
  7. package/build/cli/config/action.bundle.assets.js.map +1 -1
  8. package/build/cli/config/action.bundle.d.ts +1 -1
  9. package/build/cli/config/action.bundle.js +40 -10
  10. package/build/cli/config/action.bundle.js.map +1 -1
  11. package/build/cli/config/action.import.d.ts +4 -9
  12. package/build/cli/config/action.import.js +131 -110
  13. package/build/cli/config/action.import.js.map +1 -1
  14. package/build/cli/config/config.diff.d.ts +2 -2
  15. package/build/cli/config/config.diff.js +6 -4
  16. package/build/cli/config/config.diff.js.map +1 -1
  17. package/build/cli/config/config.update.d.ts +3 -5
  18. package/build/cli/config/config.update.js +42 -7
  19. package/build/cli/config/config.update.js.map +1 -1
  20. package/build/cli/folder.d.ts +0 -1
  21. package/build/cli/folder.js +1 -2
  22. package/build/cli/folder.js.map +1 -1
  23. package/build/cli/index.d.ts +0 -2
  24. package/build/cli/index.js +0 -6
  25. package/build/cli/index.js.map +1 -1
  26. package/build/cli/server/action.serve.d.ts +0 -1
  27. package/build/cli/server/action.serve.js +27 -4
  28. package/build/cli/server/action.serve.js.map +1 -1
  29. package/build/cli/util.d.ts +2 -2
  30. package/build/cli/util.js +38 -37
  31. package/build/cli/util.js.map +1 -1
  32. package/package.json +20 -19
  33. package/CHANGELOG.md +0 -1612
  34. package/build/cli/__tests__/util.test.d.ts.map +0 -1
  35. package/build/cli/bin.d.ts.map +0 -1
  36. package/build/cli/config/action.bundle.assets.d.ts.map +0 -1
  37. package/build/cli/config/action.bundle.d.ts.map +0 -1
  38. package/build/cli/config/action.imagery.config.d.ts +0 -11
  39. package/build/cli/config/action.imagery.config.d.ts.map +0 -1
  40. package/build/cli/config/action.imagery.config.js +0 -142
  41. package/build/cli/config/action.imagery.config.js.map +0 -1
  42. package/build/cli/config/action.import.d.ts.map +0 -1
  43. package/build/cli/config/config.diff.d.ts.map +0 -1
  44. package/build/cli/config/config.update.d.ts.map +0 -1
  45. package/build/cli/folder.d.ts.map +0 -1
  46. package/build/cli/index.d.ts.map +0 -1
  47. package/build/cli/overview/__test__/wmts.overview.test.d.ts +0 -2
  48. package/build/cli/overview/__test__/wmts.overview.test.d.ts.map +0 -1
  49. package/build/cli/overview/__test__/wmts.overview.test.js +0 -24
  50. package/build/cli/overview/__test__/wmts.overview.test.js.map +0 -1
  51. package/build/cli/overview/action.create.overview.d.ts +0 -19
  52. package/build/cli/overview/action.create.overview.d.ts.map +0 -1
  53. package/build/cli/overview/action.create.overview.js +0 -178
  54. package/build/cli/overview/action.create.overview.js.map +0 -1
  55. package/build/cli/overview/overview.wmts.d.ts +0 -3
  56. package/build/cli/overview/overview.wmts.d.ts.map +0 -1
  57. package/build/cli/overview/overview.wmts.js +0 -29
  58. package/build/cli/overview/overview.wmts.js.map +0 -1
  59. package/build/cli/overview/tile.generator.d.ts +0 -13
  60. package/build/cli/overview/tile.generator.d.ts.map +0 -1
  61. package/build/cli/overview/tile.generator.js +0 -86
  62. package/build/cli/overview/tile.generator.js.map +0 -1
  63. package/build/cli/overview/timer.d.ts +0 -14
  64. package/build/cli/overview/timer.d.ts.map +0 -1
  65. package/build/cli/overview/timer.js +0 -21
  66. package/build/cli/overview/timer.js.map +0 -1
  67. package/build/cli/server/action.serve.d.ts.map +0 -1
  68. package/build/cli/util.d.ts.map +0 -1
  69. package/build/cog/builder.d.ts +0 -49
  70. package/build/cog/builder.d.ts.map +0 -1
  71. package/build/cog/builder.js +0 -177
  72. package/build/cog/builder.js.map +0 -1
  73. package/build/cog/cutline.d.ts +0 -75
  74. package/build/cog/cutline.d.ts.map +0 -1
  75. package/build/cog/cutline.js +0 -250
  76. package/build/cog/cutline.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/util.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.bundle.assets.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.bundle.assets.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAAuC,iBAAiB,EAAa,MAAM,aAAa,CAAC;AAChG,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOlC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,MAAM,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE,0BAA0B,CAAC;;IAUnC,SAAS,CAAC,kBAAkB,IAAI,IAAI;cAcpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBpC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBzE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB3E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAarH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.bundle.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4BAA4B,CAAC;AAE3F,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAElD,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;;IAU3C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAkB9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAYjC"}
@@ -1,11 +0,0 @@
1
- import { CommandLineAction } from '@rushstack/ts-command-line';
2
- export declare class CommandImageryConfig extends CommandLineAction {
3
- private path;
4
- private output;
5
- private commit;
6
- private title;
7
- constructor();
8
- protected onDefineParameters(): void;
9
- onExecute(): Promise<void>;
10
- }
11
- //# sourceMappingURL=action.imagery.config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.imagery.config.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.imagery.config.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAwD,MAAM,4BAA4B,CAAC;AAIrH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,KAAK,CAA6B;;IAU1C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAyB9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAuGjC"}
@@ -1,142 +0,0 @@
1
- import { base58, ConfigJson, ConfigProviderMemory, TileSetType, } from '@basemaps/config';
2
- import { Bounds, ImageFormat, Nztm2000QuadTms, Projection } from '@basemaps/geo';
3
- import { fsa, LogConfig } from '@basemaps/shared';
4
- import { CogTiff } from '@cogeotiff/core';
5
- import { CommandLineAction } from '@rushstack/ts-command-line';
6
- import { ulid } from 'ulid';
7
- import { nameImageryTitle } from '../util.js';
8
- export class CommandImageryConfig extends CommandLineAction {
9
- constructor() {
10
- super({
11
- actionName: 'create-config',
12
- summary: 'Create config file from raw tiff imagery',
13
- documentation: 'Given a valid path of raw imagery and create a config bundle file',
14
- });
15
- }
16
- onDefineParameters() {
17
- this.path = this.defineStringParameter({
18
- argumentName: 'PATH',
19
- parameterLongName: '--path',
20
- description: 'Path of raw imagery, this can be both a local path or s3 location',
21
- required: true,
22
- });
23
- this.title = this.defineStringParameter({
24
- argumentName: 'TITLE',
25
- parameterLongName: '--title',
26
- description: 'Optional title for the config',
27
- required: true,
28
- });
29
- this.output = this.defineStringParameter({
30
- argumentName: 'OUTPUT',
31
- parameterLongName: '--output',
32
- description: 'An url written to the output file',
33
- });
34
- this.commit = this.defineFlagParameter({
35
- parameterLongName: '--commit',
36
- description: 'Actually upload the config to s3.',
37
- required: false,
38
- });
39
- }
40
- async onExecute() {
41
- var _a;
42
- const logger = LogConfig.get();
43
- let path = this.path.value;
44
- if (path == null)
45
- throw new Error('Please provide valid a path for the imagery');
46
- const title = this.title.value;
47
- if (title == null)
48
- throw new Error('Please provide valid a title for the imagery');
49
- if (!path.endsWith('/'))
50
- path += '/';
51
- const commit = (_a = this.commit.value) !== null && _a !== void 0 ? _a : false;
52
- const output = this.output.value;
53
- logger.info({ path }, 'ImageryConfig:List');
54
- const sourceFiles = await fsa.toArray(fsa.list(path));
55
- const tiffs = await Promise.all(sourceFiles
56
- .filter((f) => f.toLocaleLowerCase().endsWith('.tif') || f.toLocaleLowerCase().endsWith('.tiff'))
57
- .map((c) => CogTiff.create(fsa.source(c))));
58
- if (tiffs.length === 0)
59
- throw new Error('Provided path does not have tif and tiff imagery.');
60
- logger.info({ path }, 'ImageryConfig:CreateConfig');
61
- let bounds = null;
62
- let gsd = null;
63
- const files = [];
64
- for (const tif of tiffs) {
65
- await tif.getImage(0).loadGeoTiffTags();
66
- if (tif.getImage(0).epsg !== Nztm2000QuadTms.projection.code)
67
- throw new Error('Imagery is not NZTM Projection.');
68
- const imgBounds = Bounds.fromBbox(tif.getImage(0).bbox);
69
- if (gsd == null)
70
- gsd = tif.getImage(0).resolution[0];
71
- if (bounds == null)
72
- bounds = imgBounds;
73
- else
74
- bounds = bounds.union(imgBounds);
75
- files.push({ name: tif.source.uri.replace(path, ''), ...imgBounds });
76
- }
77
- if (bounds == null)
78
- throw new Error('Failed to extract imagery bounds');
79
- if (gsd == null)
80
- throw new Error('Failed to get imagery GSD');
81
- const provider = new ConfigProviderMemory();
82
- const id = ulid();
83
- let name = path.split('/').at(-2);
84
- if (name == null) {
85
- logger.warn({ path, id }, `Unable to extract the imagery name from path, use uild id instead.`);
86
- name = id;
87
- }
88
- const im = {
89
- id: provider.Imagery.id(id),
90
- name: nameImageryTitle(title),
91
- title,
92
- updatedAt: Date.now(),
93
- projection: Nztm2000QuadTms.projection.code,
94
- tileMatrix: Nztm2000QuadTms.identifier,
95
- uri: path,
96
- bounds: bounds.toJson(),
97
- files,
98
- };
99
- im.overviews = await ConfigJson.findImageryOverviews(im);
100
- provider.put(im);
101
- const aerialTileSet = {
102
- id: 'ts_aerial',
103
- name: 'aerial',
104
- title: 'Aerial Imagery Basemap',
105
- category: 'Basemaps',
106
- type: TileSetType.Raster,
107
- format: ImageFormat.Webp,
108
- layers: [{ 2193: im.id, name: im.name, title: im.title }],
109
- };
110
- provider.put(aerialTileSet);
111
- const tileSet = provider.imageryToTileSetByName(im);
112
- const center = { x: bounds.x + bounds.width / 2, y: bounds.y + bounds.height / 2 };
113
- const proj = Projection.get(Nztm2000QuadTms);
114
- const [lon, lat] = proj.toWgs84([center.x, center.y]).map((c) => c.toFixed(6));
115
- const targetZoom = Math.max(Nztm2000QuadTms.findBestZoom(gsd) - 12, 0);
116
- const locationHash = `@${lat},${lon},z${targetZoom}`;
117
- if (commit) {
118
- logger.info({ path }, 'ImageryConfig:UploadConfig');
119
- const configJson = provider.toJson();
120
- const outputPath = fsa.join(path, `basemaps-config-${configJson.hash}.json.gz`);
121
- await fsa.writeJson(outputPath, configJson);
122
- const configPath = base58.encode(Buffer.from(outputPath));
123
- const url = `https://basemaps.linz.govt.nz/${locationHash}?i=${tileSet.name}&tileMatrix=${im.tileMatrix}&debug&config=${configPath}`;
124
- const urlPreview = `https://basemaps.linz.govt.nz/v1/preview/${tileSet.name}/${im.tileMatrix}/${targetZoom}/${lon}/${lat}?config=${configPath}`;
125
- logger.info({
126
- imageryId: id,
127
- path: output,
128
- url,
129
- urlPreview,
130
- tileMatrix: Nztm2000QuadTms.identifier,
131
- config: configPath,
132
- title,
133
- }, 'ImageryConfig:Done');
134
- if (output != null)
135
- await fsa.write(output, url);
136
- }
137
- else {
138
- logger.info('DryRun:Done');
139
- }
140
- }
141
- }
142
- //# sourceMappingURL=action.imagery.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.imagery.config.js","sourceRoot":"","sources":["../../../src/cli/config/action.imagery.config.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.import.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.import.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,sBAAsB,EAItB,WAAW,EAEX,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA0C,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAwD,MAAM,4BAA4B,CAAC;AAIrH,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA2B;IAEzC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAM;IAClC,4DAA4D;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7B,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEvB,4DAA4D;IAC5D,YAAY,EAAE,oBAAoB,CAA8B;;IAUhE,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAwB9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAwEhC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAmBjD;;;;;;OAMG;IACG,eAAe,CACnB,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;;;;OAOG;IACG,mBAAmB,CACvB,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAsChB;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DzG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAiC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAY7D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAwC;IAC5E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ7D;;OAEG;IACG,UAAU,CACd,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,sBAAsB,EAC3B,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CA0B3C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.diff.d.ts","sourceRoot":"","sources":["../../../src/cli/config/config.diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,eAAO,MAAM,iBAAiB,UAAyD,CAAC;AAExF,qBAAa,UAAU;IACrB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM;IA0BrD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;CAW1G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.update.d.ts","sourceRoot":"","sources":["../../../src/cli/config/config.update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EAEjB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAY,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAA+B,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AAI1F,eAAO,MAAM,CAAC,iCAAa,CAAC;AAE5B,qBAAa,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACpD,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,sBAAsB,CAAC;IAE5B;;;OAGG;gBACS,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO;IAUxC,KAAK,IAAI,oBAAoB,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,CAAC;IAQjG,SAAS,IAAI,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB;IAQ/E,cAAc,IAAI,MAAM;IAMxB,UAAU,IAAI,OAAO,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAMhG;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAgBpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../src/cli/folder.ts"],"names":[],"mappings":"AAIA,mDAAmD;AACnD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMpE;AAED,mDAAmD;AACnD,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKrF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,gCAAgC,CAAC;AAQxC,qBAAa,yBAA0B,SAAQ,eAAe;;CAmB7D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wmts.overview.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wmts.overview.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/overview/__test__/wmts.overview.test.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import o from 'ospec';
2
- import { zoomLevelsFromWmts } from '@basemaps/config';
3
- import { GoogleTms, Nztm2000QuadTms } from '@basemaps/geo';
4
- import { createOverviewWmtsCapabilities } from '../overview.wmts.js';
5
- // This test should really live in @basemaps/config, but all the WMTS generation logic does not live in @basemaps/config
6
- o.spec('zoomLevelsFromWmts', () => {
7
- o('should extract zoom levels', () => {
8
- const wmts = createOverviewWmtsCapabilities(Nztm2000QuadTms, 10, 'Test Title');
9
- o(zoomLevelsFromWmts(wmts, Nztm2000QuadTms)).deepEquals({ minZoom: 0, maxZoom: 10 });
10
- });
11
- o('should include all zoom levels', () => {
12
- const wmts = createOverviewWmtsCapabilities(GoogleTms, GoogleTms.maxZoom, 'Test Title');
13
- o(zoomLevelsFromWmts(wmts, GoogleTms)).deepEquals({ minZoom: 0, maxZoom: GoogleTms.maxZoom });
14
- });
15
- o('should not extract zoom levels for wrong projection', () => {
16
- const wmts = createOverviewWmtsCapabilities(GoogleTms, 10, 'Test Title');
17
- o(zoomLevelsFromWmts(wmts, Nztm2000QuadTms)).equals(null);
18
- });
19
- o('should not return if zooms are invalid', () => {
20
- const wmts = createOverviewWmtsCapabilities(Nztm2000QuadTms, 0, 'Test Title');
21
- o(zoomLevelsFromWmts(wmts, Nztm2000QuadTms)).equals(null);
22
- });
23
- });
24
- //# sourceMappingURL=wmts.overview.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wmts.overview.test.js","sourceRoot":"","sources":["../../../../src/cli/overview/__test__/wmts.overview.test.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErE,wHAAwH;AACxH,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,CAAC,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,8BAA8B,CAAC,eAAe,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QAC/E,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,8BAA8B,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACxF,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAG,8BAA8B,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACzE,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,8BAA8B,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC9E,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- import { NamedBounds, TileMatrixSet } from '@basemaps/geo';
2
- import { LogType } from '@basemaps/shared';
3
- import { CogTiff } from '@cogeotiff/core';
4
- import { CommandLineAction } from '@rushstack/ts-command-line';
5
- export declare const MaxConcurrencyDefault = 50;
6
- export declare function filterTiff(a: string): boolean;
7
- export declare class CommandCreateOverview extends CommandLineAction {
8
- private source;
9
- private output;
10
- constructor();
11
- protected onDefineParameters(): void;
12
- onExecute(): Promise<void>;
13
- prepareTiles(files: NamedBounds[], maxZoom: number): Set<string>;
14
- addChildren(qk: string, maxZoom: number, tiles: Set<string>): void;
15
- getTileMatrix(tiff: CogTiff): Promise<TileMatrixSet>;
16
- getMaxZoomFromGSD(tiff: CogTiff, tileMatrix: TileMatrixSet): number;
17
- createTar(path: string, logger: LogType): Promise<void>;
18
- }
19
- //# sourceMappingURL=action.create.overview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.create.overview.d.ts","sourceRoot":"","sources":["../../../src/cli/overview/action.create.overview.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,WAAW,EAAwC,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4BAA4B,CAAC;AAY3F,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;;IAU3C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAc9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEhC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAiBhE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAQ5D,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ1D,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,GAAG,MAAM;IAM7D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAgC9D"}
@@ -1,178 +0,0 @@
1
- import { sha256base58 } from '@basemaps/config';
2
- import { GoogleTms, Nztm2000QuadTms, Projection, QuadKey } from '@basemaps/geo';
3
- import { LogConfig } from '@basemaps/shared';
4
- import { SourceMemory } from '@chunkd/core';
5
- import { fsa } from '@chunkd/fs';
6
- import { CogTiff } from '@cogeotiff/core';
7
- import { CotarIndexBinary, CotarIndexBuilder, TarReader } from '@cotar/core';
8
- import { TarBuilder } from '@cotar/tar';
9
- import { CommandLineAction } from '@rushstack/ts-command-line';
10
- import { promises as fs } from 'fs';
11
- import * as path from 'path';
12
- import { resolve } from 'path';
13
- import { CogBuilder } from '../../cog/builder.js';
14
- import { Cutline } from '../../cog/cutline.js';
15
- import { createOverviewWmtsCapabilities } from './overview.wmts.js';
16
- import { tile } from './tile.generator.js';
17
- import { SimpleTimer } from './timer.js';
18
- const DefaultMaxZoom = 15; // Limitation of maximum overview zoom level to create
19
- const MaxNumberTiles = 25000; // Limitation of maximum number of tiles we can create for overview.
20
- export const MaxConcurrencyDefault = 50;
21
- export function filterTiff(a) {
22
- const lowerA = a.toLowerCase();
23
- return lowerA.endsWith('.tiff') || lowerA.endsWith('.tif');
24
- }
25
- export class CommandCreateOverview extends CommandLineAction {
26
- constructor() {
27
- super({
28
- actionName: 'create-overview',
29
- summary: 'Create a overview of imagery',
30
- documentation: 'Given a s3 path of Basemaps imagery and create a overview of them within a maximum zoom level.',
31
- });
32
- }
33
- onDefineParameters() {
34
- this.source = this.defineStringParameter({
35
- argumentName: 'SOURCE',
36
- parameterLongName: '--source',
37
- description: 'Path of source imagery files',
38
- required: true,
39
- });
40
- this.output = this.defineStringParameter({
41
- argumentName: 'OUTPUT',
42
- parameterLongName: '--output',
43
- description: 'Path of output tar file',
44
- });
45
- }
46
- async onExecute() {
47
- var _a;
48
- const logger = LogConfig.get();
49
- const source = this.source.value;
50
- if (source == null)
51
- throw new Error('Please provide a path for the source imagery.');
52
- const hash = sha256base58(source);
53
- logger.info({ source, hash }, 'CreateOverview');
54
- const path = fsa.join('overview', hash);
55
- const st = new SimpleTimer();
56
- logger.debug({ source }, 'CreateOverview:ListTiffs');
57
- const tiffList = (await fsa.toArray(fsa.list(source))).filter(filterTiff);
58
- if (tiffList.length === 0) {
59
- logger.warn('CreateOverview:NoTiffs');
60
- return;
61
- }
62
- const tiffSource = tiffList.map((path) => fsa.source(path));
63
- logger.info({ source, tiffs: tiffList.length, duration: st.tick() }, 'CreateOverview:ListTiffs:Done');
64
- logger.debug({ source, first: tiffSource[0].uri }, 'CreateOverview:PrepareSourceFiles');
65
- // To ensure that permissions are setup correctly attempt to read the first tiff
66
- await fsa.head(tiffSource[0].uri);
67
- const tiff = new CogTiff(tiffSource[0]);
68
- await tiff.init(true);
69
- const tileMatrix = await this.getTileMatrix(tiff);
70
- const maxZoom = this.getMaxZoomFromGSD(tiff, tileMatrix);
71
- await tiff.close();
72
- logger.info({ source, duration: st.tick() }, 'CreateOverview:PrepareSourceFiles:Done');
73
- logger.debug({ source }, 'CreateOverview:PrepareCovering');
74
- const cutline = new Cutline(tileMatrix);
75
- const builder = new CogBuilder(tileMatrix, MaxConcurrencyDefault, logger);
76
- const metadata = await builder.build(tiffSource, cutline, 10);
77
- logger.info({ source, duration: st.tick() }, 'CreateOverview:PrepareCovering:Done');
78
- logger.debug({ source }, 'CreateOverview:PrepareTiles');
79
- const tiles = this.prepareTiles(metadata.files, maxZoom);
80
- if (tiles.size < 1)
81
- throw new Error('Failed to prepare overviews.');
82
- logger.info({ source, duration: st.tick() }, 'CreateOverview:PrepareTiles:Done');
83
- const tilesByZoom = [];
84
- let maxZoomGenerated = 0;
85
- for (const tile of tiles) {
86
- tilesByZoom[tile.length] = ((_a = tilesByZoom[tile.length]) !== null && _a !== void 0 ? _a : 0) + 1;
87
- maxZoomGenerated = Math.max(tile.length, maxZoomGenerated);
88
- }
89
- logger.debug({ source }, 'CreateOverview:GenerateTiles');
90
- const jobTiles = {
91
- path,
92
- files: metadata.bounds,
93
- tileMatrix: tileMatrix.identifier,
94
- tiles: Array.from(tiles.values()),
95
- };
96
- await tile(jobTiles, logger);
97
- logger.info({ source, duration: st.tick(), tilesByZoom }, 'CreateOverview:GenerateTiles:Done');
98
- const wmts = createOverviewWmtsCapabilities(tileMatrix, maxZoomGenerated);
99
- await fsa.write(fsa.join(path, 'WMTSCapabilities.xml'), wmts);
100
- logger.debug({ source }, 'CreateOverview:CreatingTar');
101
- await this.createTar(path, logger);
102
- logger.info({ source, duration: st.tick() }, 'CreateOverview:CreatingTar:Done');
103
- logger.info({ source, duration: st.total() }, 'CreateOverview:Done');
104
- }
105
- prepareTiles(files, maxZoom) {
106
- const tiles = new Set(['']);
107
- for (const file of files) {
108
- const name = file.name;
109
- const [z, x, y] = path.basename(name).replace('.tiff', '').split('-').map(Number);
110
- let qk = QuadKey.fromTile({ x, y, z });
111
- this.addChildren(qk, maxZoom, tiles);
112
- while (qk.length > 0) {
113
- if (tiles.has(qk))
114
- break;
115
- if (qk.length < maxZoom)
116
- tiles.add(qk);
117
- qk = QuadKey.parent(qk);
118
- }
119
- }
120
- if (tiles.size > MaxNumberTiles)
121
- return this.prepareTiles(files, maxZoom - 1);
122
- return tiles;
123
- }
124
- addChildren(qk, maxZoom, tiles) {
125
- if (qk.length >= maxZoom)
126
- return;
127
- for (const child of QuadKey.children(qk)) {
128
- tiles.add(child);
129
- if (child.length < maxZoom)
130
- this.addChildren(child, maxZoom, tiles);
131
- }
132
- }
133
- async getTileMatrix(tiff) {
134
- const projection = tiff.getImage(0).epsg;
135
- if (projection == null)
136
- throw new Error('Failed to find the projection from the imagery.');
137
- else if (projection === 2193)
138
- return Nztm2000QuadTms;
139
- else if (projection === 3857)
140
- return GoogleTms;
141
- else
142
- throw new Error(`Projection code: ${projection} not supported`);
143
- }
144
- getMaxZoomFromGSD(tiff, tileMatrix) {
145
- const gsd = tiff.getImage(tiff.images.length - 1).resolution[0];
146
- const resZoom = Projection.getTiffResZoom(tileMatrix, gsd);
147
- return Math.min(resZoom + 2, DefaultMaxZoom);
148
- }
149
- async createTar(path, logger) {
150
- const tarFile = 'overviews.tar.co';
151
- const tarFilePath = fsa.join(path, tarFile);
152
- const targetPath = resolve(path);
153
- // Create tar file
154
- const tiles = await fsa.toArray(fsa.list(fsa.join(targetPath, 'tiles/')));
155
- tiles.push(fsa.join(targetPath, 'WMTSCapabilities.xml'));
156
- const tarBuilder = new TarBuilder(tarFilePath);
157
- tiles.sort((a, b) => a.localeCompare(b));
158
- for (const file of tiles)
159
- await tarBuilder.write(file.slice(targetPath.length + 1), await fsa.read(file));
160
- await tarBuilder.close();
161
- logger.info(tarBuilder.stats, 'CreateOver:TarCreated');
162
- // Creating tar index
163
- const fd = await fs.open(tarFilePath, 'r');
164
- const index = await CotarIndexBuilder.create(fd, { packingFactor: 1.25 });
165
- const indexBinary = await CotarIndexBinary.create(new SourceMemory('index', index.buffer));
166
- await TarReader.validate(fd, indexBinary);
167
- await fd.close();
168
- await fs.appendFile(tarFilePath, index.buffer);
169
- // Copy the output into s3 location
170
- const output = this.output.value;
171
- if (output) {
172
- const outputFile = fsa.join(output, tarFile);
173
- logger.info({ target: outputFile }, 'CreateOverview:UploadOutput');
174
- await fsa.write(outputFile, fsa.stream(tarFilePath));
175
- }
176
- }
177
- }
178
- //# sourceMappingURL=action.create.overview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.create.overview.js","sourceRoot":"","sources":["../../../src/cli/overview/action.create.overview.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { TileMatrixSet } from '@basemaps/geo';
2
- export declare function createOverviewWmtsCapabilities(tileMatrix: TileMatrixSet, maxZoom: number, title?: string): string;
3
- //# sourceMappingURL=overview.wmts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overview.wmts.d.ts","sourceRoot":"","sources":["../../../src/cli/overview/overview.wmts.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,aAAa,EAAE,MAAM,eAAe,CAAC;AAG3D,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,SAAoB,GACxB,MAAM,CA2BR"}
@@ -1,29 +0,0 @@
1
- import { TileSetType } from '@basemaps/config';
2
- import { ImageFormat } from '@basemaps/geo';
3
- import { WmtsCapabilities } from '@basemaps/lambda-tiler/build/wmts.capability.js';
4
- export function createOverviewWmtsCapabilities(tileMatrix, maxZoom, title = 'cotar-overviews') {
5
- const fakeLayer = { [tileMatrix.projection.code]: '', title, name: 'cotar-overviews' };
6
- const tileSet = {
7
- id: 'cotar-overviews',
8
- name: 'cotar-overviews',
9
- type: TileSetType.Raster,
10
- format: ImageFormat.Webp,
11
- layers: [fakeLayer],
12
- title,
13
- };
14
- const wmts = new WmtsCapabilities({
15
- httpBase: '',
16
- });
17
- wmts.addFormats(ImageFormat.Webp);
18
- wmts.addTileMatrix(tileMatrix);
19
- wmts.addTileSet(tileSet);
20
- wmts.maxZoom = maxZoom;
21
- const nodes = wmts.toVNode();
22
- const resourceUrl = nodes.find('ResourceURL');
23
- if (resourceUrl == null)
24
- throw new Error('Failed to create WMTSCapabilities missing resourceUrl');
25
- // Overwrite the location of the tiles to the structure used in the overview tar
26
- resourceUrl.attrs['template'] = '/tiles/{TileMatrix}/{TileCol}/{TileRow}.webp';
27
- return nodes.toString();
28
- }
29
- //# sourceMappingURL=overview.wmts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overview.wmts.js","sourceRoot":"","sources":["../../../src/cli/overview/overview.wmts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAEnF,MAAM,UAAU,8BAA8B,CAC5C,UAAyB,EACzB,OAAe,EACf,KAAK,GAAG,iBAAiB;IAEzB,MAAM,SAAS,GAAgB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IACpG,MAAM,OAAO,GAAwB;QACnC,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,WAAW,CAAC,MAAM;QACxB,MAAM,EAAE,WAAW,CAAC,IAAI;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC;QACnB,KAAK;KACN,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC;QAChC,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAE7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,WAAW,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAClG,gFAAgF;IAChF,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,8CAA8C,CAAC;IAC/E,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
@@ -1,13 +0,0 @@
1
- import { NamedBounds } from '@basemaps/geo';
2
- import { LogType } from '@basemaps/shared';
3
- export interface JobTiles {
4
- path: string;
5
- tileMatrix: string;
6
- tiles: string[];
7
- files: NamedBounds[];
8
- }
9
- export type RpcContract = {
10
- tile(jobTiles: JobTiles): Promise<void>;
11
- };
12
- export declare function tile(jobTiles: JobTiles, logger: LogType): Promise<void>;
13
- //# sourceMappingURL=tile.generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.generator.d.ts","sourceRoot":"","sources":["../../../src/cli/overview/tile.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EAMZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAuB3C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAID,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAsB,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E"}
@@ -1,86 +0,0 @@
1
- import { Bounds, GoogleTms, ImageFormat, Nztm2000QuadTms, Nztm2000Tms, QuadKey, } from '@basemaps/geo';
2
- import { fsa } from '@chunkd/fs';
3
- import pLimit from 'p-limit';
4
- import { CoSources } from '@basemaps/lambda-tiler/build/util/source.cache.js';
5
- import { Tiler } from '@basemaps/tiler';
6
- import { TileMakerSharp } from '@basemaps/tiler-sharp';
7
- import Sharp from 'sharp';
8
- import { SimpleTimer } from './timer.js';
9
- const DefaultResizeKernel = { in: 'lanczos3', out: 'lanczos3' };
10
- const DefaultBackground = { r: 0, g: 0, b: 0, alpha: 0 };
11
- const TileComposer = new TileMakerSharp(256);
12
- const tilerNZTM2000Quad = new Tiler(Nztm2000QuadTms);
13
- const tilerGoogle = new Tiler(GoogleTms);
14
- function getTiler(tileMatrix) {
15
- if (tileMatrix === GoogleTms.identifier)
16
- return { tiler: tilerGoogle, tileMatrix: GoogleTms };
17
- else if (tileMatrix === Nztm2000QuadTms.identifier || tileMatrix === Nztm2000Tms.identifier)
18
- return { tiler: tilerNZTM2000Quad, tileMatrix: Nztm2000QuadTms };
19
- else
20
- throw new Error(`Invalid Tile Matrix provided ${tileMatrix}`);
21
- }
22
- const Q = pLimit(20);
23
- export async function tile(jobTiles, logger) {
24
- const timer = new SimpleTimer();
25
- let count = 0;
26
- let skipped = 0;
27
- const todo = jobTiles.tiles.map((qk) => {
28
- return Q(async () => {
29
- const tile = QuadKey.toTile(qk);
30
- count++;
31
- if (count % 100 === 0) {
32
- logger.info({ count, total: jobTiles.tiles.length, duration: timer.tick() }, 'Tiles:Progress');
33
- }
34
- const outputTile = `tiles/${tile.z}/${tile.x}/${tile.y}.webp`;
35
- const outputFile = fsa.join(jobTiles.path, outputTile);
36
- const exists = await fsa.exists(outputFile);
37
- if (exists) {
38
- skipped++;
39
- return;
40
- }
41
- const buffer = await getComposedTile(jobTiles, tile);
42
- if (buffer != null)
43
- await fsa.write(outputFile, buffer);
44
- });
45
- });
46
- await Promise.all(todo);
47
- logger.info({ count, skipped, duration: timer.total() }, 'Tiles:Created');
48
- }
49
- async function getComposedTile(jobTiles, tile) {
50
- const files = jobTiles.files;
51
- const tiffPaths = [];
52
- const { tiler, tileMatrix } = getTiler(jobTiles.tileMatrix);
53
- const tileBounds = tileMatrix.tileToSourceBounds(tile);
54
- for (const c of files) {
55
- if (!tileBounds.intersects(Bounds.fromJson(c)))
56
- continue;
57
- const tiffPath = c.name;
58
- tiffPaths.push(tiffPath);
59
- }
60
- const todoTiffs = [];
61
- for (const tiffPath of tiffPaths) {
62
- const tiff = CoSources.getCog(tiffPath);
63
- todoTiffs.push(tiff);
64
- }
65
- const tiffs = await Promise.all(todoTiffs);
66
- const layers = await tiler.tile(tiffs, tile.x, tile.y, tile.z);
67
- if (layers.length === 0)
68
- return;
69
- const res = await TileComposer.compose({
70
- layers,
71
- format: ImageFormat.Webp,
72
- background: DefaultBackground,
73
- resizeKernel: DefaultResizeKernel,
74
- });
75
- if (res.layers === 0)
76
- return;
77
- // Check and skip if the buffer is empty webp
78
- if (res.buffer.byteLength < 215) {
79
- const image = Sharp(Buffer.from(res.buffer));
80
- const stat = await image.stats();
81
- if (stat.channels[stat.channels.length - 1].max === 0)
82
- return;
83
- }
84
- return res.buffer;
85
- }
86
- //# sourceMappingURL=tile.generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.generator.js","sourceRoot":"","sources":["../../../src/cli/overview/tile.generator.ts"],"names":[],"mappings":"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"}