@basemaps/cli 6.46.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 (233) hide show
  1. package/README.md +10 -108
  2. package/build/cli/__tests__/util.test.d.ts +0 -1
  3. package/build/cli/__tests__/util.test.js +11 -10
  4. package/build/cli/__tests__/util.test.js.map +1 -1
  5. package/build/cli/bin.d.ts +0 -1
  6. package/build/cli/config/action.bundle.assets.d.ts +5 -7
  7. package/build/cli/config/action.bundle.assets.js +34 -21
  8. package/build/cli/config/action.bundle.assets.js.map +1 -1
  9. package/build/cli/config/action.bundle.d.ts +1 -1
  10. package/build/cli/config/action.bundle.js +40 -12
  11. package/build/cli/config/action.bundle.js.map +1 -1
  12. package/build/cli/config/action.import.d.ts +4 -9
  13. package/build/cli/config/action.import.js +131 -110
  14. package/build/cli/config/action.import.js.map +1 -1
  15. package/build/cli/config/config.diff.d.ts +2 -2
  16. package/build/cli/config/config.diff.js +6 -4
  17. package/build/cli/config/config.diff.js.map +1 -1
  18. package/build/cli/config/config.update.d.ts +3 -5
  19. package/build/cli/config/config.update.js +42 -7
  20. package/build/cli/config/config.update.js.map +1 -1
  21. package/build/cli/folder.d.ts +0 -1
  22. package/build/cli/folder.js +1 -2
  23. package/build/cli/folder.js.map +1 -1
  24. package/build/cli/index.d.ts +0 -2
  25. package/build/cli/index.js +2 -17
  26. package/build/cli/index.js.map +1 -1
  27. package/build/cli/server/action.serve.d.ts +0 -1
  28. package/build/cli/server/action.serve.js +27 -4
  29. package/build/cli/server/action.serve.js.map +1 -1
  30. package/build/cli/util.d.ts +3 -8
  31. package/build/cli/util.js +48 -55
  32. package/build/cli/util.js.map +1 -1
  33. package/package.json +20 -24
  34. package/CHANGELOG.md +0 -1589
  35. package/build/cli/__tests__/util.test.d.ts.map +0 -1
  36. package/build/cli/base.cli.d.ts +0 -1
  37. package/build/cli/base.cli.d.ts.map +0 -1
  38. package/build/cli/base.cli.js +0 -2
  39. package/build/cli/base.cli.js.map +0 -1
  40. package/build/cli/bin.d.ts.map +0 -1
  41. package/build/cli/cogify/__tests__/batch.job.test.d.ts +0 -2
  42. package/build/cli/cogify/__tests__/batch.job.test.d.ts.map +0 -1
  43. package/build/cli/cogify/__tests__/batch.job.test.js +0 -92
  44. package/build/cli/cogify/__tests__/batch.job.test.js.map +0 -1
  45. package/build/cli/cogify/__tests__/semver.test.d.ts +0 -2
  46. package/build/cli/cogify/__tests__/semver.test.d.ts.map +0 -1
  47. package/build/cli/cogify/__tests__/semver.test.js +0 -62
  48. package/build/cli/cogify/__tests__/semver.test.js.map +0 -1
  49. package/build/cli/cogify/action.cog.d.ts +0 -20
  50. package/build/cli/cogify/action.cog.d.ts.map +0 -1
  51. package/build/cli/cogify/action.cog.js +0 -198
  52. package/build/cli/cogify/action.cog.js.map +0 -1
  53. package/build/cli/cogify/action.job.d.ts +0 -28
  54. package/build/cli/cogify/action.job.d.ts.map +0 -1
  55. package/build/cli/cogify/action.job.js +0 -176
  56. package/build/cli/cogify/action.job.js.map +0 -1
  57. package/build/cli/cogify/action.make.cog.d.ts +0 -23
  58. package/build/cli/cogify/action.make.cog.d.ts.map +0 -1
  59. package/build/cli/cogify/action.make.cog.js +0 -218
  60. package/build/cli/cogify/action.make.cog.js.map +0 -1
  61. package/build/cli/cogify/action.make.cog.pr.d.ts +0 -25
  62. package/build/cli/cogify/action.make.cog.pr.d.ts.map +0 -1
  63. package/build/cli/cogify/action.make.cog.pr.js +0 -96
  64. package/build/cli/cogify/action.make.cog.pr.js.map +0 -1
  65. package/build/cli/cogify/batch.job.d.ts +0 -40
  66. package/build/cli/cogify/batch.job.d.ts.map +0 -1
  67. package/build/cli/cogify/batch.job.js +0 -205
  68. package/build/cli/cogify/batch.job.js.map +0 -1
  69. package/build/cli/cogify/cutline.d.ts +0 -5
  70. package/build/cli/cogify/cutline.d.ts.map +0 -1
  71. package/build/cli/cogify/cutline.js +0 -33
  72. package/build/cli/cogify/cutline.js.map +0 -1
  73. package/build/cli/cogify/semver.util.d.ts +0 -24
  74. package/build/cli/cogify/semver.util.d.ts.map +0 -1
  75. package/build/cli/cogify/semver.util.js +0 -56
  76. package/build/cli/cogify/semver.util.js.map +0 -1
  77. package/build/cli/config/action.bundle.assets.d.ts.map +0 -1
  78. package/build/cli/config/action.bundle.d.ts.map +0 -1
  79. package/build/cli/config/action.cog.mapsheet.d.ts +0 -12
  80. package/build/cli/config/action.cog.mapsheet.d.ts.map +0 -1
  81. package/build/cli/config/action.cog.mapsheet.js +0 -107
  82. package/build/cli/config/action.cog.mapsheet.js.map +0 -1
  83. package/build/cli/config/action.imagery.config.d.ts +0 -11
  84. package/build/cli/config/action.imagery.config.d.ts.map +0 -1
  85. package/build/cli/config/action.imagery.config.js +0 -142
  86. package/build/cli/config/action.imagery.config.js.map +0 -1
  87. package/build/cli/config/action.import.d.ts.map +0 -1
  88. package/build/cli/config/config.diff.d.ts.map +0 -1
  89. package/build/cli/config/config.update.d.ts.map +0 -1
  90. package/build/cli/folder.d.ts.map +0 -1
  91. package/build/cli/github/github.d.ts +0 -49
  92. package/build/cli/github/github.d.ts.map +0 -1
  93. package/build/cli/github/github.js +0 -107
  94. package/build/cli/github/github.js.map +0 -1
  95. package/build/cli/github/make.cog.pr.d.ts +0 -42
  96. package/build/cli/github/make.cog.pr.d.ts.map +0 -1
  97. package/build/cli/github/make.cog.pr.js +0 -173
  98. package/build/cli/github/make.cog.pr.js.map +0 -1
  99. package/build/cli/index.d.ts.map +0 -1
  100. package/build/cli/overview/__test__/wmts.overview.test.d.ts +0 -2
  101. package/build/cli/overview/__test__/wmts.overview.test.d.ts.map +0 -1
  102. package/build/cli/overview/__test__/wmts.overview.test.js +0 -24
  103. package/build/cli/overview/__test__/wmts.overview.test.js.map +0 -1
  104. package/build/cli/overview/action.create.overview.d.ts +0 -17
  105. package/build/cli/overview/action.create.overview.d.ts.map +0 -1
  106. package/build/cli/overview/action.create.overview.js +0 -174
  107. package/build/cli/overview/action.create.overview.js.map +0 -1
  108. package/build/cli/overview/overview.wmts.d.ts +0 -3
  109. package/build/cli/overview/overview.wmts.d.ts.map +0 -1
  110. package/build/cli/overview/overview.wmts.js +0 -29
  111. package/build/cli/overview/overview.wmts.js.map +0 -1
  112. package/build/cli/overview/tile.generator.d.ts +0 -13
  113. package/build/cli/overview/tile.generator.d.ts.map +0 -1
  114. package/build/cli/overview/tile.generator.js +0 -86
  115. package/build/cli/overview/tile.generator.js.map +0 -1
  116. package/build/cli/overview/timer.d.ts +0 -14
  117. package/build/cli/overview/timer.d.ts.map +0 -1
  118. package/build/cli/overview/timer.js +0 -21
  119. package/build/cli/overview/timer.js.map +0 -1
  120. package/build/cli/server/action.serve.d.ts.map +0 -1
  121. package/build/cli/sprites/action.sprites.d.ts +0 -11
  122. package/build/cli/sprites/action.sprites.d.ts.map +0 -1
  123. package/build/cli/sprites/action.sprites.js +0 -42
  124. package/build/cli/sprites/action.sprites.js.map +0 -1
  125. package/build/cli/util.d.ts.map +0 -1
  126. package/build/cog/__tests__/builder.test.d.ts +0 -2
  127. package/build/cog/__tests__/builder.test.d.ts.map +0 -1
  128. package/build/cog/__tests__/builder.test.js +0 -81
  129. package/build/cog/__tests__/builder.test.js.map +0 -1
  130. package/build/cog/__tests__/cog.stac.job.test.d.ts +0 -2
  131. package/build/cog/__tests__/cog.stac.job.test.d.ts.map +0 -1
  132. package/build/cog/__tests__/cog.stac.job.test.js +0 -319
  133. package/build/cog/__tests__/cog.stac.job.test.js.map +0 -1
  134. package/build/cog/__tests__/cog.test.d.ts +0 -2
  135. package/build/cog/__tests__/cog.test.d.ts.map +0 -1
  136. package/build/cog/__tests__/cog.test.js +0 -91
  137. package/build/cog/__tests__/cog.test.js.map +0 -1
  138. package/build/cog/__tests__/cog.vrt.test.d.ts +0 -2
  139. package/build/cog/__tests__/cog.vrt.test.d.ts.map +0 -1
  140. package/build/cog/__tests__/cog.vrt.test.js +0 -229
  141. package/build/cog/__tests__/cog.vrt.test.js.map +0 -1
  142. package/build/cog/__tests__/cutline.test.d.ts +0 -2
  143. package/build/cog/__tests__/cutline.test.d.ts.map +0 -1
  144. package/build/cog/__tests__/cutline.test.js +0 -300
  145. package/build/cog/__tests__/cutline.test.js.map +0 -1
  146. package/build/cog/__tests__/projection.loader.test.d.ts +0 -2
  147. package/build/cog/__tests__/projection.loader.test.d.ts.map +0 -1
  148. package/build/cog/__tests__/projection.loader.test.js +0 -27
  149. package/build/cog/__tests__/projection.loader.test.js.map +0 -1
  150. package/build/cog/__tests__/source.tiff.testhelper.d.ts +0 -8
  151. package/build/cog/__tests__/source.tiff.testhelper.d.ts.map +0 -1
  152. package/build/cog/__tests__/source.tiff.testhelper.js +0 -41
  153. package/build/cog/__tests__/source.tiff.testhelper.js.map +0 -1
  154. package/build/cog/builder.d.ts +0 -49
  155. package/build/cog/builder.d.ts.map +0 -1
  156. package/build/cog/builder.js +0 -177
  157. package/build/cog/builder.js.map +0 -1
  158. package/build/cog/cog.d.ts +0 -22
  159. package/build/cog/cog.d.ts.map +0 -1
  160. package/build/cog/cog.js +0 -72
  161. package/build/cog/cog.js.map +0 -1
  162. package/build/cog/cog.stac.job.d.ts +0 -106
  163. package/build/cog/cog.stac.job.d.ts.map +0 -1
  164. package/build/cog/cog.stac.job.js +0 -257
  165. package/build/cog/cog.stac.job.js.map +0 -1
  166. package/build/cog/cog.vrt.d.ts +0 -18
  167. package/build/cog/cog.vrt.d.ts.map +0 -1
  168. package/build/cog/cog.vrt.js +0 -102
  169. package/build/cog/cog.vrt.js.map +0 -1
  170. package/build/cog/constants.d.ts +0 -5
  171. package/build/cog/constants.d.ts.map +0 -1
  172. package/build/cog/constants.js +0 -5
  173. package/build/cog/constants.js.map +0 -1
  174. package/build/cog/cutline.d.ts +0 -75
  175. package/build/cog/cutline.d.ts.map +0 -1
  176. package/build/cog/cutline.js +0 -250
  177. package/build/cog/cutline.js.map +0 -1
  178. package/build/cog/job.factory.d.ts +0 -10
  179. package/build/cog/job.factory.d.ts.map +0 -1
  180. package/build/cog/job.factory.js +0 -92
  181. package/build/cog/job.factory.js.map +0 -1
  182. package/build/cog/projection.loader.d.ts +0 -13
  183. package/build/cog/projection.loader.d.ts.map +0 -1
  184. package/build/cog/projection.loader.js +0 -27
  185. package/build/cog/projection.loader.js.map +0 -1
  186. package/build/cog/stac.d.ts +0 -32
  187. package/build/cog/stac.d.ts.map +0 -1
  188. package/build/cog/stac.js +0 -3
  189. package/build/cog/stac.js.map +0 -1
  190. package/build/cog/types.d.ts +0 -83
  191. package/build/cog/types.d.ts.map +0 -1
  192. package/build/cog/types.js +0 -2
  193. package/build/cog/types.js.map +0 -1
  194. package/build/gdal/__tests__/gdal.progress.test.d.ts +0 -2
  195. package/build/gdal/__tests__/gdal.progress.test.d.ts.map +0 -1
  196. package/build/gdal/__tests__/gdal.progress.test.js +0 -22
  197. package/build/gdal/__tests__/gdal.progress.test.js.map +0 -1
  198. package/build/gdal/__tests__/gdal.test.d.ts +0 -2
  199. package/build/gdal/__tests__/gdal.test.d.ts.map +0 -1
  200. package/build/gdal/__tests__/gdal.test.js +0 -52
  201. package/build/gdal/__tests__/gdal.test.js.map +0 -1
  202. package/build/gdal/gdal.cog.d.ts +0 -42
  203. package/build/gdal/gdal.cog.d.ts.map +0 -1
  204. package/build/gdal/gdal.cog.js +0 -108
  205. package/build/gdal/gdal.cog.js.map +0 -1
  206. package/build/gdal/gdal.command.d.ts +0 -44
  207. package/build/gdal/gdal.command.d.ts.map +0 -1
  208. package/build/gdal/gdal.command.js +0 -87
  209. package/build/gdal/gdal.command.js.map +0 -1
  210. package/build/gdal/gdal.config.d.ts +0 -51
  211. package/build/gdal/gdal.config.d.ts.map +0 -1
  212. package/build/gdal/gdal.config.js +0 -23
  213. package/build/gdal/gdal.config.js.map +0 -1
  214. package/build/gdal/gdal.d.ts +0 -19
  215. package/build/gdal/gdal.d.ts.map +0 -1
  216. package/build/gdal/gdal.docker.d.ts +0 -18
  217. package/build/gdal/gdal.docker.d.ts.map +0 -1
  218. package/build/gdal/gdal.docker.js +0 -82
  219. package/build/gdal/gdal.docker.js.map +0 -1
  220. package/build/gdal/gdal.js +0 -28
  221. package/build/gdal/gdal.js.map +0 -1
  222. package/build/gdal/gdal.local.d.ts +0 -10
  223. package/build/gdal/gdal.local.d.ts.map +0 -1
  224. package/build/gdal/gdal.local.js +0 -22
  225. package/build/gdal/gdal.local.js.map +0 -1
  226. package/build/gdal/gdal.progress.d.ts +0 -16
  227. package/build/gdal/gdal.progress.d.ts.map +0 -1
  228. package/build/gdal/gdal.progress.js +0 -50
  229. package/build/gdal/gdal.progress.js.map +0 -1
  230. package/build/index.d.ts +0 -6
  231. package/build/index.d.ts.map +0 -1
  232. package/build/index.js +0 -6
  233. package/build/index.js.map +0 -1
