@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,257 +0,0 @@
1
- import { Bounds, Projection, Stac, TileMatrixSets, } from '@basemaps/geo';
2
- import { CompositeError, extractYearRangeFromName, fsa, titleizeImageryName, } from '@basemaps/shared';
3
- import { CliInfo } from '@basemaps/shared/build/cli/info.js';
4
- import { toFeatureCollection, toFeatureMultiPolygon } from '@linzjs/geojson';
5
- import { GdalCogBuilderDefaults } from '../gdal/gdal.config.js';
6
- import { ProjectionLoader } from './projection.loader.js';
7
- import { CogStacItemExtensions, CogStacKeywords } from './stac.js';
8
- export const MaxConcurrencyDefault = 50;
9
- /**
10
- * Information needed to create cogs
11
- */
12
- export class CogStacJob {
13
- /**
14
- * Load the job.json
15
-
16
- * @param jobpath where to load the job.json from
17
- */
18
- static async load(jobpath) {
19
- const job = new CogStacJob(await fsa.readJson(jobpath));
20
- await ProjectionLoader.load(job.source.epsg);
21
- return job;
22
- }
23
- /**
24
- * Create job.json, collection.json, source.geojson, covering.geojson, cutlint.geojson.gz and
25
- * stac descriptions of the target COGs
26
- */
27
- static async create({ id, imageryName, metadata, ctx, cutlinePoly, addAlpha, }) {
28
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
29
- let description;
30
- const providers = [];
31
- const links = [
32
- {
33
- href: fsa.join(ctx.outputLocation.path, 'collection.json'),
34
- type: 'application/json',
35
- rel: 'self',
36
- },
37
- {
38
- href: 'job.json',
39
- type: 'application/json',
40
- rel: 'linz.basemaps.job',
41
- },
42
- ];
43
- let sourceStac = {};
44
- const interval = [];
45
- try {
46
- const sourceCollectionPath = fsa.join(ctx.sourceLocation.path, 'collection.json');
47
- sourceStac = await fsa.readJson(sourceCollectionPath);
48
- description = sourceStac.description;
49
- interval.push(...((_c = (_b = (_a = sourceStac.extent) === null || _a === void 0 ? void 0 : _a.temporal) === null || _b === void 0 ? void 0 : _b.interval) !== null && _c !== void 0 ? _c : []));
50
- links.push({ href: sourceCollectionPath, rel: 'sourceImagery', type: 'application/json' });
51
- if (sourceStac.providers != null) {
52
- for (const p of sourceStac.providers) {
53
- if (p.roles.indexOf('host') === -1) {
54
- if (p.url === 'unknown') {
55
- // LINZ LDS has put unknown in some urls
56
- p.url = undefined;
57
- }
58
- providers.push(p);
59
- }
60
- }
61
- }
62
- }
63
- catch (err) {
64
- if (!CompositeError.isCompositeError(err) || err.code !== 404) {
65
- throw err;
66
- }
67
- }
68
- const keywords = (_d = sourceStac.keywords) !== null && _d !== void 0 ? _d : CogStacKeywords.slice();
69
- const license = (_e = sourceStac.license) !== null && _e !== void 0 ? _e : Stac.License;
70
- const title = (_f = sourceStac.title) !== null && _f !== void 0 ? _f : titleizeImageryName(imageryName);
71
- if (description == null) {
72
- description = 'No description';
73
- }
74
- await ProjectionLoader.load(metadata.projection);
75
- const job = new CogStacJob({
76
- id,
77
- name: imageryName,
78
- title,
79
- description,
80
- source: {
81
- gsd: metadata.pixelScale,
82
- epsg: metadata.projection,
83
- files: metadata.bounds,
84
- location: ctx.sourceLocation,
85
- },
86
- output: {
87
- gsd: ctx.tileMatrix.pixelScale(metadata.resZoom),
88
- tileMatrix: ctx.tileMatrix.identifier,
89
- epsg: ctx.tileMatrix.projection.code,
90
- files: metadata.files,
91
- location: ctx.outputLocation,
92
- resampling: (_h = (_g = ctx.override) === null || _g === void 0 ? void 0 : _g.resampling) !== null && _h !== void 0 ? _h : GdalCogBuilderDefaults.resampling,
93
- quality: (_k = (_j = ctx.override) === null || _j === void 0 ? void 0 : _j.quality) !== null && _k !== void 0 ? _k : GdalCogBuilderDefaults.quality,
94
- cutline: ctx.cutline,
95
- addAlpha,
96
- nodata: metadata.nodata,
97
- bounds: metadata.targetBounds,
98
- oneCogCovering: ctx.oneCogCovering,
99
- },
100
- });
101
- const nowStr = new Date().toISOString();
102
- const sourceProj = Projection.get(job.source.epsg);
103
- const bbox = [
104
- sourceProj.boundsToWgs84BoundingBox(metadata.bounds.map((a) => Bounds.fromJson(a)).reduce((sum, a) => sum.union(a))),
105
- ];
106
- if (interval.length === 0) {
107
- const years = extractYearRangeFromName(imageryName);
108
- if (years == null)
109
- throw new Error('Missing date in imagery name: ' + imageryName);
110
- interval.push(years.map((y) => `${y}-01-01T00:00:00Z`));
111
- }
112
- if (ctx.cutline) {
113
- links.push({ href: 'cutline.geojson.gz', type: 'application/geo+json+gzip', rel: 'linz.basemaps.cutline' });
114
- }
115
- links.push({ href: 'covering.geojson', type: 'application/geo+json', rel: 'linz.basemaps.covering' });
116
- links.push({ href: 'source.geojson', type: 'application/geo+json', rel: 'linz.basemaps.source' });
117
- const temporal = { interval };
118
- const jobFile = job.getJobPath(`job.json`);
119
- const stac = {
120
- id,
121
- title,
122
- description,
123
- stac_version: Stac.Version,
124
- stac_extensions: [Stac.BaseMapsExtension],
125
- extent: {
126
- spatial: { bbox },
127
- temporal,
128
- },
129
- license,
130
- keywords,
131
- providers,
132
- summaries: {
133
- gsd: [metadata.pixelScale],
134
- 'proj:epsg': [ctx.tileMatrix.projection.code],
135
- 'linz:output': [
136
- {
137
- resampling: (_m = (_l = ctx.override) === null || _l === void 0 ? void 0 : _l.resampling) !== null && _m !== void 0 ? _m : GdalCogBuilderDefaults.resampling,
138
- quality: (_p = (_o = ctx.override) === null || _o === void 0 ? void 0 : _o.quality) !== null && _p !== void 0 ? _p : GdalCogBuilderDefaults.quality,
139
- cutlineBlend: (_q = ctx.cutline) === null || _q === void 0 ? void 0 : _q.blend,
140
- addAlpha,
141
- nodata: metadata.nodata,
142
- },
143
- ],
144
- 'linz:generated': [
145
- {
146
- ...CliInfo,
147
- datetime: nowStr,
148
- },
149
- ],
150
- },
151
- links,
152
- };
153
- await fsa.writeJson(jobFile, job.json);
154
- const covering = Projection.get(job.tileMatrix).toGeoJson(metadata.files);
155
- const roles = ['data'];
156
- const collectionLink = { href: 'collection.json', rel: 'collection' };
157
- for (const f of covering.features) {
158
- const { name } = f.properties;
159
- const href = name + '.json';
160
- links.push({ href, type: 'application/geo+json', rel: 'item' });
161
- const item = {
162
- ...f,
163
- id: job.id + '/' + name,
164
- collection: job.id,
165
- stac_version: Stac.Version,
166
- stac_extensions: CogStacItemExtensions,
167
- properties: {
168
- ...f.properties,
169
- datetime: nowStr,
170
- gsd: job.output.gsd,
171
- 'proj:epsg': job.tileMatrix.projection.code,
172
- },
173
- links: [{ href: job.getJobPath(href), rel: 'self' }, collectionLink],
174
- assets: {
175
- cog: {
176
- href: name + '.tiff',
177
- type: 'image/tiff; application=geotiff; profile=cloud-optimized',
178
- roles,
179
- },
180
- },
181
- };
182
- await fsa.writeJson(job.getJobPath(href), item);
183
- }
184
- if (ctx.cutline != null) {
185
- const geoJsonCutlineOutput = job.getJobPath(`cutline.geojson.gz`);
186
- await fsa.writeJson(geoJsonCutlineOutput, this.toGeoJson(cutlinePoly, ctx.tileMatrix.projection));
187
- }
188
- const geoJsonSourceOutput = job.getJobPath(`source.geojson`);
189
- await fsa.writeJson(geoJsonSourceOutput, Projection.get(job.source.epsg).toGeoJson(metadata.bounds));
190
- const geoJsonCoveringOutput = job.getJobPath(`covering.geojson`);
191
- await fsa.writeJson(geoJsonCoveringOutput, covering);
192
- await fsa.writeJson(job.getJobPath(`collection.json`), stac);
193
- return job;
194
- }
195
- /**
196
- * build a FeatureCollection from MultiPolygon
197
- */
198
- static toGeoJson(poly, epsg) {
199
- const feature = toFeatureCollection([toFeatureMultiPolygon(poly)]);
200
- feature.crs = {
201
- type: 'name',
202
- properties: { name: epsg.toUrn() },
203
- };
204
- return feature;
205
- }
206
- constructor(json) {
207
- this.json = json;
208
- }
209
- get id() {
210
- return this.json.id;
211
- }
212
- get name() {
213
- return this.json.name;
214
- }
215
- get title() {
216
- return this.json.title;
217
- }
218
- get description() {
219
- return this.json.description;
220
- }
221
- get source() {
222
- return this.json.source;
223
- }
224
- get output() {
225
- return this.json.output;
226
- }
227
- get tileMatrix() {
228
- if (this.json.output.tileMatrix) {
229
- const tileMatrix = TileMatrixSets.find(this.json.output.tileMatrix);
230
- if (tileMatrix == null)
231
- throw new Error(`Failed to find TileMatrixSet "${this.json.output.tileMatrix}"`);
232
- return tileMatrix;
233
- }
234
- return TileMatrixSets.get(this.json.output.epsg);
235
- }
236
- get targetZoom() {
237
- var _a;
238
- const { gsd } = this.source;
239
- if (((_a = this.cacheTargetZoom) === null || _a === void 0 ? void 0 : _a.gsd) !== gsd) {
240
- this.cacheTargetZoom = { gsd, zoom: Projection.getTiffResZoom(this.tileMatrix, gsd) };
241
- }
242
- return this.cacheTargetZoom.zoom;
243
- }
244
- /**
245
- * Get a nicely formatted folder path based on the job
246
- *
247
- * @param key optional file key inside of the job folder
248
- */
249
- getJobPath(key) {
250
- const parts = [this.tileMatrix.projection.code, this.name, this.id];
251
- if (key != null) {
252
- parts.push(key);
253
- }
254
- return fsa.join(this.output.location.path, parts.join('/'));
255
- }
256
- }
257
- //# sourceMappingURL=cog.stac.job.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.stac.job.js","sourceRoot":"","sources":["../../src/cog/cog.stac.job.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { LogType } from '@basemaps/shared';
2
- import { Cutline } from './cutline.js';
3
- import { CogJob } from './types.js';
4
- export declare const CogVrt: {
5
- /**
6
- * Build a vrt file for a COG `name` that transforms the source imagery with a cutline
7
- *
8
- * @param tmpFolder temporary `vrt` and `cutline.geojson` will be written here
9
- * @param job
10
- * @param cutline Used to filter the source imagery
11
- * @param name COG tile to reduce vrt and cutline
12
- * @param logger
13
- *
14
- * @return the path to the vrt file
15
- */
16
- buildVrt(tmpFolder: string, job: CogJob, cutline: Cutline, name: string, logger: LogType): Promise<string | null>;
17
- };
18
- //# sourceMappingURL=cog.vrt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.vrt.d.ts","sourceRoot":"","sources":["../../src/cog/cog.vrt.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,OAAO,EAAa,MAAM,kBAAkB,CAAC;AAIhF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAgEpC,eAAO,MAAM,MAAM;IACjB;;;;;;;;;;OAUG;wBAEU,MAAM,OACZ,MAAM,WACF,OAAO,QACV,MAAM,UACJ,OAAO,GACd,QAAQ,MAAM,GAAG,IAAI,CAAC;CAuD1B,CAAC"}
@@ -1,102 +0,0 @@
1
- import { Epsg } from '@basemaps/geo';
2
- import { Env, fsa, isConfigS3Role, s3ToVsis3 } from '@basemaps/shared';
3
- import { Gdal } from '../gdal/gdal.js';
4
- import { onProgress } from './cog.js';
5
- import { AwsCredentials } from '@chunkd/source-aws-v2';
6
- /**
7
- * Build the VRT for the needed source imagery
8
- */
9
- async function buildPlainVrt(job, sourceFiles, vrtPath, gdalCommand, logger) {
10
- const buildOpts = ['-hidenodata', '-allow_projection_difference'];
11
- if (job.output.addAlpha) {
12
- buildOpts.push('-addalpha');
13
- }
14
- logger.debug({ buildOpts: buildOpts.join(' ') }, 'gdalbuildvrt');
15
- await gdalCommand.run('gdalbuildvrt', [...buildOpts, vrtPath, ...sourceFiles], logger);
16
- }
17
- /**
18
- * Warp the source vrt to target projection using an optional cutline
19
- */
20
- async function buildWarpVrt(job, sourceVrtPath, gdalCommand, cogVrtPath, tr, logger, cutlineTarget) {
21
- const warpOpts = [
22
- '-of',
23
- 'VRT',
24
- '-multi',
25
- '-wo',
26
- 'NUM_THREADS=ALL_CPUS',
27
- '-s_srs',
28
- Epsg.get(job.source.epsg).toEpsgString(),
29
- '-t_srs',
30
- job.tileMatrix.projection.toEpsgString(),
31
- '-tr',
32
- tr,
33
- tr,
34
- '-tap',
35
- ];
36
- if (job.output.cutline != null) {
37
- warpOpts.push('-cutline', cutlineTarget);
38
- if (job.output.cutline.blend !== 0)
39
- warpOpts.push('-cblend', String(job.output.cutline.blend));
40
- }
41
- if (job.output.nodata != null) {
42
- warpOpts.push('-srcnodata', String(job.output.nodata), '-dstnodata', String(job.output.nodata));
43
- }
44
- if (job.output.resampling) {
45
- warpOpts.push('-r', job.output.resampling.warp);
46
- }
47
- logger.debug({ warpOpts: warpOpts.join(' ') }, 'gdalwarp');
48
- await gdalCommand.run('gdalwarp', [...warpOpts, cogVrtPath, sourceVrtPath], logger);
49
- }
50
- export const CogVrt = {
51
- /**
52
- * Build a vrt file for a COG `name` that transforms the source imagery with a cutline
53
- *
54
- * @param tmpFolder temporary `vrt` and `cutline.geojson` will be written here
55
- * @param job
56
- * @param cutline Used to filter the source imagery
57
- * @param name COG tile to reduce vrt and cutline
58
- * @param logger
59
- *
60
- * @return the path to the vrt file
61
- */
62
- async buildVrt(tmpFolder, job, cutline, name, logger) {
63
- logger.info({ name }, 'buildCogVrt');
64
- const sourceFiles = cutline.filterSourcesForName(name, job).map(s3ToVsis3);
65
- if (sourceFiles.length === 0) {
66
- return null;
67
- }
68
- const sourceVrtPath = fsa.join(tmpFolder, `source.vrt`);
69
- const cogVrtPath = fsa.join(tmpFolder, `cog.vrt`);
70
- let cutlineTarget = '';
71
- if (cutline.clipPoly.length !== 0) {
72
- cutlineTarget = fsa.join(tmpFolder, 'cutline.geojson');
73
- await fsa.writeJson(cutlineTarget, cutline.toGeoJson());
74
- }
75
- else {
76
- job.output.cutline = undefined;
77
- }
78
- logger.info({
79
- inputTotal: job.source.files.length,
80
- outputTotal: sourceFiles.length,
81
- cutlinePolygons: cutline.clipPoly.length,
82
- }, 'Tiff count');
83
- const gdalCommand = Gdal.create();
84
- const sourceLocation = job.source.location;
85
- // If required assume role
86
- if (isConfigS3Role(sourceLocation)) {
87
- const credentials = AwsCredentials.role(sourceLocation.roleArn, sourceLocation.externalId, Env.getNumber(Env.AwsRoleDurationHours, 8) * 60 * 60);
88
- gdalCommand.setCredentials(credentials);
89
- }
90
- if (gdalCommand.mount != null) {
91
- gdalCommand.mount(tmpFolder);
92
- for (const file of job.source.files)
93
- gdalCommand.mount(file.name);
94
- }
95
- const tr = job.output.gsd.toString();
96
- onProgress(gdalCommand, { target: `vrt.${job.tileMatrix.projection.code}` }, logger);
97
- await buildPlainVrt(job, sourceFiles, sourceVrtPath, gdalCommand, logger);
98
- await buildWarpVrt(job, cogVrtPath, gdalCommand, sourceVrtPath, tr, logger, cutlineTarget);
99
- return cogVrtPath;
100
- },
101
- };
102
- //# sourceMappingURL=cog.vrt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.vrt.js","sourceRoot":"","sources":["../../src/cog/cog.vrt.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /** Default Aligned levels between resolution zoom level and cog zoom level */
2
- export declare const AlignedLevel = 7;
3
- /** When a tile has at least this much covering merge it up to parent */
4
- export declare const CoveringFraction = 0.25;
5
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cog/constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
@@ -1,5 +0,0 @@
1
- /** Default Aligned levels between resolution zoom level and cog zoom level */
2
- export const AlignedLevel = 7;
3
- /** When a tile has at least this much covering merge it up to parent */
4
- export const CoveringFraction = 0.25;
5
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cog/constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
@@ -1,75 +0,0 @@
1
- import { Bounds, NamedBounds, TileMatrixSet } from '@basemaps/geo';
2
- import { MultiPolygon } from '@linzjs/geojson';
3
- import { FeatureCollection } from 'geojson';
4
- import { CogJob, FeatureCollectionWithCrs, SourceMetadata } from './types.js';
5
- export declare function polyContainsBounds(poly: MultiPolygon, bounds: Bounds): boolean;
6
- export declare class Cutline {
7
- /** The polygon to clip source imagery to */
8
- clipPoly: MultiPolygon;
9
- tileMatrix: TileMatrixSet;
10
- /** How much blending to apply at the clip line boundary */
11
- blend: number;
12
- /** the polygon outlining a area covered by the source imagery and clip polygon */
13
- srcPoly: MultiPolygon;
14
- /**
15
- * Create a Cutline instance from a `GeoJSON FeatureCollection`.
16
-
17
- * @param tileMatrix the tileMatrix the COGs will be created in.
18
-
19
- * @param clipPoly the optional cutline. The source imagery outline used by default. This
20
- * `FeatureCollection` is converted to one `MultiPolygon` with any holes removed and the
21
- * coordinates transposed from `Wgs84` to the target projection (unless already in target projection).
22
-
23
- * @param blend How much blending to consider when working out boundaries.
24
- */
25
- constructor(tileMatrix: TileMatrixSet, clipPoly?: FeatureCollection, blend?: number);
26
- /**
27
- * Load a geojson cutline from the file-system.
28
- *
29
- * @param path the path of the cutline to load. Can be `s3://` or local file path.
30
- */
31
- static loadCutline(path: string): Promise<FeatureCollection>;
32
- /**
33
- * For the given tile `name`, filter `job.source.files` and cutline polygons that are within bounds plus
34
- * padding
35
- *
36
- * @param name
37
- * @param job
38
- * @returns names of source files required to render Cog
39
- */
40
- filterSourcesForName(name: string, job: CogJob): string[];
41
- /**
42
- * Generate an optimized WebMercator tile cover for the supplied source images
43
- * @param sourceMetadata contains images bounds and projection info
44
- */
45
- optimizeCovering(sourceMetadata: SourceMetadata, alignedLevel?: number): NamedBounds[];
46
- /**
47
- * Convert JobCutline to geojson FeatureCollection
48
- */
49
- toGeoJson(clipPoly?: MultiPolygon): FeatureCollectionWithCrs;
50
- /**
51
- * Merge child nodes that have at least a covering fraction
52
- * @param tile the tile to descend
53
- * @param srcArea the area of interest
54
- * @param minZ Only produce tiles for zoom levels at least `minZ` and no sibling tiles
55
- * greater than `minZ + 4`
56
- * @param coveringFraction merge tiles that cover at least this fraction
57
- * @return the tiles and fraction covered of the tile by this srcArea
58
- */
59
- private makeTiles;
60
- /**
61
- * Find the polygon covering of source imagery and a (optional) clip cutline. Truncates the
62
- * cutline to match.
63
- *
64
- * @param sourceMetadata
65
- */
66
- private findCovering;
67
- /**
68
- * Pad the bounds to take in to consideration blending and 100 pixels of adjacent image data
69
- *
70
- * @param bounds
71
- * @param resZoom the imagery resolution target zoom level
72
- */
73
- private padBounds;
74
- }
75
- //# sourceMappingURL=cutline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cutline.d.ts","sourceRoot":"","sources":["../../src/cog/cutline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAQ,WAAW,EAAoB,aAAa,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAIL,YAAY,EAIb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgB9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAK9E;AAqBD,qBAAa,OAAO;IAClB,4CAA4C;IAC5C,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,aAAa,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IAEd,kFAAkF;IAClF,OAAO,EAAE,YAAY,CAAM;IAE3B;;;;;;;;;;SAUK;gBACO,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,SAAI;IAqB9E;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D;;;;;;;OAOG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAoCzD;;;OAGG;IACH,gBAAgB,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,GAAE,MAAqB,GAAG,WAAW,EAAE;IA8BpG;;OAEG;IACH,SAAS,CAAC,QAAQ,eAAgB,GAAG,wBAAwB;IAS7D;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IA0CjB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAqCpB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;CAOlB"}