@cogeotiff/cli 7.2.1 → 8.0.1
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/CHANGELOG.md +4 -493
- package/README.md +26 -34
- package/bin/cogeotiff.js +1 -2
- package/build/action.util.d.ts +2 -8
- package/build/action.util.js +7 -18
- package/build/action.util.js.map +1 -0
- package/build/bin.d.ts +1 -0
- package/build/bin.js +13 -0
- package/build/bin.js.map +1 -0
- package/build/cli.table.d.ts +0 -1
- package/build/cli.table.js +9 -4
- package/build/cli.table.js.map +1 -0
- package/build/commands/dump.d.ts +27 -0
- package/build/commands/dump.js +132 -0
- package/build/commands/dump.js.map +1 -0
- package/build/commands/info.d.ts +19 -0
- package/build/commands/info.js +185 -0
- package/build/commands/info.js.map +1 -0
- package/build/common.d.ts +16 -0
- package/build/common.js +19 -0
- package/build/common.js.map +1 -0
- package/build/fs.d.ts +6 -0
- package/build/fs.js +17 -0
- package/build/fs.js.map +1 -0
- package/build/index.d.ts +57 -2
- package/build/index.js +11 -8
- package/build/index.js.map +1 -0
- package/build/log.d.ts +11 -0
- package/build/log.js +37 -0
- package/build/log.js.map +1 -0
- package/build/util.bytes.d.ts +0 -1
- package/build/util.bytes.js +1 -1
- package/build/util.bytes.js.map +1 -0
- package/build/util.tile.d.ts +2 -3
- package/build/util.tile.js +20 -18
- package/build/util.tile.js.map +1 -0
- package/package.json +37 -37
- package/src/action.util.ts +22 -37
- package/src/bin.ts +14 -0
- package/src/cli.table.ts +27 -27
- package/src/commands/dump.ts +156 -0
- package/src/commands/info.ts +199 -0
- package/src/common.ts +20 -0
- package/src/fs.ts +18 -0
- package/src/index.ts +10 -7
- package/src/log.ts +43 -0
- package/src/util.bytes.ts +6 -6
- package/src/util.tile.ts +33 -33
- package/tsconfig.json +8 -8
- package/build/action.dump.tile.d.ts +0 -24
- package/build/action.dump.tile.d.ts.map +0 -1
- package/build/action.dump.tile.js +0 -194
- package/build/action.info.d.ts +0 -10
- package/build/action.info.d.ts.map +0 -1
- package/build/action.info.js +0 -183
- package/build/action.tile.d.ts +0 -9
- package/build/action.tile.d.ts.map +0 -1
- package/build/action.tile.js +0 -64
- package/build/action.util.d.ts.map +0 -1
- package/build/cli.cog.info.d.ts +0 -9
- package/build/cli.cog.info.d.ts.map +0 -1
- package/build/cli.cog.info.js +0 -42
- package/build/cli.log.d.ts +0 -3
- package/build/cli.log.d.ts.map +0 -1
- package/build/cli.log.js +0 -4
- package/build/cli.table.d.ts.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/util.bytes.d.ts.map +0 -1
- package/build/util.tile.d.ts.map +0 -1
- package/src/action.dump.tile.ts +0 -240
- package/src/action.info.ts +0 -205
- package/src/action.tile.ts +0 -76
- package/src/cli.cog.info.ts +0 -45
- package/src/cli.log.ts +0 -4
package/build/cli.table.d.ts
CHANGED
package/build/cli.table.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
export class CliTable {
|
|
2
2
|
constructor() {
|
|
3
|
-
this
|
|
3
|
+
Object.defineProperty(this, "fields", {
|
|
4
|
+
enumerable: true,
|
|
5
|
+
configurable: true,
|
|
6
|
+
writable: true,
|
|
7
|
+
value: []
|
|
8
|
+
});
|
|
4
9
|
}
|
|
5
10
|
add(fields) {
|
|
6
11
|
this.fields.push(fields);
|
|
7
12
|
}
|
|
8
13
|
print(data, rowPadding = '') {
|
|
9
|
-
const fields = this.fields.filter((f) => data.every((d) =>
|
|
14
|
+
const fields = this.fields.filter((f) => data.every((d) => f.enabled?.(d) ?? true));
|
|
10
15
|
const rows = data.map((d, index) => {
|
|
11
16
|
const row = fields.map((f) => {
|
|
12
17
|
const str = f.get(d, index);
|
|
13
|
-
return (str
|
|
18
|
+
return (str ?? '').padEnd(f.width);
|
|
14
19
|
});
|
|
15
20
|
return rowPadding + row.join('\t');
|
|
16
21
|
});
|
|
@@ -18,4 +23,4 @@ export class CliTable {
|
|
|
18
23
|
return rows;
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=cli.table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.table.js","sourceRoot":"","sources":["../src/cli.table.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,QAAQ;IAArB;QACE;;;;mBAA4B,EAAE;WAAC;IAkBjC,CAAC;IAjBC,GAAG,CAAC,MAAuB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAS,EAAE,UAAU,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface GeoJsonPolygon {
|
|
2
|
+
type: 'Feature';
|
|
3
|
+
geometry: {
|
|
4
|
+
type: 'Polygon';
|
|
5
|
+
coordinates: [[[number, number], [number, number], [number, number], [number, number], [number, number]]];
|
|
6
|
+
};
|
|
7
|
+
properties: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare const commandDump: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
10
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
11
|
+
path: URL | undefined;
|
|
12
|
+
image: number;
|
|
13
|
+
output: URL | undefined;
|
|
14
|
+
paths: URL[];
|
|
15
|
+
verbose: boolean;
|
|
16
|
+
extraVerbose: boolean;
|
|
17
|
+
}>>;
|
|
18
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").PrintHelp & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/helpdoc.js").Named & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/argparser.js").Register & import("cmd-ts/dist/cjs/runner.js").Handling<{
|
|
19
|
+
path: URL | undefined;
|
|
20
|
+
image: number;
|
|
21
|
+
output: URL | undefined;
|
|
22
|
+
paths: URL[];
|
|
23
|
+
verbose: boolean;
|
|
24
|
+
extraVerbose: boolean;
|
|
25
|
+
}, Promise<void>> & {
|
|
26
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
|
|
27
|
+
} & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned & import("cmd-ts/dist/cjs/helpdoc.js").Descriptive & import("cmd-ts/dist/cjs/helpdoc.js").Aliased>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { fsa } from '@chunkd/fs';
|
|
2
|
+
import { CogTiff, TiffMimeType } from '@cogeotiff/core';
|
|
3
|
+
import { command, number, option, optional, restPositionals } from 'cmd-ts';
|
|
4
|
+
import { promises as fs } from 'node:fs';
|
|
5
|
+
import { basename } from 'node:path';
|
|
6
|
+
import { pathToFileURL } from 'node:url';
|
|
7
|
+
import pLimit from 'p-limit';
|
|
8
|
+
import { DefaultArgs, Url } from '../common.js';
|
|
9
|
+
import { ensureS3fs, setupLogger } from '../log.js';
|
|
10
|
+
import { getTileName, writeTile } from '../util.tile.js';
|
|
11
|
+
const TileQueue = pLimit(5);
|
|
12
|
+
function makePolygon(xMin, yMin, xMax, yMax) {
|
|
13
|
+
return {
|
|
14
|
+
type: 'Feature',
|
|
15
|
+
properties: {},
|
|
16
|
+
geometry: {
|
|
17
|
+
type: 'Polygon',
|
|
18
|
+
coordinates: [
|
|
19
|
+
[
|
|
20
|
+
[xMin, yMin],
|
|
21
|
+
[xMin, yMax],
|
|
22
|
+
[xMax, yMax],
|
|
23
|
+
[xMax, yMin],
|
|
24
|
+
[xMin, yMin],
|
|
25
|
+
],
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const commandDump = command({
|
|
31
|
+
name: 'dump',
|
|
32
|
+
args: {
|
|
33
|
+
...DefaultArgs,
|
|
34
|
+
path: option({ short: 'f', long: 'file', type: optional(Url) }),
|
|
35
|
+
image: option({ short: 'i', long: 'image', description: 'Image Id to dump (starting from 0)', type: number }),
|
|
36
|
+
output: option({ short: 'o', long: 'output', type: optional(Url) }),
|
|
37
|
+
paths: restPositionals({ type: Url, description: 'Files to process' }),
|
|
38
|
+
},
|
|
39
|
+
async handler(args) {
|
|
40
|
+
const cwd = pathToFileURL(process.cwd() + '/');
|
|
41
|
+
const logger = setupLogger(args);
|
|
42
|
+
for (const path of [args.path, ...args.paths]) {
|
|
43
|
+
if (path == null)
|
|
44
|
+
continue;
|
|
45
|
+
if (path.protocol === 's3:')
|
|
46
|
+
await ensureS3fs();
|
|
47
|
+
const source = fsa.source(path);
|
|
48
|
+
const tiff = await new CogTiff(source).init();
|
|
49
|
+
const img = tiff.images[args.image];
|
|
50
|
+
if (!img.isTiled())
|
|
51
|
+
throw Error(`Tiff: ${path.href} file is not tiled.`);
|
|
52
|
+
const output = new URL(`${basename(path.href)}-i${args.image}/`, args.output ?? cwd);
|
|
53
|
+
await fs.mkdir(output, { recursive: true });
|
|
54
|
+
await dumpTiles(tiff, output, args.image, logger);
|
|
55
|
+
await dumpBounds(tiff, output, args.image);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
async function dumpBounds(tiff, target, index) {
|
|
60
|
+
const img = tiff.images[index];
|
|
61
|
+
if (!img.isTiled() || !img.isGeoLocated)
|
|
62
|
+
return;
|
|
63
|
+
const features = [];
|
|
64
|
+
const featureCollection = {
|
|
65
|
+
type: 'FeatureCollection',
|
|
66
|
+
features,
|
|
67
|
+
};
|
|
68
|
+
const tileCount = img.tileCount;
|
|
69
|
+
const tileInfo = img.tileSize;
|
|
70
|
+
const tileSize = img.size;
|
|
71
|
+
const firstImage = tiff.images[0];
|
|
72
|
+
if (firstImage.epsg !== 4326) {
|
|
73
|
+
featureCollection['crs'] = {
|
|
74
|
+
type: 'name',
|
|
75
|
+
properties: { name: `epsg:${firstImage.epsg}` },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
firstImage.compression;
|
|
79
|
+
const firstTileSize = firstImage.size;
|
|
80
|
+
const origin = firstImage.origin;
|
|
81
|
+
const resolution = firstImage.resolution;
|
|
82
|
+
const xScale = (resolution[0] * firstTileSize.width) / tileSize.width;
|
|
83
|
+
const yScale = (resolution[1] * firstTileSize.height) / tileSize.height;
|
|
84
|
+
for (let y = 0; y < tileCount.y; y++) {
|
|
85
|
+
const yMax = origin[1] + y * tileInfo.height * yScale;
|
|
86
|
+
const yMin = yMax + tileInfo.height * yScale;
|
|
87
|
+
for (let x = 0; x < tileCount.x; x++) {
|
|
88
|
+
const xMin = origin[0] + x * tileInfo.width * xScale;
|
|
89
|
+
const xMax = xMin + tileInfo.width * xScale;
|
|
90
|
+
const poly = makePolygon(xMin, yMin, xMax, yMax);
|
|
91
|
+
poly.properties = { tile: getTileName(firstImage.compression ?? TiffMimeType.None, index, x, y) };
|
|
92
|
+
features.push(poly);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
await fs.writeFile(new URL(`i${index}.bounds.geojson`, target), JSON.stringify(featureCollection, null, 2));
|
|
96
|
+
}
|
|
97
|
+
async function dumpTiles(tiff, target, index, logger) {
|
|
98
|
+
const promises = [];
|
|
99
|
+
const img = tiff.images[index];
|
|
100
|
+
if (!img.isTiled())
|
|
101
|
+
return 0;
|
|
102
|
+
logger.info('Tiff:Info', { source: tiff.source.url, ...img.tileSize, ...img.tileCount });
|
|
103
|
+
const { tileCount, tileSize } = img;
|
|
104
|
+
const html = ['<html>'];
|
|
105
|
+
const styles = `<style>.c { min-width: ${tileSize.width}px; min-height: ${tileSize.height}px; outline: 1px #ff00fff0 }</style>`;
|
|
106
|
+
html.push(styles);
|
|
107
|
+
for (let y = 0; y < tileCount.y; y++) {
|
|
108
|
+
for (let x = 0; x < tileCount.x; x++) {
|
|
109
|
+
const promise = TileQueue(() => writeTile(tiff, x, y, index, target, logger));
|
|
110
|
+
promises.push(promise);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const result = await Promise.all(promises);
|
|
114
|
+
let i = 0;
|
|
115
|
+
for (let y = 0; y < tileCount.y; y++) {
|
|
116
|
+
html.push('\t<div style="display:flex;">');
|
|
117
|
+
for (let x = 0; x < tileCount.x; x++) {
|
|
118
|
+
const fileName = result[i];
|
|
119
|
+
if (fileName == null) {
|
|
120
|
+
html.push(`\t\t<div class="c"></div>`);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
html.push(`\t\t<img class="c" src="./${fileName}" >`);
|
|
124
|
+
i++;
|
|
125
|
+
}
|
|
126
|
+
html.push('\t</div>');
|
|
127
|
+
}
|
|
128
|
+
html.push('</html>');
|
|
129
|
+
await fs.writeFile(new URL('index.html', target), html.join('\n'));
|
|
130
|
+
return promises.length;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump.js","sourceRoot":"","sources":["../../src/commands/dump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAW5B,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;IACzE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,WAAW,EAAE;gBACX;oBACE,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE;QACJ,GAAG,WAAW;QACd,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7G,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnE,KAAK,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;KACvE;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7C,IAAI,IAAI,IAAI,IAAI;gBAAE,SAAS;YAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;gBAAE,MAAM,UAAU,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBAAE,MAAM,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;YACrF,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;IACH,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,UAAU,CAAC,IAAa,EAAE,MAAW,EAAE,KAAa;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO;IAEhD,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAA4B;QACjD,IAAI,EAAE,mBAAmB;QACzB,QAAQ;KACT,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE;QAC5B,iBAAiB,CAAC,KAAK,CAAC,GAAG;YACzB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,UAAU,CAAC,IAAI,EAAE,EAAE;SAChD,CAAC;KACH;IACD,UAAU,CAAC,WAAW,CAAC;IACvB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAExE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;YAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAClG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAa,EAAE,MAAW,EAAE,KAAa,EAAE,MAAkB;IACpF,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,CAAC;IAE7B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACzF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEpC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,0BAA0B,QAAQ,CAAC,KAAK,mBAAmB,QAAQ,CAAC,MAAM,sCAAsC,CAAC;IAChI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;KACF;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACvC,SAAS;aACV;YACD,IAAI,CAAC,IAAI,CAAC,6BAA6B,QAAQ,KAAK,CAAC,CAAC;YAEtD,CAAC,EAAE,CAAC;SACL;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACvB;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const commandInfo: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
2
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
3
|
+
path: URL | undefined;
|
|
4
|
+
tags: boolean;
|
|
5
|
+
offsets: boolean;
|
|
6
|
+
paths: URL[];
|
|
7
|
+
verbose: boolean;
|
|
8
|
+
extraVerbose: boolean;
|
|
9
|
+
}>>;
|
|
10
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").PrintHelp & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/helpdoc.js").Named & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/argparser.js").Register & import("cmd-ts/dist/cjs/runner.js").Handling<{
|
|
11
|
+
path: URL | undefined;
|
|
12
|
+
tags: boolean;
|
|
13
|
+
offsets: boolean;
|
|
14
|
+
paths: URL[];
|
|
15
|
+
verbose: boolean;
|
|
16
|
+
extraVerbose: boolean;
|
|
17
|
+
}, Promise<void>> & {
|
|
18
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
|
|
19
|
+
} & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned & import("cmd-ts/dist/cjs/helpdoc.js").Descriptive & import("cmd-ts/dist/cjs/helpdoc.js").Aliased>;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { fsa } from '@chunkd/fs';
|
|
2
|
+
import { CogTiff, TiffTagGeo, TiffTagId, TiffTagValueType, TiffVersion, toHex } from '@cogeotiff/core';
|
|
3
|
+
import c from 'ansi-colors';
|
|
4
|
+
import { command, flag, option, optional, restPositionals } from 'cmd-ts';
|
|
5
|
+
import { ActionUtil } from '../action.util.js';
|
|
6
|
+
import { CliTable } from '../cli.table.js';
|
|
7
|
+
import { DefaultArgs, Url } from '../common.js';
|
|
8
|
+
import { FetchLog } from '../fs.js';
|
|
9
|
+
import { ensureS3fs, setupLogger } from '../log.js';
|
|
10
|
+
import { toByteSizeString } from '../util.bytes.js';
|
|
11
|
+
function round(num) {
|
|
12
|
+
const opt = 10 ** 4;
|
|
13
|
+
return Math.floor(num * opt) / opt;
|
|
14
|
+
}
|
|
15
|
+
export const commandInfo = command({
|
|
16
|
+
name: 'info',
|
|
17
|
+
args: {
|
|
18
|
+
...DefaultArgs,
|
|
19
|
+
path: option({ short: 'f', long: 'file', type: optional(Url) }),
|
|
20
|
+
tags: flag({ short: 't', long: 'tags', description: 'Dump tiff Tags' }),
|
|
21
|
+
offsets: flag({ short: 'o', long: 'offsets', description: 'Load byte offsets too' }),
|
|
22
|
+
paths: restPositionals({ type: Url, description: 'Files to process' }),
|
|
23
|
+
},
|
|
24
|
+
async handler(args) {
|
|
25
|
+
const logger = setupLogger(args);
|
|
26
|
+
const paths = [...args.paths, args.path].filter((f) => f != null);
|
|
27
|
+
for (const path of paths) {
|
|
28
|
+
if (path.protocol === 's3:')
|
|
29
|
+
await ensureS3fs();
|
|
30
|
+
logger.debug('Tiff:load', { path: path?.href });
|
|
31
|
+
FetchLog.reset();
|
|
32
|
+
const source = fsa.source(path);
|
|
33
|
+
const tiff = await new CogTiff(source).init();
|
|
34
|
+
const header = [
|
|
35
|
+
{ key: 'Tiff type', value: `${TiffVersion[tiff.version]} (v${String(tiff.version)})` },
|
|
36
|
+
{
|
|
37
|
+
key: 'Bytes read',
|
|
38
|
+
value: `${toByteSizeString(FetchLog.bytesRead)} (${FetchLog.fetches.length} Chunk${FetchLog.fetches.length === 1 ? '' : 's'})`,
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const firstImage = tiff.images[0];
|
|
42
|
+
const isGeoLocated = firstImage.isGeoLocated;
|
|
43
|
+
const images = [
|
|
44
|
+
{ key: 'Compression', value: firstImage.compression },
|
|
45
|
+
isGeoLocated ? { key: 'Origin', value: firstImage.origin.map(round).join(', ') } : null,
|
|
46
|
+
isGeoLocated ? { key: 'Resolution', value: firstImage.resolution.map(round).join(', ') } : null,
|
|
47
|
+
isGeoLocated ? { key: 'BoundingBox', value: firstImage.bbox.map(round).join(', ') } : null,
|
|
48
|
+
firstImage.epsg ? { key: 'EPSG', value: `EPSG:${firstImage.epsg} (https://epsg.io/${firstImage.epsg})` } : null,
|
|
49
|
+
{ key: 'Images', value: '\n' + TiffImageInfoTable.print(tiff.images, '\t').join('\n') },
|
|
50
|
+
];
|
|
51
|
+
const ghostOptions = [...(tiff.options?.options.entries() ?? [])];
|
|
52
|
+
const gdalMetadata = parseGdalMetadata(firstImage);
|
|
53
|
+
const gdal = [
|
|
54
|
+
{
|
|
55
|
+
key: 'COG optimized',
|
|
56
|
+
value: String(tiff.options?.isCogOptimized),
|
|
57
|
+
enabled: tiff.options?.isCogOptimized === true,
|
|
58
|
+
},
|
|
59
|
+
{ key: 'COG broken', value: String(tiff.options?.isBroken), enabled: tiff.options?.isBroken === true },
|
|
60
|
+
{
|
|
61
|
+
key: 'Ghost Options',
|
|
62
|
+
value: '\n' + ghostOptions.map((c) => `\t\t${c[0]} = ${c[1]}`).join('\n'),
|
|
63
|
+
enabled: ghostOptions.length > 0,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
key: 'Metadata',
|
|
67
|
+
value: '\n' + gdalMetadata?.map((c) => `\t\t${c}`).join('\n'),
|
|
68
|
+
enabled: gdalMetadata != null,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const result = [
|
|
72
|
+
{ keys: header },
|
|
73
|
+
{ title: 'Images', keys: images },
|
|
74
|
+
{ title: 'GDAL', keys: gdal, enabled: gdal.filter((g) => g.enabled == null || g.enabled).length > 0 },
|
|
75
|
+
];
|
|
76
|
+
if (args.tags) {
|
|
77
|
+
for (const img of tiff.images) {
|
|
78
|
+
const tiffTags = [...img.tags.values()];
|
|
79
|
+
// Load the first 25 values of offset arrays
|
|
80
|
+
if (args.offsets) {
|
|
81
|
+
for (const tag of tiffTags) {
|
|
82
|
+
if (tag.type !== 'offset')
|
|
83
|
+
continue;
|
|
84
|
+
// for (let i = 0; i < Math.min(tag.count, 100); i++) tag.getValueAt(i);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
result.push({
|
|
88
|
+
title: `Image: ${img.id} - Tiff tags`,
|
|
89
|
+
keys: tiffTags.map(formatTag),
|
|
90
|
+
});
|
|
91
|
+
await img.loadGeoTiffTags();
|
|
92
|
+
if (img.tagsGeo.size > 0) {
|
|
93
|
+
const tiffTagsGeo = [...img.tagsGeo.entries()];
|
|
94
|
+
const keys = tiffTagsGeo.map(([key, value]) => formatGeoTag(key, value));
|
|
95
|
+
if (keys.length > 0) {
|
|
96
|
+
result.push({ title: `Image: ${img.id} - Geo Tiff tags`, keys });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const msg = ActionUtil.formatResult(`\n${c.bold('COG File Info')} - ${c.bold(path.href)}`, result);
|
|
102
|
+
console.log(msg.join('\n'));
|
|
103
|
+
await source.close?.();
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
const TiffImageInfoTable = new CliTable();
|
|
108
|
+
TiffImageInfoTable.add({ name: 'Id', width: 4, get: (_i, index) => String(index) });
|
|
109
|
+
TiffImageInfoTable.add({ name: 'Size', width: 20, get: (i) => `${i.size.width}x${i.size.height}` });
|
|
110
|
+
TiffImageInfoTable.add({
|
|
111
|
+
name: 'Tile Size',
|
|
112
|
+
width: 20,
|
|
113
|
+
get: (i) => `${i.tileSize.width}x${i.tileSize.height}`,
|
|
114
|
+
enabled: (i) => i.isTiled(),
|
|
115
|
+
});
|
|
116
|
+
TiffImageInfoTable.add({
|
|
117
|
+
name: 'Tile Count',
|
|
118
|
+
width: 20,
|
|
119
|
+
get: (i) => `${i.tileCount.x}x${i.tileCount.y} (${i.tileCount.x * i.tileCount.y})`,
|
|
120
|
+
enabled: (i) => i.isTiled(),
|
|
121
|
+
});
|
|
122
|
+
TiffImageInfoTable.add({
|
|
123
|
+
name: 'Strip Count',
|
|
124
|
+
width: 20,
|
|
125
|
+
get: (i) => `${i.tags.get(TiffTagId.StripOffsets)?.count}`,
|
|
126
|
+
enabled: (i) => !i.isTiled(),
|
|
127
|
+
});
|
|
128
|
+
TiffImageInfoTable.add({
|
|
129
|
+
name: 'Resolution',
|
|
130
|
+
width: 20,
|
|
131
|
+
get: (i) => `${round(i.resolution[0])}`,
|
|
132
|
+
enabled: (i) => i.isGeoLocated,
|
|
133
|
+
});
|
|
134
|
+
// Show compression only if it varies between images
|
|
135
|
+
TiffImageInfoTable.add({
|
|
136
|
+
name: 'Compression',
|
|
137
|
+
width: 20,
|
|
138
|
+
get: (i) => i.compression,
|
|
139
|
+
enabled: (i) => {
|
|
140
|
+
const formats = new Set();
|
|
141
|
+
i.tiff.images.forEach((f) => formats.add(f.compression));
|
|
142
|
+
return formats.size > 1;
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
/**
|
|
146
|
+
* Parse out the GDAL Metadata to be more friendly to read
|
|
147
|
+
*
|
|
148
|
+
* TODO using a XML Parser will make this even better
|
|
149
|
+
* @param img
|
|
150
|
+
*/
|
|
151
|
+
function parseGdalMetadata(img) {
|
|
152
|
+
const metadata = img.value(TiffTagId.GdalMetadata);
|
|
153
|
+
if (typeof metadata !== 'string')
|
|
154
|
+
return null;
|
|
155
|
+
if (!metadata.startsWith('<GDALMetadata>'))
|
|
156
|
+
return null;
|
|
157
|
+
return metadata
|
|
158
|
+
.replace('<GDALMetadata>\n', '')
|
|
159
|
+
.replace('</GDALMetadata>\n', '')
|
|
160
|
+
.replace('\n\x00', '')
|
|
161
|
+
.split('\n')
|
|
162
|
+
.map((c) => c.trim());
|
|
163
|
+
}
|
|
164
|
+
function formatTag(tag) {
|
|
165
|
+
const tagName = TiffTagId[tag.id];
|
|
166
|
+
const tagDebug = `(${TiffTagValueType[tag.dataType]}${tag.count > 1 ? ' x' + tag.count : ''}`;
|
|
167
|
+
const key = `${c.dim(toHex(tag.id)).padEnd(7, ' ')} ${String(tagName)} ${c.dim(tagDebug)})`.padEnd(50, ' ');
|
|
168
|
+
if (Array.isArray(tag.value))
|
|
169
|
+
return { key, value: JSON.stringify(tag.value.slice(0, 250)) };
|
|
170
|
+
let tagString = JSON.stringify(tag.value) ?? c.dim('null');
|
|
171
|
+
if (tagString.length > 256)
|
|
172
|
+
tagString = tagString.slice(0, 250) + '...';
|
|
173
|
+
return { key, value: tagString };
|
|
174
|
+
}
|
|
175
|
+
function formatGeoTag(tagId, value) {
|
|
176
|
+
const tagName = TiffTagGeo[tagId];
|
|
177
|
+
const key = `${c.dim(toHex(tagId)).padEnd(7, ' ')} ${String(tagName).padEnd(30)}`;
|
|
178
|
+
if (Array.isArray(value))
|
|
179
|
+
return { key, value: JSON.stringify(value.slice(0, 250)) };
|
|
180
|
+
let tagString = JSON.stringify(value) ?? c.dim('null');
|
|
181
|
+
if (tagString.length > 256)
|
|
182
|
+
tagString = tagString.slice(0, 250) + '...';
|
|
183
|
+
return { key, value: tagString };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Type } from 'cmd-ts';
|
|
2
|
+
export declare const verbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
3
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
4
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/argparser.js").Register & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
5
|
+
export declare const extraVerbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
6
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
7
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/argparser.js").Register & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
8
|
+
export declare const DefaultArgs: {
|
|
9
|
+
verbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
10
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
11
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/argparser.js").Register & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
12
|
+
extraVerbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
13
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
14
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/argparser.js").Register & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
15
|
+
};
|
|
16
|
+
export declare const Url: Type<string, URL>;
|
package/build/common.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { flag } from 'cmd-ts';
|
|
2
|
+
import { pathToFileURL } from 'url';
|
|
3
|
+
export const verbose = flag({ long: 'verbose', description: 'Verbose logging', short: 'v' });
|
|
4
|
+
export const extraVerbose = flag({ long: 'extra-verbose', description: 'Extra verbose logging', short: 'V' });
|
|
5
|
+
export const DefaultArgs = {
|
|
6
|
+
verbose,
|
|
7
|
+
extraVerbose,
|
|
8
|
+
};
|
|
9
|
+
export const Url = {
|
|
10
|
+
async from(s) {
|
|
11
|
+
try {
|
|
12
|
+
return new URL(s);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return pathToFileURL(s);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7F,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAE9G,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAsB;IACpC,KAAK,CAAC,IAAI,CAAC,CAAS;QAClB,IAAI;YACF,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;SACnB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;CACF,CAAC"}
|
package/build/fs.d.ts
ADDED
package/build/fs.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { logger } from './log.js';
|
|
2
|
+
export const FetchLog = {
|
|
3
|
+
name: 'source:log',
|
|
4
|
+
fetch(req, next) {
|
|
5
|
+
this.fetches.push(req);
|
|
6
|
+
this.bytesRead += req.length ?? 0;
|
|
7
|
+
logger.info('Tiff:fetch', { href: req.source.url.href, offset: req.offset, length: req.length });
|
|
8
|
+
return next(req);
|
|
9
|
+
},
|
|
10
|
+
reset() {
|
|
11
|
+
this.fetches = [];
|
|
12
|
+
this.bytesRead = 0;
|
|
13
|
+
},
|
|
14
|
+
fetches: [],
|
|
15
|
+
bytesRead: 0,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=fs.js.map
|
package/build/fs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAsF;IACzG,IAAI,EAAE,YAAY;IAClB,KAAK,CAAC,GAAkB,EAAE,IAAoB;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,CAAC;CACb,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,2 +1,57 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
export declare const cmd: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
2
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
3
|
+
command: "info";
|
|
4
|
+
args: {
|
|
5
|
+
path: URL | undefined;
|
|
6
|
+
tags: boolean;
|
|
7
|
+
offsets: boolean;
|
|
8
|
+
paths: URL[];
|
|
9
|
+
verbose: boolean;
|
|
10
|
+
extraVerbose: boolean;
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
13
|
+
command: "dump";
|
|
14
|
+
args: {
|
|
15
|
+
path: URL | undefined;
|
|
16
|
+
image: number;
|
|
17
|
+
output: URL | undefined;
|
|
18
|
+
paths: URL[];
|
|
19
|
+
verbose: boolean;
|
|
20
|
+
extraVerbose: boolean;
|
|
21
|
+
};
|
|
22
|
+
}>>;
|
|
23
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").Named & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive & import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/helpdoc.js").PrintHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/argparser.js").Register & import("cmd-ts/dist/cjs/runner.js").Handling<{
|
|
24
|
+
command: "info";
|
|
25
|
+
args: {
|
|
26
|
+
path: URL | undefined;
|
|
27
|
+
tags: boolean;
|
|
28
|
+
offsets: boolean;
|
|
29
|
+
paths: URL[];
|
|
30
|
+
verbose: boolean;
|
|
31
|
+
extraVerbose: boolean;
|
|
32
|
+
};
|
|
33
|
+
} | {
|
|
34
|
+
command: "dump";
|
|
35
|
+
args: {
|
|
36
|
+
path: URL | undefined;
|
|
37
|
+
image: number;
|
|
38
|
+
output: URL | undefined;
|
|
39
|
+
paths: URL[];
|
|
40
|
+
verbose: boolean;
|
|
41
|
+
extraVerbose: boolean;
|
|
42
|
+
};
|
|
43
|
+
}, {
|
|
44
|
+
command: "info";
|
|
45
|
+
value: Promise<void>;
|
|
46
|
+
} | {
|
|
47
|
+
command: "dump";
|
|
48
|
+
value: Promise<void>;
|
|
49
|
+
}> & {
|
|
50
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
51
|
+
command: "info";
|
|
52
|
+
value: Promise<void>;
|
|
53
|
+
} | {
|
|
54
|
+
command: "dump";
|
|
55
|
+
value: Promise<void>;
|
|
56
|
+
}>>;
|
|
57
|
+
};
|
package/build/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { subcommands } from 'cmd-ts';
|
|
2
|
+
import { commandInfo } from './commands/info.js';
|
|
3
|
+
import { commandDump } from './commands/dump.js';
|
|
4
|
+
export const cmd = subcommands({
|
|
5
|
+
name: 'cogeotiff',
|
|
6
|
+
description: 'COG utilities',
|
|
7
|
+
cmds: {
|
|
8
|
+
info: commandInfo,
|
|
9
|
+
dump: commandDump,
|
|
10
|
+
},
|
|
8
11
|
});
|
|
9
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC;IAC7B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,eAAe;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,WAAW;KAClB;CACF,CAAC,CAAC"}
|
package/build/log.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SourceCache, SourceChunk } from '@chunkd/middleware';
|
|
2
|
+
import { log } from '@linzjs/tracing';
|
|
3
|
+
export declare const sourceCache: SourceCache;
|
|
4
|
+
export declare const sourceChunk: SourceChunk;
|
|
5
|
+
export declare function setupLogger(cfg: {
|
|
6
|
+
verbose?: boolean;
|
|
7
|
+
extraVerbose?: boolean;
|
|
8
|
+
}): typeof log;
|
|
9
|
+
export declare const logger: import("@linzjs/tracing/build/src/ot.log.js").OtLogger;
|
|
10
|
+
/** S3 client adds approx 300ms to the cli startup time, so only register it if needed */
|
|
11
|
+
export declare function ensureS3fs(): Promise<void>;
|