@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.
- package/README.md +10 -108
- package/build/cli/__tests__/util.test.d.ts +0 -1
- package/build/cli/__tests__/util.test.js +11 -10
- package/build/cli/__tests__/util.test.js.map +1 -1
- package/build/cli/bin.d.ts +0 -1
- package/build/cli/config/action.bundle.assets.d.ts +5 -7
- package/build/cli/config/action.bundle.assets.js +34 -21
- package/build/cli/config/action.bundle.assets.js.map +1 -1
- package/build/cli/config/action.bundle.d.ts +1 -1
- package/build/cli/config/action.bundle.js +40 -12
- package/build/cli/config/action.bundle.js.map +1 -1
- package/build/cli/config/action.import.d.ts +4 -9
- package/build/cli/config/action.import.js +131 -110
- package/build/cli/config/action.import.js.map +1 -1
- package/build/cli/config/config.diff.d.ts +2 -2
- package/build/cli/config/config.diff.js +6 -4
- package/build/cli/config/config.diff.js.map +1 -1
- package/build/cli/config/config.update.d.ts +3 -5
- package/build/cli/config/config.update.js +42 -7
- package/build/cli/config/config.update.js.map +1 -1
- package/build/cli/folder.d.ts +0 -1
- package/build/cli/folder.js +1 -2
- package/build/cli/folder.js.map +1 -1
- package/build/cli/index.d.ts +0 -2
- package/build/cli/index.js +2 -17
- package/build/cli/index.js.map +1 -1
- package/build/cli/server/action.serve.d.ts +0 -1
- package/build/cli/server/action.serve.js +27 -4
- package/build/cli/server/action.serve.js.map +1 -1
- package/build/cli/util.d.ts +3 -8
- package/build/cli/util.js +48 -55
- package/build/cli/util.js.map +1 -1
- package/package.json +20 -24
- package/CHANGELOG.md +0 -1589
- package/build/cli/__tests__/util.test.d.ts.map +0 -1
- package/build/cli/base.cli.d.ts +0 -1
- package/build/cli/base.cli.d.ts.map +0 -1
- package/build/cli/base.cli.js +0 -2
- package/build/cli/base.cli.js.map +0 -1
- package/build/cli/bin.d.ts.map +0 -1
- package/build/cli/cogify/__tests__/batch.job.test.d.ts +0 -2
- package/build/cli/cogify/__tests__/batch.job.test.d.ts.map +0 -1
- package/build/cli/cogify/__tests__/batch.job.test.js +0 -92
- package/build/cli/cogify/__tests__/batch.job.test.js.map +0 -1
- package/build/cli/cogify/__tests__/semver.test.d.ts +0 -2
- package/build/cli/cogify/__tests__/semver.test.d.ts.map +0 -1
- package/build/cli/cogify/__tests__/semver.test.js +0 -62
- package/build/cli/cogify/__tests__/semver.test.js.map +0 -1
- package/build/cli/cogify/action.cog.d.ts +0 -20
- package/build/cli/cogify/action.cog.d.ts.map +0 -1
- package/build/cli/cogify/action.cog.js +0 -198
- package/build/cli/cogify/action.cog.js.map +0 -1
- package/build/cli/cogify/action.job.d.ts +0 -28
- package/build/cli/cogify/action.job.d.ts.map +0 -1
- package/build/cli/cogify/action.job.js +0 -176
- package/build/cli/cogify/action.job.js.map +0 -1
- package/build/cli/cogify/action.make.cog.d.ts +0 -23
- package/build/cli/cogify/action.make.cog.d.ts.map +0 -1
- package/build/cli/cogify/action.make.cog.js +0 -218
- package/build/cli/cogify/action.make.cog.js.map +0 -1
- package/build/cli/cogify/action.make.cog.pr.d.ts +0 -25
- package/build/cli/cogify/action.make.cog.pr.d.ts.map +0 -1
- package/build/cli/cogify/action.make.cog.pr.js +0 -96
- package/build/cli/cogify/action.make.cog.pr.js.map +0 -1
- package/build/cli/cogify/batch.job.d.ts +0 -40
- package/build/cli/cogify/batch.job.d.ts.map +0 -1
- package/build/cli/cogify/batch.job.js +0 -205
- package/build/cli/cogify/batch.job.js.map +0 -1
- package/build/cli/cogify/cutline.d.ts +0 -5
- package/build/cli/cogify/cutline.d.ts.map +0 -1
- package/build/cli/cogify/cutline.js +0 -33
- package/build/cli/cogify/cutline.js.map +0 -1
- package/build/cli/cogify/semver.util.d.ts +0 -24
- package/build/cli/cogify/semver.util.d.ts.map +0 -1
- package/build/cli/cogify/semver.util.js +0 -56
- package/build/cli/cogify/semver.util.js.map +0 -1
- package/build/cli/config/action.bundle.assets.d.ts.map +0 -1
- package/build/cli/config/action.bundle.d.ts.map +0 -1
- package/build/cli/config/action.cog.mapsheet.d.ts +0 -12
- package/build/cli/config/action.cog.mapsheet.d.ts.map +0 -1
- package/build/cli/config/action.cog.mapsheet.js +0 -107
- package/build/cli/config/action.cog.mapsheet.js.map +0 -1
- package/build/cli/config/action.imagery.config.d.ts +0 -11
- package/build/cli/config/action.imagery.config.d.ts.map +0 -1
- package/build/cli/config/action.imagery.config.js +0 -142
- package/build/cli/config/action.imagery.config.js.map +0 -1
- package/build/cli/config/action.import.d.ts.map +0 -1
- package/build/cli/config/config.diff.d.ts.map +0 -1
- package/build/cli/config/config.update.d.ts.map +0 -1
- package/build/cli/folder.d.ts.map +0 -1
- package/build/cli/github/github.d.ts +0 -49
- package/build/cli/github/github.d.ts.map +0 -1
- package/build/cli/github/github.js +0 -107
- package/build/cli/github/github.js.map +0 -1
- package/build/cli/github/make.cog.pr.d.ts +0 -42
- package/build/cli/github/make.cog.pr.d.ts.map +0 -1
- package/build/cli/github/make.cog.pr.js +0 -173
- package/build/cli/github/make.cog.pr.js.map +0 -1
- package/build/cli/index.d.ts.map +0 -1
- package/build/cli/overview/__test__/wmts.overview.test.d.ts +0 -2
- package/build/cli/overview/__test__/wmts.overview.test.d.ts.map +0 -1
- package/build/cli/overview/__test__/wmts.overview.test.js +0 -24
- package/build/cli/overview/__test__/wmts.overview.test.js.map +0 -1
- package/build/cli/overview/action.create.overview.d.ts +0 -17
- package/build/cli/overview/action.create.overview.d.ts.map +0 -1
- package/build/cli/overview/action.create.overview.js +0 -174
- package/build/cli/overview/action.create.overview.js.map +0 -1
- package/build/cli/overview/overview.wmts.d.ts +0 -3
- package/build/cli/overview/overview.wmts.d.ts.map +0 -1
- package/build/cli/overview/overview.wmts.js +0 -29
- package/build/cli/overview/overview.wmts.js.map +0 -1
- package/build/cli/overview/tile.generator.d.ts +0 -13
- package/build/cli/overview/tile.generator.d.ts.map +0 -1
- package/build/cli/overview/tile.generator.js +0 -86
- package/build/cli/overview/tile.generator.js.map +0 -1
- package/build/cli/overview/timer.d.ts +0 -14
- package/build/cli/overview/timer.d.ts.map +0 -1
- package/build/cli/overview/timer.js +0 -21
- package/build/cli/overview/timer.js.map +0 -1
- package/build/cli/server/action.serve.d.ts.map +0 -1
- package/build/cli/sprites/action.sprites.d.ts +0 -11
- package/build/cli/sprites/action.sprites.d.ts.map +0 -1
- package/build/cli/sprites/action.sprites.js +0 -42
- package/build/cli/sprites/action.sprites.js.map +0 -1
- package/build/cli/util.d.ts.map +0 -1
- package/build/cog/__tests__/builder.test.d.ts +0 -2
- package/build/cog/__tests__/builder.test.d.ts.map +0 -1
- package/build/cog/__tests__/builder.test.js +0 -81
- package/build/cog/__tests__/builder.test.js.map +0 -1
- package/build/cog/__tests__/cog.stac.job.test.d.ts +0 -2
- package/build/cog/__tests__/cog.stac.job.test.d.ts.map +0 -1
- package/build/cog/__tests__/cog.stac.job.test.js +0 -319
- package/build/cog/__tests__/cog.stac.job.test.js.map +0 -1
- package/build/cog/__tests__/cog.test.d.ts +0 -2
- package/build/cog/__tests__/cog.test.d.ts.map +0 -1
- package/build/cog/__tests__/cog.test.js +0 -91
- package/build/cog/__tests__/cog.test.js.map +0 -1
- package/build/cog/__tests__/cog.vrt.test.d.ts +0 -2
- package/build/cog/__tests__/cog.vrt.test.d.ts.map +0 -1
- package/build/cog/__tests__/cog.vrt.test.js +0 -229
- package/build/cog/__tests__/cog.vrt.test.js.map +0 -1
- package/build/cog/__tests__/cutline.test.d.ts +0 -2
- package/build/cog/__tests__/cutline.test.d.ts.map +0 -1
- package/build/cog/__tests__/cutline.test.js +0 -300
- package/build/cog/__tests__/cutline.test.js.map +0 -1
- package/build/cog/__tests__/projection.loader.test.d.ts +0 -2
- package/build/cog/__tests__/projection.loader.test.d.ts.map +0 -1
- package/build/cog/__tests__/projection.loader.test.js +0 -27
- package/build/cog/__tests__/projection.loader.test.js.map +0 -1
- package/build/cog/__tests__/source.tiff.testhelper.d.ts +0 -8
- package/build/cog/__tests__/source.tiff.testhelper.d.ts.map +0 -1
- package/build/cog/__tests__/source.tiff.testhelper.js +0 -41
- package/build/cog/__tests__/source.tiff.testhelper.js.map +0 -1
- package/build/cog/builder.d.ts +0 -49
- package/build/cog/builder.d.ts.map +0 -1
- package/build/cog/builder.js +0 -177
- package/build/cog/builder.js.map +0 -1
- package/build/cog/cog.d.ts +0 -22
- package/build/cog/cog.d.ts.map +0 -1
- package/build/cog/cog.js +0 -72
- package/build/cog/cog.js.map +0 -1
- package/build/cog/cog.stac.job.d.ts +0 -106
- package/build/cog/cog.stac.job.d.ts.map +0 -1
- package/build/cog/cog.stac.job.js +0 -257
- package/build/cog/cog.stac.job.js.map +0 -1
- package/build/cog/cog.vrt.d.ts +0 -18
- package/build/cog/cog.vrt.d.ts.map +0 -1
- package/build/cog/cog.vrt.js +0 -102
- package/build/cog/cog.vrt.js.map +0 -1
- package/build/cog/constants.d.ts +0 -5
- package/build/cog/constants.d.ts.map +0 -1
- package/build/cog/constants.js +0 -5
- package/build/cog/constants.js.map +0 -1
- package/build/cog/cutline.d.ts +0 -75
- package/build/cog/cutline.d.ts.map +0 -1
- package/build/cog/cutline.js +0 -250
- package/build/cog/cutline.js.map +0 -1
- package/build/cog/job.factory.d.ts +0 -10
- package/build/cog/job.factory.d.ts.map +0 -1
- package/build/cog/job.factory.js +0 -92
- package/build/cog/job.factory.js.map +0 -1
- package/build/cog/projection.loader.d.ts +0 -13
- package/build/cog/projection.loader.d.ts.map +0 -1
- package/build/cog/projection.loader.js +0 -27
- package/build/cog/projection.loader.js.map +0 -1
- package/build/cog/stac.d.ts +0 -32
- package/build/cog/stac.d.ts.map +0 -1
- package/build/cog/stac.js +0 -3
- package/build/cog/stac.js.map +0 -1
- package/build/cog/types.d.ts +0 -83
- package/build/cog/types.d.ts.map +0 -1
- package/build/cog/types.js +0 -2
- package/build/cog/types.js.map +0 -1
- package/build/gdal/__tests__/gdal.progress.test.d.ts +0 -2
- package/build/gdal/__tests__/gdal.progress.test.d.ts.map +0 -1
- package/build/gdal/__tests__/gdal.progress.test.js +0 -22
- package/build/gdal/__tests__/gdal.progress.test.js.map +0 -1
- package/build/gdal/__tests__/gdal.test.d.ts +0 -2
- package/build/gdal/__tests__/gdal.test.d.ts.map +0 -1
- package/build/gdal/__tests__/gdal.test.js +0 -52
- package/build/gdal/__tests__/gdal.test.js.map +0 -1
- package/build/gdal/gdal.cog.d.ts +0 -42
- package/build/gdal/gdal.cog.d.ts.map +0 -1
- package/build/gdal/gdal.cog.js +0 -108
- package/build/gdal/gdal.cog.js.map +0 -1
- package/build/gdal/gdal.command.d.ts +0 -44
- package/build/gdal/gdal.command.d.ts.map +0 -1
- package/build/gdal/gdal.command.js +0 -87
- package/build/gdal/gdal.command.js.map +0 -1
- package/build/gdal/gdal.config.d.ts +0 -51
- package/build/gdal/gdal.config.d.ts.map +0 -1
- package/build/gdal/gdal.config.js +0 -23
- package/build/gdal/gdal.config.js.map +0 -1
- package/build/gdal/gdal.d.ts +0 -19
- package/build/gdal/gdal.d.ts.map +0 -1
- package/build/gdal/gdal.docker.d.ts +0 -18
- package/build/gdal/gdal.docker.d.ts.map +0 -1
- package/build/gdal/gdal.docker.js +0 -82
- package/build/gdal/gdal.docker.js.map +0 -1
- package/build/gdal/gdal.js +0 -28
- package/build/gdal/gdal.js.map +0 -1
- package/build/gdal/gdal.local.d.ts +0 -10
- package/build/gdal/gdal.local.d.ts.map +0 -1
- package/build/gdal/gdal.local.js +0 -22
- package/build/gdal/gdal.local.js.map +0 -1
- package/build/gdal/gdal.progress.d.ts +0 -16
- package/build/gdal/gdal.progress.d.ts.map +0 -1
- package/build/gdal/gdal.progress.js +0 -50
- package/build/gdal/gdal.progress.js.map +0 -1
- package/build/index.d.ts +0 -6
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -6
- package/build/index.js.map +0 -1
package/build/cog/cutline.js
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { Bounds, Epsg, Projection, TileMatrixSet } from '@basemaps/geo';
|
|
2
|
-
import { compareName, fsa } from '@basemaps/shared';
|
|
3
|
-
import { clipMultipolygon, featuresToMultiPolygon, intersection, toFeatureCollection, toFeatureMultiPolygon, union, } from '@linzjs/geojson';
|
|
4
|
-
import { AlignedLevel, CoveringFraction } from './constants.js';
|
|
5
|
-
/** Padding to always apply to image boundies */
|
|
6
|
-
const PixelPadding = 200;
|
|
7
|
-
/** fraction to scale source imagery to avoid degenerate edges */
|
|
8
|
-
const SourceSmoothScale = 1 + 1e-8;
|
|
9
|
-
function findGeoJsonProjection(geojson) {
|
|
10
|
-
var _a, _b, _c, _d;
|
|
11
|
-
return (_d = Epsg.parse((_c = (_b = (_a = geojson === null || geojson === void 0 ? void 0 : geojson.crs) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '')) !== null && _d !== void 0 ? _d : Epsg.Wgs84;
|
|
12
|
-
}
|
|
13
|
-
function namedBounds(tms, tile) {
|
|
14
|
-
return { name: TileMatrixSet.tileToName(tile), ...tms.tileToSourceBounds(tile).toJson() };
|
|
15
|
-
}
|
|
16
|
-
export function polyContainsBounds(poly, bounds) {
|
|
17
|
-
const clipped = clipMultipolygon(poly, bounds.toBbox());
|
|
18
|
-
if (clipped.length !== 1 || clipped[0].length !== 1 || clipped[0][0].length !== 5)
|
|
19
|
-
return false;
|
|
20
|
-
return Bounds.fromMultiPolygon(clipped).containsBounds(bounds);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Filter out duplicate tiles
|
|
24
|
-
*/
|
|
25
|
-
function addNonDupes(list, addList) {
|
|
26
|
-
const len = list.length;
|
|
27
|
-
for (const add of addList) {
|
|
28
|
-
let i = 0;
|
|
29
|
-
for (; i < len; ++i) {
|
|
30
|
-
const curr = list[i];
|
|
31
|
-
if (curr.x === add.x && curr.y === add.y && curr.z === add.z) {
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (i === len) {
|
|
36
|
-
list.push(add);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export class Cutline {
|
|
41
|
-
/**
|
|
42
|
-
* Create a Cutline instance from a `GeoJSON FeatureCollection`.
|
|
43
|
-
|
|
44
|
-
* @param tileMatrix the tileMatrix the COGs will be created in.
|
|
45
|
-
|
|
46
|
-
* @param clipPoly the optional cutline. The source imagery outline used by default. This
|
|
47
|
-
* `FeatureCollection` is converted to one `MultiPolygon` with any holes removed and the
|
|
48
|
-
* coordinates transposed from `Wgs84` to the target projection (unless already in target projection).
|
|
49
|
-
|
|
50
|
-
* @param blend How much blending to consider when working out boundaries.
|
|
51
|
-
*/
|
|
52
|
-
constructor(tileMatrix, clipPoly, blend = 0) {
|
|
53
|
-
/** the polygon outlining a area covered by the source imagery and clip polygon */
|
|
54
|
-
this.srcPoly = [];
|
|
55
|
-
this.tileMatrix = tileMatrix;
|
|
56
|
-
this.blend = blend;
|
|
57
|
-
if (clipPoly == null) {
|
|
58
|
-
this.clipPoly = [];
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
this.tileMatrix = tileMatrix;
|
|
62
|
-
const proj = findGeoJsonProjection(clipPoly);
|
|
63
|
-
const tmsProj = Projection.get(tileMatrix);
|
|
64
|
-
const needProj = proj !== tmsProj.epsg;
|
|
65
|
-
if (needProj && proj !== Epsg.Wgs84)
|
|
66
|
-
throw new Error('Invalid geojson; CRS may not be set for cutline!');
|
|
67
|
-
const convert = needProj ? tmsProj.fromWgs84 : undefined;
|
|
68
|
-
this.clipPoly = featuresToMultiPolygon(clipPoly.features, true, convert).coordinates;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Load a geojson cutline from the file-system.
|
|
72
|
-
*
|
|
73
|
-
* @param path the path of the cutline to load. Can be `s3://` or local file path.
|
|
74
|
-
*/
|
|
75
|
-
static loadCutline(path) {
|
|
76
|
-
return fsa.readJson(path);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* For the given tile `name`, filter `job.source.files` and cutline polygons that are within bounds plus
|
|
80
|
-
* padding
|
|
81
|
-
*
|
|
82
|
-
* @param name
|
|
83
|
-
* @param job
|
|
84
|
-
* @returns names of source files required to render Cog
|
|
85
|
-
*/
|
|
86
|
-
filterSourcesForName(name, job) {
|
|
87
|
-
const tile = TileMatrixSet.nameToTile(name);
|
|
88
|
-
const sourceCode = Projection.get(job.source.epsg);
|
|
89
|
-
const targetCode = Projection.get(this.tileMatrix);
|
|
90
|
-
const tileBounds = this.tileMatrix.tileToSourceBounds(tile);
|
|
91
|
-
const tilePadded = this.padBounds(tileBounds, job.targetZoom);
|
|
92
|
-
let tileBoundsInSrcProj = tilePadded;
|
|
93
|
-
if (sourceCode !== targetCode) {
|
|
94
|
-
// convert the padded quadKey to source projection ensuring fully enclosed
|
|
95
|
-
const poly = targetCode.projectMultipolygon([tileBoundsInSrcProj.toPolygon()], sourceCode);
|
|
96
|
-
tileBoundsInSrcProj = Bounds.fromMultiPolygon(poly);
|
|
97
|
-
}
|
|
98
|
-
const paddedBbox = tilePadded.toBbox();
|
|
99
|
-
if (this.clipPoly.length > 0) {
|
|
100
|
-
const poly = clipMultipolygon(this.clipPoly, paddedBbox);
|
|
101
|
-
if (poly.length === 0) {
|
|
102
|
-
// this tile is not needed
|
|
103
|
-
this.clipPoly = [];
|
|
104
|
-
return [];
|
|
105
|
-
}
|
|
106
|
-
else if (polyContainsBounds(poly, tileBounds)) {
|
|
107
|
-
// tile is completely surrounded; no cutline polygons needed
|
|
108
|
-
this.clipPoly = [];
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
// set the cutline polygons to just the area of interest (minus degenerate edges)
|
|
112
|
-
this.clipPoly = poly;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return job.source.files
|
|
116
|
-
.filter((image) => tileBoundsInSrcProj.intersects(Bounds.fromJson(image)))
|
|
117
|
-
.map(({ name }) => name);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Generate an optimized WebMercator tile cover for the supplied source images
|
|
121
|
-
* @param sourceMetadata contains images bounds and projection info
|
|
122
|
-
*/
|
|
123
|
-
optimizeCovering(sourceMetadata, alignedLevel = AlignedLevel) {
|
|
124
|
-
this.findCovering(sourceMetadata);
|
|
125
|
-
const { resZoom } = sourceMetadata;
|
|
126
|
-
// Fix the cog Minimum Zoom by the aligned level
|
|
127
|
-
const minZ = Math.max(0, resZoom - alignedLevel);
|
|
128
|
-
let tiles = [];
|
|
129
|
-
for (const tile of this.tileMatrix.topLevelTiles()) {
|
|
130
|
-
// Don't make COGs with a tile.z < minZ.
|
|
131
|
-
tiles = tiles.concat(this.makeTiles(tile, this.srcPoly, minZ, CoveringFraction).tiles);
|
|
132
|
-
}
|
|
133
|
-
if (tiles.length === 0) {
|
|
134
|
-
throw new Error('Source imagery does not overlap with project extent');
|
|
135
|
-
}
|
|
136
|
-
const covering = tiles.map((tile) => namedBounds(this.tileMatrix, tile));
|
|
137
|
-
// remove duplicate
|
|
138
|
-
return covering
|
|
139
|
-
.filter((curr) => {
|
|
140
|
-
for (const other of covering) {
|
|
141
|
-
if (other !== curr && Bounds.contains(other, curr))
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
return true;
|
|
145
|
-
})
|
|
146
|
-
.sort(compareName);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Convert JobCutline to geojson FeatureCollection
|
|
150
|
-
*/
|
|
151
|
-
toGeoJson(clipPoly = this.clipPoly) {
|
|
152
|
-
const feature = toFeatureCollection([toFeatureMultiPolygon(clipPoly)]);
|
|
153
|
-
feature.crs = {
|
|
154
|
-
type: 'name',
|
|
155
|
-
properties: { name: this.tileMatrix.projection.toUrn() },
|
|
156
|
-
};
|
|
157
|
-
return feature;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Merge child nodes that have at least a covering fraction
|
|
161
|
-
* @param tile the tile to descend
|
|
162
|
-
* @param srcArea the area of interest
|
|
163
|
-
* @param minZ Only produce tiles for zoom levels at least `minZ` and no sibling tiles
|
|
164
|
-
* greater than `minZ + 4`
|
|
165
|
-
* @param coveringFraction merge tiles that cover at least this fraction
|
|
166
|
-
* @return the tiles and fraction covered of the tile by this srcArea
|
|
167
|
-
*/
|
|
168
|
-
makeTiles(tile, srcArea, minZ, coveringFraction) {
|
|
169
|
-
const clipBounds = this.tileMatrix.tileToSourceBounds(tile).toBbox();
|
|
170
|
-
srcArea = clipMultipolygon(srcArea, clipBounds);
|
|
171
|
-
if (srcArea.length === 0) {
|
|
172
|
-
return { tiles: [], fractionCovered: 0 };
|
|
173
|
-
}
|
|
174
|
-
if (tile.z === minZ + 4) {
|
|
175
|
-
return { tiles: [tile], fractionCovered: 1 };
|
|
176
|
-
}
|
|
177
|
-
const ans = { tiles: [], fractionCovered: 0 };
|
|
178
|
-
for (const child of this.tileMatrix.coverTile(tile)) {
|
|
179
|
-
const { tiles, fractionCovered } = this.makeTiles(child, srcArea, minZ, coveringFraction);
|
|
180
|
-
if (fractionCovered !== 0) {
|
|
181
|
-
ans.fractionCovered += fractionCovered * 0.25;
|
|
182
|
-
addNonDupes(ans.tiles, tiles);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (
|
|
186
|
-
// tile too small OR children have enough coverage
|
|
187
|
-
(tile.z > minZ + 2 || ans.fractionCovered >= coveringFraction) &&
|
|
188
|
-
// AND more than one child tile
|
|
189
|
-
ans.tiles.length > 1 &&
|
|
190
|
-
// AND tile not too big
|
|
191
|
-
tile.z >= minZ) {
|
|
192
|
-
ans.tiles = [tile]; // replace children with parent
|
|
193
|
-
}
|
|
194
|
-
return ans;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Find the polygon covering of source imagery and a (optional) clip cutline. Truncates the
|
|
198
|
-
* cutline to match.
|
|
199
|
-
*
|
|
200
|
-
* @param sourceMetadata
|
|
201
|
-
*/
|
|
202
|
-
findCovering(sourceMetadata) {
|
|
203
|
-
var _a;
|
|
204
|
-
let srcPoly = [];
|
|
205
|
-
const { resZoom } = sourceMetadata;
|
|
206
|
-
// merge imagery bounds
|
|
207
|
-
for (const image of sourceMetadata.bounds) {
|
|
208
|
-
const poly = [Bounds.fromJson(image).scaleFromCenter(SourceSmoothScale).toPolygon()];
|
|
209
|
-
srcPoly = union(srcPoly, poly);
|
|
210
|
-
}
|
|
211
|
-
// Convert polygon to target projection
|
|
212
|
-
const sourceProj = Projection.get(sourceMetadata.projection);
|
|
213
|
-
const targetProj = Projection.get(this.tileMatrix);
|
|
214
|
-
if (sourceProj !== targetProj) {
|
|
215
|
-
srcPoly = sourceProj.projectMultipolygon(srcPoly, targetProj);
|
|
216
|
-
}
|
|
217
|
-
this.srcPoly = srcPoly;
|
|
218
|
-
if (this.clipPoly.length === 0)
|
|
219
|
-
return;
|
|
220
|
-
const srcBounds = Bounds.fromMultiPolygon(srcPoly);
|
|
221
|
-
const boundsPadded = this.padBounds(srcBounds, resZoom).toBbox();
|
|
222
|
-
const poly = clipMultipolygon(this.clipPoly, boundsPadded);
|
|
223
|
-
if (poly.length === 0) {
|
|
224
|
-
throw new Error('No intersection between source imagery and cutline');
|
|
225
|
-
}
|
|
226
|
-
if (polyContainsBounds(poly, srcBounds)) {
|
|
227
|
-
// tile is completely surrounded; no cutline polygons needed
|
|
228
|
-
this.clipPoly = [];
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
// set the cutline polygons to just the area of interest (minus degenerate edges)
|
|
232
|
-
this.clipPoly = poly;
|
|
233
|
-
this.srcPoly = (_a = intersection(srcPoly, this.clipPoly)) !== null && _a !== void 0 ? _a : [];
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Pad the bounds to take in to consideration blending and 100 pixels of adjacent image data
|
|
238
|
-
*
|
|
239
|
-
* @param bounds
|
|
240
|
-
* @param resZoom the imagery resolution target zoom level
|
|
241
|
-
*/
|
|
242
|
-
padBounds(bounds, resZoom) {
|
|
243
|
-
const px = this.tileMatrix.pixelScale(resZoom);
|
|
244
|
-
// Ensure cutline blend does not interferre with non-costal edges
|
|
245
|
-
const widthScale = (bounds.width + px * (PixelPadding + this.blend) * 2) / bounds.width;
|
|
246
|
-
const heightScale = (bounds.height + px * (PixelPadding + this.blend) * 2) / bounds.height;
|
|
247
|
-
return bounds.scaleFromCenter(widthScale, heightScale);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
//# sourceMappingURL=cutline.js.map
|
package/build/cog/cutline.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cutline.js","sourceRoot":"","sources":["../../src/cog/cutline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { CogStacJob, JobCreationContext } from './cog.stac.job.js';
|
|
2
|
-
export declare const MaxConcurrencyDefault = 50;
|
|
3
|
-
export declare function filterTiff(a: string): boolean;
|
|
4
|
-
export declare const CogJobFactory: {
|
|
5
|
-
/**
|
|
6
|
-
* Create a COG Job and potentially submit it to AWS Batch for processing
|
|
7
|
-
*/
|
|
8
|
-
create(ctx: JobCreationContext): Promise<CogStacJob>;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=job.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job.factory.d.ts","sourceRoot":"","sources":["../../src/cog/job.factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7C;AAYD,eAAO,MAAM,aAAa;IACxB;;OAEG;gBACe,kBAAkB,GAAG,QAAQ,UAAU,CAAC;CAyF3D,CAAC"}
|
package/build/cog/job.factory.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Bounds } from '@basemaps/geo';
|
|
2
|
-
import { fsa, isConfigS3Role, isFileConfigPath, LogConfig } from '@basemaps/shared';
|
|
3
|
-
import { basename } from 'path';
|
|
4
|
-
import * as ulid from 'ulid';
|
|
5
|
-
import { BatchJob } from '../cli/cogify/batch.job.js';
|
|
6
|
-
import { CogBuilder } from '../index.js';
|
|
7
|
-
import { CogStacJob } from './cog.stac.job.js';
|
|
8
|
-
import { Cutline } from './cutline.js';
|
|
9
|
-
export const MaxConcurrencyDefault = 50;
|
|
10
|
-
export function filterTiff(a) {
|
|
11
|
-
const lowerA = a.toLowerCase();
|
|
12
|
-
return lowerA.endsWith('.tiff') || lowerA.endsWith('.tif');
|
|
13
|
-
}
|
|
14
|
-
/** Group a file list by its zoom */
|
|
15
|
-
function groupFiles(files) {
|
|
16
|
-
var _a;
|
|
17
|
-
const fileCounts = {};
|
|
18
|
-
for (const f of files) {
|
|
19
|
-
const zoom = f.name.split('-')[0];
|
|
20
|
-
fileCounts[zoom] = ((_a = fileCounts[zoom]) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
21
|
-
}
|
|
22
|
-
return fileCounts;
|
|
23
|
-
}
|
|
24
|
-
export const CogJobFactory = {
|
|
25
|
-
/**
|
|
26
|
-
* Create a COG Job and potentially submit it to AWS Batch for processing
|
|
27
|
-
*/
|
|
28
|
-
async create(ctx) {
|
|
29
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
30
|
-
const id = (_b = (_a = ctx.override) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : ulid.ulid();
|
|
31
|
-
let imageryName = ctx.imageryName;
|
|
32
|
-
if (imageryName == null)
|
|
33
|
-
imageryName = basename(ctx.sourceLocation.path);
|
|
34
|
-
const logger = LogConfig.get().child({ id, imageryName });
|
|
35
|
-
const { sourceLocation } = ctx;
|
|
36
|
-
logger.info({ source: ctx.sourceLocation.path, sourceRole: isConfigS3Role(sourceLocation) && sourceLocation.roleArn }, 'ListTiffs');
|
|
37
|
-
fsa.configure(sourceLocation);
|
|
38
|
-
const tiffList = isFileConfigPath(sourceLocation)
|
|
39
|
-
? sourceLocation.files
|
|
40
|
-
: (await fsa.toArray(fsa.list(sourceLocation.path))).filter(filterTiff);
|
|
41
|
-
const tiffSource = tiffList.map((path) => fsa.source(path));
|
|
42
|
-
const maxConcurrency = (_d = (_c = ctx.override) === null || _c === void 0 ? void 0 : _c.concurrency) !== null && _d !== void 0 ? _d : MaxConcurrencyDefault;
|
|
43
|
-
logger.info({ source: sourceLocation.path, tiffCount: tiffList.length }, 'LoadingTiffs');
|
|
44
|
-
const cutline = new Cutline(ctx.tileMatrix, ctx.cutline && (await Cutline.loadCutline(ctx.cutline.href)), (_e = ctx.cutline) === null || _e === void 0 ? void 0 : _e.blend);
|
|
45
|
-
const builder = new CogBuilder(ctx.tileMatrix, maxConcurrency, logger, (_f = ctx.override) === null || _f === void 0 ? void 0 : _f.projection);
|
|
46
|
-
const metadata = await builder.build(tiffSource, cutline, (_g = ctx.override) === null || _g === void 0 ? void 0 : _g.alignedLevel);
|
|
47
|
-
if (cutline.clipPoly.length === 0) {
|
|
48
|
-
// no cutline needed for this imagery set
|
|
49
|
-
ctx.cutline = undefined;
|
|
50
|
-
}
|
|
51
|
-
const files = metadata.files.sort(Bounds.compareArea);
|
|
52
|
-
if (files.length > 0) {
|
|
53
|
-
const bigArea = files[files.length - 1];
|
|
54
|
-
const smallArea = files[0];
|
|
55
|
-
logger.info({
|
|
56
|
-
tileMatrix: ctx.tileMatrix.identifier,
|
|
57
|
-
// Size of the biggest image
|
|
58
|
-
big: bigArea.width / cutline.tileMatrix.pixelScale(metadata.resZoom),
|
|
59
|
-
// Size of the smallest image
|
|
60
|
-
small: smallArea.width / cutline.tileMatrix.pixelScale(metadata.resZoom),
|
|
61
|
-
}, 'Covers');
|
|
62
|
-
}
|
|
63
|
-
// Don't log bounds as it is huge
|
|
64
|
-
logger.info({
|
|
65
|
-
...metadata,
|
|
66
|
-
tileMatrix: ctx.tileMatrix.identifier,
|
|
67
|
-
bounds: undefined,
|
|
68
|
-
files: undefined,
|
|
69
|
-
fileCount: files.length,
|
|
70
|
-
fileGroups: groupFiles(metadata.files),
|
|
71
|
-
}, 'CoveringGenerated');
|
|
72
|
-
let addAlpha = true;
|
|
73
|
-
// -addalpha to vrt adds extra alpha layers even if one already exist
|
|
74
|
-
if (metadata.bands > 3) {
|
|
75
|
-
logger.info({ bandCount: metadata.bands }, 'Vrt:DetectedAlpha, Disabling -addalpha');
|
|
76
|
-
addAlpha = false;
|
|
77
|
-
}
|
|
78
|
-
const job = await CogStacJob.create({
|
|
79
|
-
id,
|
|
80
|
-
imageryName,
|
|
81
|
-
metadata,
|
|
82
|
-
ctx,
|
|
83
|
-
addAlpha,
|
|
84
|
-
cutlinePoly: cutline.clipPoly,
|
|
85
|
-
});
|
|
86
|
-
if (ctx.batch)
|
|
87
|
-
await BatchJob.batchJob(job, true, logger);
|
|
88
|
-
logger.info({ tileMatrix: ctx.tileMatrix.identifier, job: job.getJobPath() }, 'Done');
|
|
89
|
-
return job;
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
//# sourceMappingURL=job.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job.factory.js","sourceRoot":"","sources":["../../src/cog/job.factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Epsg } from '@basemaps/geo';
|
|
2
|
-
import fetch from 'node-fetch';
|
|
3
|
-
export declare class ProjectionLoader {
|
|
4
|
-
static _fetch: typeof fetch;
|
|
5
|
-
/**
|
|
6
|
-
* Ensure that a projection EPSG code is avialable for use in Proj4js
|
|
7
|
-
*
|
|
8
|
-
* If its not already loaded, lookup definition from spatialreference.org
|
|
9
|
-
* @param code
|
|
10
|
-
*/
|
|
11
|
-
static load(code: number): Promise<Epsg>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=projection.loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projection.loader.d.ts","sourceRoot":"","sources":["../../src/cog/projection.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,qBAAa,gBAAgB;IAE3B,MAAM,CAAC,MAAM,eAAS;IAEtB;;;;;OAKG;WACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAc/C"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Epsg, Projection } from '@basemaps/geo';
|
|
2
|
-
import fetch from 'node-fetch';
|
|
3
|
-
export class ProjectionLoader {
|
|
4
|
-
/**
|
|
5
|
-
* Ensure that a projection EPSG code is avialable for use in Proj4js
|
|
6
|
-
*
|
|
7
|
-
* If its not already loaded, lookup definition from spatialreference.org
|
|
8
|
-
* @param code
|
|
9
|
-
*/
|
|
10
|
-
static async load(code) {
|
|
11
|
-
if (Projection.tryGet(code) != null)
|
|
12
|
-
return Epsg.get(code);
|
|
13
|
-
const url = `https://spatialreference.org/ref/epsg/${code}/ogcwkt/`;
|
|
14
|
-
const res = await this._fetch(url);
|
|
15
|
-
if (!res.ok)
|
|
16
|
-
throw new Error('Failed to load projection information for:' + code);
|
|
17
|
-
let epsg = Epsg.tryGet(code);
|
|
18
|
-
if (epsg == null)
|
|
19
|
-
epsg = new Epsg(code);
|
|
20
|
-
const text = await res.text();
|
|
21
|
-
Projection.define(epsg, text);
|
|
22
|
-
return epsg;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
// Exposed for testing
|
|
26
|
-
ProjectionLoader._fetch = fetch;
|
|
27
|
-
//# sourceMappingURL=projection.loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projection.loader.js","sourceRoot":"","sources":["../../src/cog/projection.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAO,gBAAgB;IAI3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,yCAAyC,IAAI,UAAU,CAAC;QAEpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,IAAI,CAAC,CAAC;QAElF,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI;YAAE,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;;AAtBD,sBAAsB;AACf,uBAAM,GAAG,KAAK,CAAC"}
|
package/build/cog/stac.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { EpsgCode, StacCollection, StacItem } from '@basemaps/geo';
|
|
2
|
-
import { CogGdalSettings } from './types.js';
|
|
3
|
-
export interface CogGenerated {
|
|
4
|
-
/** ISO date string */
|
|
5
|
-
datetime: string;
|
|
6
|
-
/** Package name of the generator */
|
|
7
|
-
package: string;
|
|
8
|
-
version: string;
|
|
9
|
-
/** Commit hash of the generator */
|
|
10
|
-
hash: string | undefined;
|
|
11
|
-
}
|
|
12
|
-
export interface CogOutputSummery extends CogGdalSettings {
|
|
13
|
-
cutlineBlend?: number;
|
|
14
|
-
}
|
|
15
|
-
export interface CogSummaries {
|
|
16
|
-
'proj:epsg': EpsgCode[];
|
|
17
|
-
/** Ground Sampling Distance in meters per pixel of the generated imagery */
|
|
18
|
-
gsd: number[];
|
|
19
|
-
'linz:output': CogOutputSummery[];
|
|
20
|
-
'linz:generated': CogGenerated[];
|
|
21
|
-
}
|
|
22
|
-
export declare const CogStacKeywords: string[];
|
|
23
|
-
export declare const CogStacItemExtensions: string[];
|
|
24
|
-
/** STAC compliant structure for storing Job instructions */
|
|
25
|
-
export type CogStac = StacCollection<CogSummaries>;
|
|
26
|
-
export interface CogStacItemProperties {
|
|
27
|
-
datetime: string;
|
|
28
|
-
gsd: number;
|
|
29
|
-
'proj:epsg': EpsgCode;
|
|
30
|
-
}
|
|
31
|
-
export type CogStacItem = StacItem<CogStacItemProperties>;
|
|
32
|
-
//# sourceMappingURL=stac.d.ts.map
|
package/build/cog/stac.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stac.d.ts","sourceRoot":"","sources":["../../src/cog/stac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,4EAA4E;IAC5E,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAGlC;AAED,eAAO,MAAM,eAAe,UAA6B,CAAC;AAC1D,eAAO,MAAM,qBAAqB,UAAiB,CAAC;AAEpD,4DAA4D;AAC5D,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC"}
|
package/build/cog/stac.js
DELETED
package/build/cog/stac.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stac.js","sourceRoot":"","sources":["../../src/cog/stac.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAY,CAAC,CAAC"}
|
package/build/cog/types.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { BoundingBox, EpsgCode, NamedBounds, TileMatrixSet } from '@basemaps/geo';
|
|
2
|
-
import { FileConfig } from '@basemaps/shared';
|
|
3
|
-
import { GdalCogBuilderResampling } from '../gdal/gdal.config.js';
|
|
4
|
-
export interface FeatureCollectionWithCrs extends GeoJSON.FeatureCollection {
|
|
5
|
-
crs: {
|
|
6
|
-
type: string;
|
|
7
|
-
properties: {
|
|
8
|
-
name: string;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export interface ImageryProperties {
|
|
13
|
-
/** Ground Sampling Distance in meters per pixel */
|
|
14
|
-
gsd: number;
|
|
15
|
-
/** File access details */
|
|
16
|
-
location: FileConfig;
|
|
17
|
-
/** List of input files */
|
|
18
|
-
files: NamedBounds[];
|
|
19
|
-
}
|
|
20
|
-
export interface CogSourceProperties extends ImageryProperties {
|
|
21
|
-
epsg: EpsgCode;
|
|
22
|
-
}
|
|
23
|
-
export interface CogGdalSettings {
|
|
24
|
-
resampling: GdalCogBuilderResampling;
|
|
25
|
-
nodata?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Quality level to use
|
|
28
|
-
* @default 90
|
|
29
|
-
*/
|
|
30
|
-
quality: number;
|
|
31
|
-
/** Vrts will add a second alpha layer if one exists, so dont always add one */
|
|
32
|
-
addAlpha: boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface CogOutputProperties extends CogGdalSettings, ImageryProperties {
|
|
35
|
-
/** The bounds of all the cogs */
|
|
36
|
-
bounds: BoundingBox;
|
|
37
|
-
/** Identifier of the tile matrix to use */
|
|
38
|
-
tileMatrix?: string;
|
|
39
|
-
epsg: EpsgCode;
|
|
40
|
-
/** Cutline options */
|
|
41
|
-
cutline?: {
|
|
42
|
-
href: string;
|
|
43
|
-
blend: number;
|
|
44
|
-
};
|
|
45
|
-
/** Should this job ignore source coverage and just produce one big COG for EPSG extent */
|
|
46
|
-
oneCogCovering: boolean;
|
|
47
|
-
}
|
|
48
|
-
export interface CogJobJson {
|
|
49
|
-
/** Unique processing Id */
|
|
50
|
-
id: string;
|
|
51
|
-
/** Imagery set name */
|
|
52
|
-
name: string;
|
|
53
|
-
title: string;
|
|
54
|
-
description?: string;
|
|
55
|
-
source: CogSourceProperties;
|
|
56
|
-
output: CogOutputProperties;
|
|
57
|
-
}
|
|
58
|
-
export interface CogJob extends CogJobJson {
|
|
59
|
-
tileMatrix: TileMatrixSet;
|
|
60
|
-
targetZoom: number;
|
|
61
|
-
getJobPath(key?: string): string;
|
|
62
|
-
}
|
|
63
|
-
export interface SourceMetadata {
|
|
64
|
-
/** Number of imagery bands generally RGB (3) or RGBA (4) */
|
|
65
|
-
bands: number;
|
|
66
|
-
/** Bounding box for polygons */
|
|
67
|
-
bounds: NamedBounds[];
|
|
68
|
-
/** The number of pixels per meter for the best source image */
|
|
69
|
-
pixelScale: number;
|
|
70
|
-
/** Highest quality zoom level for the images */
|
|
71
|
-
resZoom: number;
|
|
72
|
-
/** EPSG projection number */
|
|
73
|
-
projection: EpsgCode;
|
|
74
|
-
/** GDAL_NODATA value */
|
|
75
|
-
nodata?: number;
|
|
76
|
-
}
|
|
77
|
-
export interface CogBuilderMetadata extends SourceMetadata {
|
|
78
|
-
/** the bounding box of all the COGs */
|
|
79
|
-
targetBounds: BoundingBox;
|
|
80
|
-
/** list of file basenames and their bounding box */
|
|
81
|
-
files: NamedBounds[];
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=types.d.ts.map
|
package/build/cog/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cog/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,iBAAiB;IACzE,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,QAAQ,EAAE,UAAU,CAAC;IAErB,0BAA0B;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe,EAAE,iBAAiB;IAC7E,iCAAiC;IACjC,MAAM,EAAE,WAAW,CAAC;IAEpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IAEf,sBAAsB;IACtB,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,0FAA0F;IAC1F,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IAEtB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAEhB,6BAA6B;IAC7B,UAAU,EAAE,QAAQ,CAAC;IAErB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,uCAAuC;IACvC,YAAY,EAAE,WAAW,CAAC;IAE1B,oDAAoD;IACpD,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB"}
|
package/build/cog/types.js
DELETED
package/build/cog/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cog/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gdal.progress.test.d.ts","sourceRoot":"","sources":["../../../src/gdal/__tests__/gdal.progress.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import o from 'ospec';
|
|
2
|
-
import { GdalProgressParser } from '../gdal.progress.js';
|
|
3
|
-
o.spec('GdalProgressParser', () => {
|
|
4
|
-
o('should emit on progress', () => {
|
|
5
|
-
const prog = new GdalProgressParser();
|
|
6
|
-
o(prog.progress).equals(0);
|
|
7
|
-
prog.data(Buffer.from('\n.'));
|
|
8
|
-
o(prog.progress.toFixed(2)).equals('3.23');
|
|
9
|
-
});
|
|
10
|
-
o('should take 31 dots to finish', () => {
|
|
11
|
-
const prog = new GdalProgressParser();
|
|
12
|
-
let processCount = 0;
|
|
13
|
-
prog.data(Buffer.from('\n'));
|
|
14
|
-
prog.on('progress', () => processCount++);
|
|
15
|
-
for (let i = 0; i < 31; i++) {
|
|
16
|
-
prog.data(Buffer.from('.'));
|
|
17
|
-
o(processCount).equals(i + 1);
|
|
18
|
-
}
|
|
19
|
-
o(prog.progress.toFixed(2)).equals('100.00');
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=gdal.progress.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gdal.progress.test.js","sourceRoot":"","sources":["../../../src/gdal/__tests__/gdal.progress.test.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,CAAC,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/B;QACD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gdal.test.d.ts","sourceRoot":"","sources":["../../../src/gdal/__tests__/gdal.test.ts"],"names":[],"mappings":""}
|