@@ -1,41 +0,0 @@
1
- import { EpsgCode, GoogleTms } from '@basemaps/geo';
2
- import { CogStacJob } from '../cog.stac.job.js';
3
- export const SourceTiffTestHelper = {
4
- makeCogJob() {
5
- return new CogStacJob({
6
- source: {
7
- files: [],
8
- epsg: EpsgCode.Nztm2000,
9
- gsd: 0.8,
10
- },
11
- output: {
12
- tileMatrix: GoogleTms.identifier,
13
- gsd: 0.75,
14
- addAlpha: true,
15
- oneCogCovering: false,
16
- },
17
- });
18
- },
19
- tiffNztmBounds(path = '/path/to') {
20
- return [
21
- {
22
- name: path + '/tiff1.tiff',
23
- x: 1732000,
24
- y: 5442000,
25
- width: 24000,
26
- height: 36000,
27
- },
28
- {
29
- name: path + '/tiff2.tiff',
30
- x: 1756000,
31
- y: 5442000,
32
- width: 24000,
33
- height: 36000,
34
- },
35
- ];
36
- },
37
- namedBoundsToPaths(bounds) {
38
- return bounds.map(({ name }) => `/path/to/tiff${name}.tiff`);
39
- },
40
- };
41
- //# sourceMappingURL=source.tiff.testhelper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source.tiff.testhelper.js","sourceRoot":"","sources":["../../../src/cog/__tests__/source.tiff.testhelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAe,SAAS,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU;QACR,OAAO,IAAI,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAK,EAAE,EAAmB;gBAC1B,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,GAAG,EAAE,GAAG;aACT;YACD,MAAM,EAAE;gBACN,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,KAAK;aACtB;SACY,CAAC,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,IAAI,GAAG,UAAU;QAC9B,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,GAAG,aAAa;gBAC1B,CAAC,EAAE,OAAO;gBACV,CAAC,EAAE,OAAO;gBACV,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;aACd;YACD;gBACE,IAAI,EAAE,IAAI,GAAG,aAAa;gBAC1B,CAAC,EAAE,OAAO;gBACV,CAAC,EAAE,OAAO;gBACV,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAqB;QACtC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAU,EAAE,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC;IACvE,CAAC;CACF,CAAC"}
@@ -1,49 +0,0 @@
1
- import { Epsg, TileMatrixSet } from '@basemaps/geo';
2
- import { LogType } from '@basemaps/shared';
3
- import { ChunkSource } from '@chunkd/core';
4
- import { CogTiff } from '@cogeotiff/core';
5
- import { LimitFunction } from 'p-limit';
6
- import { Cutline } from './cutline.js';
7
- import { CogBuilderMetadata, SourceMetadata } from './types.js';
8
- export declare const InvalidProjectionCode = 32767;
9
- /**
10
- * Attempt to guess the projection based off the WKT
11
- *
12
- * @example
13
- *
14
- * "PCS Name = NZGD_2000_New_Zealand_Transverse_Mercator|GCS Name = GCS_NZGD_2000|Ellipsoid = GRS_1980|Primem = Greenwich||"
15
- * "NZGD2000_New_Zealand_Transverse_Mercator_2000|GCS Name = GCS_NZGD_2000|Primem = Greenwich||"
16
- *
17
- * @param wkt
18
- */
19
- export declare function guessProjection(wkt: string | null): Epsg | null;
20
- export declare class CogBuilder {
21
- q: LimitFunction;
22
- logger: LogType;
23
- targetTms: TileMatrixSet;
24
- srcProj?: Epsg;
25
- wktPreviousGuesses: Set<string>;
26
- /**
27
- * @param concurrency number of requests to run at a time
28
- */
29
- constructor(targetTms: TileMatrixSet, concurrency: number, logger: LogType, srcProj?: Epsg);
30
- /**
31
- * Get the source bounds a collection of tiffs
32
- * @param tiffs
33
- */
34
- bounds(sources: ChunkSource[]): Promise<SourceMetadata>;
35
- findProjection(tiff: CogTiff): Epsg;
36
- /**
37
- * Get the nodata value stored in the source tiff
38
- * @param tiff
39
- * @param logger
40
- */
41
- findNoData(tiff: CogTiff): number | null;
42
- /**
43
- * Generate a list of tiles that need to be generated to cover the source tiffs
44
- * @param tiffs list of source imagery to be converted
45
- * @returns List of Tile bounds covering tiffs
46
- */
47
- build(tiffs: ChunkSource[], cutline: Cutline, alignedLevel?: number): Promise<CogBuilderMetadata>;
48
- }
49
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/cog/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAc,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAoC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAuB,MAAM,iBAAiB,CAAC;AAC/D,OAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAO/D;AAED,qBAAa,UAAU;IACrB,CAAC,EAAE,aAAa,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,CAAC;IAGf,kBAAkB,cAAqB;IAEvC;;OAEG;gBACS,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI;IAO1F;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAoF7D,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA6BnC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAaxC;;;;OAIG;IACG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAaxG"}
@@ -1,177 +0,0 @@
1
- import { Bounds, Epsg, Projection } from '@basemaps/geo';
2
- import { CompositeError, LoggerFatalError } from '@basemaps/shared';
3
- import { CogTiff, TiffTag, TiffTagGeo } from '@cogeotiff/core';
4
- import pLimit from 'p-limit';
5
- import { basename } from 'path';
6
- import { ProjectionLoader } from './projection.loader.js';
7
- export const InvalidProjectionCode = 32767;
8
- /**
9
- * Attempt to guess the projection based off the WKT
10
- *
11
- * @example
12
- *
13
- * "PCS Name = NZGD_2000_New_Zealand_Transverse_Mercator|GCS Name = GCS_NZGD_2000|Ellipsoid = GRS_1980|Primem = Greenwich||"
14
- * "NZGD2000_New_Zealand_Transverse_Mercator_2000|GCS Name = GCS_NZGD_2000|Primem = Greenwich||"
15
- *
16
- * @param wkt
17
- */
18
- export function guessProjection(wkt) {
19
- if (wkt == null)
20
- return null;
21
- const searchWkt = wkt.replace(/_/g, ' ');
22
- if (searchWkt.includes('New Zealand Transverse Mercator'))
23
- return Epsg.Nztm2000;
24
- if (searchWkt.includes('Chatham Islands Transverse Mercator 2000'))
25
- return Epsg.Citm2000;
26
- return null;
27
- }
28
- export class CogBuilder {
29
- /**
30
- * @param concurrency number of requests to run at a time
31
- */
32
- constructor(targetTms, concurrency, logger, srcProj) {
33
- // Prevent guessing spamming the logs
34
- this.wktPreviousGuesses = new Set();
35
- this.targetTms = targetTms;
36
- this.logger = logger;
37
- this.q = pLimit(concurrency);
38
- this.srcProj = srcProj;
39
- }
40
- /**
41
- * Get the source bounds a collection of tiffs
42
- * @param tiffs
43
- */
44
- async bounds(sources) {
45
- let resX = -1;
46
- let bands = -1;
47
- let projection = this.srcProj;
48
- let nodata;
49
- let count = 0;
50
- const queue = sources.map((source) => {
51
- return this.q(async () => {
52
- count++;
53
- if (count % 50 === 0)
54
- this.logger.info({ count, total: sources.length }, 'BoundsProgress');
55
- this.logger.trace({ source: source.uri }, 'Tiff:Load');
56
- const tiff = new CogTiff(source);
57
- await tiff.init(true);
58
- const image = tiff.getImage(0);
59
- if (resX === -1 || image.resolution[0] < resX)
60
- resX = image.resolution[0];
61
- // Check number of bands to determine alpha layer
62
- const tiffBandCount = image.value(TiffTag.BitsPerSample);
63
- if (tiffBandCount != null && tiffBandCount.length > bands) {
64
- if (bands > -1) {
65
- this.logger.error({
66
- firstImage: basename(sources[0].uri),
67
- bands,
68
- currentImage: basename(source.uri),
69
- currentBands: tiffBandCount,
70
- }, 'Multiple Bands');
71
- }
72
- bands = tiffBandCount.length;
73
- }
74
- const output = { ...Bounds.fromBbox(image.bbox).toJson(), name: source.uri };
75
- if (source.close)
76
- await source.close();
77
- const imageProjection = this.findProjection(tiff);
78
- if (imageProjection != null && (projection === null || projection === void 0 ? void 0 : projection.code) !== imageProjection.code) {
79
- if (projection != null) {
80
- this.logger.error({
81
- firstImage: basename(sources[0].uri),
82
- projection,
83
- currentImage: basename(source.uri),
84
- currentProjection: imageProjection,
85
- }, 'Multiple projections');
86
- throw new Error('Multiple projections');
87
- }
88
- projection = imageProjection;
89
- }
90
- const tiffNoData = this.findNoData(tiff);
91
- if (tiffNoData != null && tiffNoData !== nodata) {
92
- if (nodata != null)
93
- throw new Error('Multiple No Data values');
94
- nodata = tiffNoData;
95
- }
96
- return output;
97
- }).catch((e) => {
98
- throw new CompositeError('Failed to process image: ' + source.uri, 500, e);
99
- });
100
- });
101
- const bounds = await Promise.all(queue);
102
- if (projection == null)
103
- throw new Error('No projection detected');
104
- if (resX === -1)
105
- throw new Error('No resolution detected');
106
- if (bands === -1)
107
- throw new Error('No image bands detected');
108
- return {
109
- projection: projection.code,
110
- nodata,
111
- bands,
112
- bounds,
113
- pixelScale: resX,
114
- resZoom: Projection.getTiffResZoom(this.targetTms, resX),
115
- };
116
- }
117
- findProjection(tiff) {
118
- var _a;
119
- const image = tiff.getImage(0);
120
- const projection = image.valueGeo(TiffTagGeo.ProjectedCSTypeGeoKey);
121
- if (projection != null && projection !== InvalidProjectionCode) {
122
- return (_a = Epsg.tryGet(projection)) !== null && _a !== void 0 ? _a : new Epsg(projection);
123
- }
124
- const imgWkt = image.value(TiffTag.GeoAsciiParams);
125
- const epsg = guessProjection(imgWkt);
126
- if (imgWkt != null && epsg != null) {
127
- if (!this.wktPreviousGuesses.has(imgWkt)) {
128
- this.logger.trace({ tiff: tiff.source.uri, imgWkt, projection }, 'GuessingProjection from GeoAsciiParams');
129
- }
130
- this.wktPreviousGuesses.add(imgWkt);
131
- return epsg;
132
- }
133
- if (this.srcProj != null) {
134
- this.logger.warn({ tiff: tiff.source.uri, projection, imgWkt, defaultProjection: this.srcProj }, 'Default findProjection');
135
- return this.srcProj;
136
- }
137
- this.logger.error({ tiff: tiff.source.uri, projection, imgWkt }, 'Failed findProjection');
138
- throw new Error('Failed to find projection');
139
- }
140
- /**
141
- * Get the nodata value stored in the source tiff
142
- * @param tiff
143
- * @param logger
144
- */
145
- findNoData(tiff) {
146
- const noData = tiff.getImage(0).value(TiffTag.GDAL_NODATA);
147
- if (noData == null)
148
- return null;
149
- const noDataNum = parseInt(noData);
150
- if (isNaN(noDataNum) || noDataNum < 0 || noDataNum > 256) {
151
- throw new LoggerFatalError({ tiff: tiff.source.uri, noData }, 'Failed converting GDAL_NODATA, defaulting to 255');
152
- }
153
- return noDataNum;
154
- }
155
- /**
156
- * Generate a list of tiles that need to be generated to cover the source tiffs
157
- * @param tiffs list of source imagery to be converted
158
- * @returns List of Tile bounds covering tiffs
159
- */
160
- async build(tiffs, cutline, alignedLevel) {
161
- const metadata = await this.bounds(tiffs);
162
- // Ensure that the projection definition is loaded
163
- await ProjectionLoader.load(metadata.projection);
164
- const files = cutline.optimizeCovering(metadata, alignedLevel);
165
- let union = null;
166
- for (const bounds of files) {
167
- if (union == null)
168
- union = Bounds.fromJson(bounds);
169
- else
170
- union = Bounds.fromJson(bounds).union(union);
171
- }
172
- if (union == null)
173
- throw new Error('Bug! union can not be null');
174
- return { ...metadata, files, targetBounds: union.toJson() };
175
- }
176
- }
177
- //# sourceMappingURL=builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/cog/builder.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { LogType } from '@basemaps/shared';
2
- import { GdalCommand } from '../gdal/gdal.command.js';
3
- import { CogJob } from './types.js';
4
- /**
5
- * Create a onProgress logger
6
- *
7
- * @param keys additional keys to log
8
- * @param logger base logger to use
9
- */
10
- export declare function onProgress(gdal: GdalCommand, keys: Record<string, any>, logger: LogType): void;
11
- /**
12
- * Build a COG for a given collection of tiffs
13
- *
14
- * @param job the job to process
15
- * @param name tile name of cog to generate
16
- * @param vrtLocation Location of the source VRT file
17
- * @param outputTiffPath Path to where the output tiff will be stored
18
- * @param logger Logger to use
19
- * @param execute Whether to actually execute the transformation,
20
- */
21
- export declare function buildCogForName(job: CogJob, name: string, vrtLocation: string, outputTiffPath: string, logger: LogType, execute?: boolean): Promise<void>;
22
- //# sourceMappingURL=cog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.d.ts","sourceRoot":"","sources":["../../src/cog/cog.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAQ9F;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,UAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA2Df"}
package/build/cog/cog.js DELETED
@@ -1,72 +0,0 @@
1
- import { Bounds, Projection, TileMatrixSet } from '@basemaps/geo';
2
- import { Env, isConfigS3Role } from '@basemaps/shared';
3
- import { GdalCogBuilder } from '../gdal/gdal.cog.js';
4
- import { GdalProgressParser } from '../gdal/gdal.progress.js';
5
- import { AwsCredentials } from '@chunkd/source-aws-v2';
6
- /**
7
- * Create a onProgress logger
8
- *
9
- * @param keys additional keys to log
10
- * @param logger base logger to use
11
- */
12
- export function onProgress(gdal, keys, logger) {
13
- let lastTime = Date.now();
14
- gdal.parser = new GdalProgressParser();
15
- gdal.parser.on('progress', (p) => {
16
- logger.trace({ ...keys, progress: parseFloat(p.toFixed(2)), progressTime: Date.now() - lastTime }, 'Progress');
17
- lastTime = Date.now();
18
- });
19
- }
20
- /**
21
- * Build a COG for a given collection of tiffs
22
- *
23
- * @param job the job to process
24
- * @param name tile name of cog to generate
25
- * @param vrtLocation Location of the source VRT file
26
- * @param outputTiffPath Path to where the output tiff will be stored
27
- * @param logger Logger to use
28
- * @param execute Whether to actually execute the transformation,
29
- */
30
- export async function buildCogForName(job, name, vrtLocation, outputTiffPath, logger, execute = false) {
31
- const startTime = Date.now();
32
- const { targetZoom, tileMatrix } = job;
33
- const nb = job.output.files.find((nb) => nb.name === name);
34
- if (nb == null) {
35
- throw new Error("Can't find COG named " + name);
36
- }
37
- const bounds = Bounds.fromJson(nb);
38
- const tile = TileMatrixSet.nameToTile(name);
39
- const blockSize = tileMatrix.tileSize * 2; // FIXME is this blockFactor always 2
40
- const alignmentLevels = Projection.findAlignmentLevels(tileMatrix, tile, job.source.gsd);
41
- const cogBuild = new GdalCogBuilder(vrtLocation, outputTiffPath, {
42
- bbox: [bounds.x, bounds.bottom, bounds.right, bounds.y],
43
- tileMatrix,
44
- blockSize,
45
- targetRes: job.output.gsd,
46
- alignmentLevels,
47
- resampling: job.output.resampling,
48
- quality: job.output.quality,
49
- });
50
- onProgress(cogBuild.gdal, { name, target: 'tiff' }, logger);
51
- logger.info({
52
- imageSize: Projection.getImagePixelWidth(tileMatrix, tile, targetZoom),
53
- name,
54
- tile,
55
- alignmentLevels,
56
- }, 'CreateCog');
57
- const sourceLocation = job.source.location;
58
- // If required assume role
59
- if (isConfigS3Role(sourceLocation)) {
60
- const credentials = AwsCredentials.role(sourceLocation.roleArn, sourceLocation.externalId, Env.getNumber(Env.AwsRoleDurationHours, 8) * 60 * 60);
61
- cogBuild.gdal.setCredentials(credentials);
62
- }
63
- if (cogBuild.gdal.mount != null) {
64
- for (const file of job.source.files)
65
- cogBuild.gdal.mount(file.name);
66
- }
67
- if (execute) {
68
- await cogBuild.convert(logger.child({ name }));
69
- logger.info({ name, duration: Date.now() - startTime }, 'CogCreated');
70
- }
71
- }
72
- //# sourceMappingURL=cog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.js","sourceRoot":"","sources":["../../src/cog/cog.ts"],"names":[],"mappings":"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"}
@@ -1,106 +0,0 @@
1
- import { Epsg, TileMatrixSet } from '@basemaps/geo';
2
- import { FileConfig, FileConfigPath } from '@basemaps/shared';
3
- import { MultiPolygon } from '@linzjs/geojson';
4
- import { GdalCogBuilderResampling } from '../gdal/gdal.config.js';
5
- import { CogBuilderMetadata, CogJob, CogJobJson, CogOutputProperties, CogSourceProperties, FeatureCollectionWithCrs } from './types.js';
6
- export declare const MaxConcurrencyDefault = 50;
7
- export interface JobCreationContext {
8
- /** Custom Imagery Name if defined */
9
- imageryName?: string;
10
- /** Source config */
11
- sourceLocation: FileConfig | FileConfigPath;
12
- /** Output config */
13
- outputLocation: FileConfig;
14
- /** Should the imagery be cut to a cutline */
15
- cutline?: {
16
- href: string;
17
- blend: number;
18
- };
19
- tileMatrix: TileMatrixSet;
20
- override?: {
21
- /** Override job id */
22
- id?: string;
23
- /**
24
- * Image quality
25
- * @default GdalCogBuilderDefaults.quality
26
- */
27
- quality?: number;
28
- /**
29
- * Number of threads to use for fetches
30
- * @default MaxConcurrencyDefault
31
- */
32
- concurrency?: number;
33
- /**
34
- * Override the source projection
35
- */
36
- projection?: Epsg;
37
- /**
38
- * Override Default aligned zoom level
39
- */
40
- alignedLevel?: number;
41
- /**
42
- * Resampling method
43
- * @Default GdalCogBuilderDefaults.resampling
44
- */
45
- resampling?: GdalCogBuilderResampling;
46
- };
47
- /**
48
- * Should this job be submitted to batch now?
49
- * @default false
50
- */
51
- batch: boolean;
52
- /** Should this job ignore source coverage and just produce one big COG for EPSG extent */
53
- oneCogCovering: boolean;
54
- }
55
- export interface CogJobCreateParams {
56
- /** unique id for imagery set */
57
- id: string;
58
- /** name of imagery set */
59
- imageryName: string;
60
- /** information about the source */
61
- metadata: CogBuilderMetadata;
62
- /** information about the output */
63
- ctx: JobCreationContext;
64
- /** the polygon to use to clip the source imagery */
65
- cutlinePoly: MultiPolygon;
66
- /** do we need an alpha band added */
67
- addAlpha: boolean;
68
- }
69
- /**
70
- * Information needed to create cogs
71
- */
72
- export declare class CogStacJob implements CogJob {
73
- json: CogJobJson;
74
- private cacheTargetZoom?;
75
- /**
76
- * Load the job.json
77
-
78
- * @param jobpath where to load the job.json from
79
- */
80
- static load(jobpath: string): Promise<CogStacJob>;
81
- /**
82
- * Create job.json, collection.json, source.geojson, covering.geojson, cutlint.geojson.gz and
83
- * stac descriptions of the target COGs
84
- */
85
- static create({ id, imageryName, metadata, ctx, cutlinePoly, addAlpha, }: CogJobCreateParams): Promise<CogStacJob>;
86
- /**
87
- * build a FeatureCollection from MultiPolygon
88
- */
89
- static toGeoJson(poly: MultiPolygon, epsg: Epsg): FeatureCollectionWithCrs;
90
- constructor(json: CogJobJson);
91
- get id(): string;
92
- get name(): string;
93
- get title(): string;
94
- get description(): string | undefined;
95
- get source(): CogSourceProperties;
96
- get output(): CogOutputProperties;
97
- get tileMatrix(): TileMatrixSet;
98
- get targetZoom(): number;
99
- /**
100
- * Get a nicely formatted folder path based on the job
101
- *
102
- * @param key optional file key inside of the job folder
103
- */
104
- getJobPath(key?: string): string;
105
- }
106
- //# sourceMappingURL=cog.stac.job.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.stac.job.d.ts","sourceRoot":"","sources":["../../src/cog/cog.stac.job.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EAMJ,aAAa,EAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,UAAU,EACV,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAA8C,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAA0B,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAG1F,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,cAAc,EAAE,UAAU,GAAG,cAAc,CAAC;IAE5C,oBAAoB;IACpB,cAAc,EAAE,UAAU,CAAC;IAE3B,6CAA6C;IAC7C,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,UAAU,EAAE,aAAa,CAAC;IAE1B,QAAQ,CAAC,EAAE;QACT,sBAAsB;QACtB,EAAE,CAAC,EAAE,MAAM,CAAC;QAEZ;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB;;WAEG;QACH,UAAU,CAAC,EAAE,IAAI,CAAC;QAElB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;KACvC,CAAC;IAEF;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf,0FAA0F;IAC1F,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,mCAAmC;IACnC,GAAG,EAAE,kBAAkB,CAAC;IACxB,oDAAoD;IACpD,WAAW,EAAE,YAAY,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,MAAM;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,eAAe,CAAC,CAGtB;IAEF;;;;SAIK;WACQ,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMvD;;;OAGG;WACU,MAAM,CAAC,EAClB,EAAE,EACF,WAAW,EACX,QAAQ,EACR,GAAG,EACH,WAAW,EACX,QAAQ,GACT,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkM3C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,wBAAwB;gBAS9D,IAAI,EAAE,UAAU;IAI5B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IAED,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IAED,IAAI,UAAU,IAAI,aAAa,CAO9B;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED;;;;OAIG;IACH,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;CAOjC"}