@basemaps/cli-raster 8.6.0 → 8.11.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/build/cogify/__test__/{extract.test.js → topo/extract.test.js} +8 -2
- package/build/cogify/__test__/topo/extract.test.js.map +1 -0
- package/build/cogify/__test__/topo/slug.test.d.ts +1 -0
- package/build/cogify/__test__/topo/slug.test.js +39 -0
- package/build/cogify/__test__/topo/slug.test.js.map +1 -0
- package/build/cogify/cli/__test__/cli.charts.test.d.ts +1 -0
- package/build/cogify/cli/__test__/cli.charts.test.js +131 -0
- package/build/cogify/cli/__test__/cli.charts.test.js.map +1 -0
- package/build/cogify/cli/__test__/cli.cover.test.js +13 -0
- package/build/cogify/cli/__test__/cli.cover.test.js.map +1 -1
- package/build/cogify/cli/__test__/cli.topo.test.js +1 -0
- package/build/cogify/cli/__test__/cli.topo.test.js.map +1 -1
- package/build/cogify/cli/cli.charts.d.ts +33 -0
- package/build/cogify/cli/cli.charts.js +345 -0
- package/build/cogify/cli/cli.charts.js.map +1 -0
- package/build/cogify/cli/cli.cog.js +8 -7
- package/build/cogify/cli/cli.cog.js.map +1 -1
- package/build/cogify/cli/cli.cover.d.ts +4 -2
- package/build/cogify/cli/cli.cover.js +24 -3
- package/build/cogify/cli/cli.cover.js.map +1 -1
- package/build/cogify/cli/cli.topo.d.ts +8 -3
- package/build/cogify/cli/cli.topo.js +25 -18
- package/build/cogify/cli/cli.topo.js.map +1 -1
- package/build/cogify/cli.d.ts +36 -2
- package/build/cogify/cli.js +2 -0
- package/build/cogify/cli.js.map +1 -1
- package/build/cogify/covering/covering.js +2 -2
- package/build/cogify/covering/covering.js.map +1 -1
- package/build/cogify/covering/tile.cover.d.ts +6 -1
- package/build/cogify/covering/tile.cover.js +24 -8
- package/build/cogify/covering/tile.cover.js.map +1 -1
- package/build/cogify/gdal/gdal.command.d.ts +8 -2
- package/build/cogify/gdal/gdal.command.js +52 -9
- package/build/cogify/gdal/gdal.command.js.map +1 -1
- package/build/cogify/gdal/gdal.runner.d.ts +1 -1
- package/build/cogify/gdal/gdal.runner.js +1 -1
- package/build/cogify/gdal/gdal.runner.js.map +1 -1
- package/build/cogify/gdal/ogr2ogr.command.d.ts +20 -0
- package/build/cogify/gdal/ogr2ogr.command.js +57 -0
- package/build/cogify/gdal/ogr2ogr.command.js.map +1 -0
- package/build/cogify/stac.d.ts +32 -18
- package/build/cogify/stac.js.map +1 -1
- package/build/cogify/topo/extract.d.ts +2 -2
- package/build/cogify/topo/extract.js +63 -20
- package/build/cogify/topo/extract.js.map +1 -1
- package/build/cogify/topo/slug.d.ts +6 -4
- package/build/cogify/topo/slug.js +43 -8
- package/build/cogify/topo/slug.js.map +1 -1
- package/build/cogify/topo/stac.creation.d.ts +3 -2
- package/build/cogify/topo/stac.creation.js +5 -5
- package/build/cogify/topo/stac.creation.js.map +1 -1
- package/build/preset.d.ts +67 -6
- package/build/preset.js +41 -0
- package/build/preset.js.map +1 -1
- package/dist/index.cjs +5484 -1897
- package/package.json +7 -7
- package/build/cogify/__test__/extract.test.js.map +0 -1
- /package/build/cogify/__test__/{extract.test.d.ts → topo/extract.test.d.ts} +0 -0
|
@@ -8,14 +8,17 @@ export interface TopoCreationContext {
|
|
|
8
8
|
target: URL;
|
|
9
9
|
/** Imagery title */
|
|
10
10
|
title: string;
|
|
11
|
-
/** Input topo imagery scale
|
|
12
|
-
mapSeries:
|
|
11
|
+
/** Input topo imagery scale: topo25, topo50, or topo250*/
|
|
12
|
+
mapSeries: MapSeries;
|
|
13
|
+
/** Input topo imagery format: gridded, or gridless */
|
|
14
|
+
format: Format;
|
|
13
15
|
/** force output if not in argo */
|
|
14
16
|
output?: URL;
|
|
15
17
|
/** Logger to trace creation */
|
|
16
18
|
logger: LogType;
|
|
17
19
|
}
|
|
18
|
-
export type
|
|
20
|
+
export type Format = 'gridded' | 'gridless';
|
|
21
|
+
export type MapSeries = 'topo25' | 'topo50' | 'topo250';
|
|
19
22
|
/**
|
|
20
23
|
* Parses a source path directory topographic maps tiffs and writes out a directory structure
|
|
21
24
|
* of StacItem and StacCollection files to the target path.
|
|
@@ -30,6 +33,7 @@ export declare const TopoStacCreationCommand: Partial<import("cmd-ts/dist/cjs/ar
|
|
|
30
33
|
title: string | undefined;
|
|
31
34
|
target: URL;
|
|
32
35
|
mapSeries: string;
|
|
36
|
+
format: string;
|
|
33
37
|
latestOnly: boolean;
|
|
34
38
|
output: URL | undefined;
|
|
35
39
|
paths: URL[];
|
|
@@ -40,6 +44,7 @@ export declare const TopoStacCreationCommand: Partial<import("cmd-ts/dist/cjs/ar
|
|
|
40
44
|
title: string | undefined;
|
|
41
45
|
target: URL;
|
|
42
46
|
mapSeries: string;
|
|
47
|
+
format: string;
|
|
43
48
|
latestOnly: boolean;
|
|
44
49
|
output: URL | undefined;
|
|
45
50
|
paths: URL[];
|
|
@@ -3,13 +3,16 @@ import { Bounds } from '@basemaps/geo';
|
|
|
3
3
|
import { fsa } from '@basemaps/shared';
|
|
4
4
|
import { getLogger, isArgo, logArguments, Url, UrlFolder } from '@basemaps/shared';
|
|
5
5
|
import { CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
6
|
-
import { boolean, command, flag, option, optional, restPositionals, string } from 'cmd-ts';
|
|
6
|
+
import { boolean, command, flag, oneOf, option, optional, restPositionals, string } from 'cmd-ts';
|
|
7
7
|
import pLimit from 'p-limit';
|
|
8
8
|
import { brokenTiffs, extractLatestTiffItemsByMapCode, extractTiffItemsByEpsg } from '../topo/extract.js';
|
|
9
9
|
import { mapEpsgToSlug } from '../topo/slug.js';
|
|
10
10
|
import { createStacCollection, createStacItems, writeStacFiles } from '../topo/stac.creation.js';
|
|
11
11
|
const Q = pLimit(10);
|
|
12
|
+
const Format = ['gridded', 'gridless'];
|
|
13
|
+
const MapSeries = ['topo25', 'topo50', 'topo250'];
|
|
12
14
|
const MapSeriesTitle = {
|
|
15
|
+
topo25: 'Raster Topographic Maps 25k',
|
|
13
16
|
topo50: 'Raster Topographic Maps 50k',
|
|
14
17
|
topo250: 'Raster Topographic Maps 250k',
|
|
15
18
|
};
|
|
@@ -31,7 +34,7 @@ export const TopoStacCreationCommand = command({
|
|
|
31
34
|
title: option({
|
|
32
35
|
type: optional(string),
|
|
33
36
|
long: 'title',
|
|
34
|
-
description: 'Imported imagery title
|
|
37
|
+
description: 'Imported imagery title. By default, the title is derived from the map series name',
|
|
35
38
|
}),
|
|
36
39
|
target: option({
|
|
37
40
|
type: UrlFolder,
|
|
@@ -39,9 +42,14 @@ export const TopoStacCreationCommand = command({
|
|
|
39
42
|
description: 'Target location for the output files',
|
|
40
43
|
}),
|
|
41
44
|
mapSeries: option({
|
|
42
|
-
type:
|
|
45
|
+
type: oneOf(MapSeries),
|
|
43
46
|
long: 'map-series',
|
|
44
|
-
description:
|
|
47
|
+
description: `Map series scale. Either ${MapSeries.join(', ')}`,
|
|
48
|
+
}),
|
|
49
|
+
format: option({
|
|
50
|
+
type: oneOf(Format),
|
|
51
|
+
long: 'format',
|
|
52
|
+
description: `Map sheet format. Either ${Format.join(', ')}`,
|
|
45
53
|
}),
|
|
46
54
|
latestOnly: flag({
|
|
47
55
|
type: boolean,
|
|
@@ -64,16 +72,16 @@ export const TopoStacCreationCommand = command({
|
|
|
64
72
|
const logger = getLogger(this, args, 'cli-raster');
|
|
65
73
|
const startTime = performance.now();
|
|
66
74
|
logger.info('TopoCogify:Start');
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
75
|
+
const mapSeries = args.mapSeries;
|
|
76
|
+
const format = args.format;
|
|
77
|
+
const title = args.title ?? MapSeriesTitle[mapSeries];
|
|
71
78
|
const ctx = {
|
|
72
79
|
latestOnly: args.latestOnly,
|
|
73
80
|
paths: args.paths,
|
|
74
81
|
target: args.target,
|
|
75
82
|
title,
|
|
76
|
-
mapSeries
|
|
83
|
+
mapSeries,
|
|
84
|
+
format,
|
|
77
85
|
output: args.output,
|
|
78
86
|
logger,
|
|
79
87
|
};
|
|
@@ -121,26 +129,25 @@ async function loadTiffsToCreateStacs(ctx) {
|
|
|
121
129
|
throw new Error('No TIFF files found in locations : ' + source.map((m) => m.href).join(', '));
|
|
122
130
|
logger.info({ count: tiffs.length, hrefs: source.map((m) => m.href) }, 'LoadTiffs:End');
|
|
123
131
|
logger.info('ExtractTiffs:Start');
|
|
124
|
-
const allTiffItems = extractTiffItemsByEpsg(tiffs, logger);
|
|
132
|
+
const allTiffItems = await extractTiffItemsByEpsg(tiffs, logger);
|
|
125
133
|
logger.info({ foundEpsgs: [...allTiffItems.keys()] }, 'ExtractTiffs:End');
|
|
126
134
|
const epsgDirectoryPaths = [];
|
|
127
135
|
const stacItemPaths = [];
|
|
128
136
|
// create and write stac items and collections
|
|
129
|
-
const
|
|
137
|
+
const mapSeries = ctx.mapSeries;
|
|
130
138
|
// TODO: resolution is defined from the GSD over the map scale,
|
|
131
139
|
// and can be extracted in the future if we want to process higher resolution maps
|
|
132
|
-
const resolution =
|
|
140
|
+
const resolution = `${ctx.format}_600dpi`;
|
|
133
141
|
for (const [epsg, tiffItems] of allTiffItems.entries()) {
|
|
134
142
|
logger?.info({ epsg }, 'CreateStacFiles:Start');
|
|
135
143
|
// identify latest tiff items
|
|
136
144
|
const latestTiffItems = extractLatestTiffItemsByMapCode(tiffItems);
|
|
137
145
|
// create stac items
|
|
138
|
-
const stacItems = createStacItems(
|
|
146
|
+
const stacItems = createStacItems(mapSeries, resolution, tiffItems, latestTiffItems, logger);
|
|
139
147
|
// convert epsg to slug
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
148
|
+
const linzSlug = mapEpsgToSlug(mapSeries, epsg);
|
|
149
|
+
if (linzSlug == null)
|
|
142
150
|
throw new Error(`Failed to map epsg code '${epsg.code}' to a slug`);
|
|
143
|
-
const linzSlug = `${scale}-${epsgSlug}`;
|
|
144
151
|
// extract bounds
|
|
145
152
|
const allBounds = tiffItems.map((item) => item.bounds);
|
|
146
153
|
const latestBounds = Array.from(latestTiffItems.values()).map((item) => item.bounds);
|
|
@@ -151,13 +158,13 @@ async function loadTiffsToCreateStacs(ctx) {
|
|
|
151
158
|
logger?.info({ epsg }, 'CreateStacFiles:End');
|
|
152
159
|
// Write all stac items and collections
|
|
153
160
|
if (!ctx.latestOnly) {
|
|
154
|
-
const allTargetURL = new URL(`${
|
|
161
|
+
const allTargetURL = new URL(`${mapSeries}/${resolution}/${epsg.code}/`, target);
|
|
155
162
|
logger?.info({ epsg, target: allTargetURL.href }, 'WriteStacFiles:Start');
|
|
156
163
|
const allPaths = await writeStacFiles(allTargetURL, stacItems.all, collection, logger);
|
|
157
164
|
stacItemPaths.push(...allPaths.items);
|
|
158
165
|
}
|
|
159
166
|
// Write latest stac items and collections
|
|
160
|
-
const latestTargetURL = new URL(`${
|
|
167
|
+
const latestTargetURL = new URL(`${mapSeries}_latest/${resolution}/${epsg.code}/`, target);
|
|
161
168
|
epsgDirectoryPaths.push({ epsg: epsg.code.toString(), url: latestTargetURL });
|
|
162
169
|
logger?.info({ epsg, target: latestTargetURL.href }, 'WriteStacFiles:Start');
|
|
163
170
|
const latestPaths = await writeStacFiles(latestTargetURL, stacItems.latest, latestCollection, logger);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.topo.js","sourceRoot":"","sources":["../../../src/cogify/cli/cli.topo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.topo.js","sourceRoot":"","sources":["../../../src/cogify/cli/cli.topo.ts"],"names":[],"mappings":"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"}
|
package/build/cogify/cli.d.ts
CHANGED
|
@@ -6,7 +6,8 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
6
6
|
cutline: URL | undefined;
|
|
7
7
|
cutlineBlend: number;
|
|
8
8
|
paths: URL[];
|
|
9
|
-
preset:
|
|
9
|
+
preset: "lzw" | "webp" | "webp_80" | "lerc_1mm" | "lerc_10mm" | "zstd_17";
|
|
10
|
+
presetBand: string | undefined;
|
|
10
11
|
tileMatrix: string;
|
|
11
12
|
baseZoomOffset: number | undefined;
|
|
12
13
|
requireStacCollection: boolean;
|
|
@@ -39,12 +40,25 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
39
40
|
title: string | undefined;
|
|
40
41
|
target: URL;
|
|
41
42
|
mapSeries: string;
|
|
43
|
+
format: string;
|
|
42
44
|
latestOnly: boolean;
|
|
43
45
|
output: URL | undefined;
|
|
44
46
|
paths: URL[];
|
|
45
47
|
verbose: boolean;
|
|
46
48
|
extraVerbose: boolean;
|
|
47
49
|
};
|
|
50
|
+
} | {
|
|
51
|
+
command: "charts";
|
|
52
|
+
args: {
|
|
53
|
+
source: URL | undefined;
|
|
54
|
+
target: URL;
|
|
55
|
+
cutline: URL;
|
|
56
|
+
backup: URL;
|
|
57
|
+
bufferPixels: number;
|
|
58
|
+
paths: URL[];
|
|
59
|
+
verbose: boolean;
|
|
60
|
+
extraVerbose: boolean;
|
|
61
|
+
};
|
|
48
62
|
}>>;
|
|
49
63
|
} & 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<{
|
|
50
64
|
command: "cover";
|
|
@@ -53,7 +67,8 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
53
67
|
cutline: URL | undefined;
|
|
54
68
|
cutlineBlend: number;
|
|
55
69
|
paths: URL[];
|
|
56
|
-
preset:
|
|
70
|
+
preset: "lzw" | "webp" | "webp_80" | "lerc_1mm" | "lerc_10mm" | "zstd_17";
|
|
71
|
+
presetBand: string | undefined;
|
|
57
72
|
tileMatrix: string;
|
|
58
73
|
baseZoomOffset: number | undefined;
|
|
59
74
|
requireStacCollection: boolean;
|
|
@@ -86,12 +101,25 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
86
101
|
title: string | undefined;
|
|
87
102
|
target: URL;
|
|
88
103
|
mapSeries: string;
|
|
104
|
+
format: string;
|
|
89
105
|
latestOnly: boolean;
|
|
90
106
|
output: URL | undefined;
|
|
91
107
|
paths: URL[];
|
|
92
108
|
verbose: boolean;
|
|
93
109
|
extraVerbose: boolean;
|
|
94
110
|
};
|
|
111
|
+
} | {
|
|
112
|
+
command: "charts";
|
|
113
|
+
args: {
|
|
114
|
+
source: URL | undefined;
|
|
115
|
+
target: URL;
|
|
116
|
+
cutline: URL;
|
|
117
|
+
backup: URL;
|
|
118
|
+
bufferPixels: number;
|
|
119
|
+
paths: URL[];
|
|
120
|
+
verbose: boolean;
|
|
121
|
+
extraVerbose: boolean;
|
|
122
|
+
};
|
|
95
123
|
}, {
|
|
96
124
|
command: "cover";
|
|
97
125
|
value: Promise<void>;
|
|
@@ -104,6 +132,9 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
104
132
|
} | {
|
|
105
133
|
command: "topo";
|
|
106
134
|
value: Promise<void>;
|
|
135
|
+
} | {
|
|
136
|
+
command: "charts";
|
|
137
|
+
value: Promise<void>;
|
|
107
138
|
}> & {
|
|
108
139
|
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
109
140
|
command: "cover";
|
|
@@ -117,5 +148,8 @@ export declare const CogifyCli: Partial<import("cmd-ts/dist/cjs/argparser.js").R
|
|
|
117
148
|
} | {
|
|
118
149
|
command: "topo";
|
|
119
150
|
value: Promise<void>;
|
|
151
|
+
} | {
|
|
152
|
+
command: "charts";
|
|
153
|
+
value: Promise<void>;
|
|
120
154
|
}>>;
|
|
121
155
|
};
|
package/build/cogify/cli.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { subcommands } from 'cmd-ts';
|
|
2
|
+
import { ChartsCreationCommand } from './cli/cli.charts.js';
|
|
2
3
|
import { BasemapsCogifyCreateCommand } from './cli/cli.cog.js';
|
|
3
4
|
import { BasemapsCogifyCoverCommand } from './cli/cli.cover.js';
|
|
4
5
|
import { TopoStacCreationCommand } from './cli/cli.topo.js';
|
|
@@ -10,6 +11,7 @@ export const CogifyCli = subcommands({
|
|
|
10
11
|
create: BasemapsCogifyCreateCommand,
|
|
11
12
|
validate: BasemapsCogifyValidateCommand,
|
|
12
13
|
topo: TopoStacCreationCommand,
|
|
14
|
+
charts: ChartsCreationCommand,
|
|
13
15
|
},
|
|
14
16
|
});
|
|
15
17
|
//# sourceMappingURL=cli.js.map
|
package/build/cogify/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cogify/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;IACnC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE;QACJ,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,2BAA2B;QACnC,QAAQ,EAAE,6BAA6B;QACvC,IAAI,EAAE,uBAAuB;KAC9B;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cogify/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;IACnC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE;QACJ,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,2BAA2B;QACnC,QAAQ,EAAE,6BAA6B;QACvC,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,qBAAqB;KAC9B;CACF,CAAC,CAAC"}
|
|
@@ -100,8 +100,8 @@ export function createCovering(ctx) {
|
|
|
100
100
|
// Is this tile a different zoom level to our target
|
|
101
101
|
const zDiff = tile.z - ctx.targetZoom;
|
|
102
102
|
// Count the number of pixels in the output tiff that would be used
|
|
103
|
-
const
|
|
104
|
-
const pixelCount = (tileArea * areaPercent) /
|
|
103
|
+
const tileScaleX = tileSource.width / ctx.tileMatrix.tileWidth;
|
|
104
|
+
const pixelCount = (tileArea * areaPercent) / tileScaleX;
|
|
105
105
|
if (areaPercent < minCoveragePercent && zDiff < maxZoomDifference) {
|
|
106
106
|
// Not enough coverage was found with this tile, use a more zoomed in tile and try again
|
|
107
107
|
addChildren(tile, todo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covering.js","sourceRoot":"","sources":["../../../src/cogify/covering/covering.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"covering.js","sourceRoot":"","sources":["../../../src/cogify/covering/covering.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { ConfigImageryTiff } from '@basemaps/config-loader';
|
|
|
3
3
|
import { TileMatrixSet } from '@basemaps/geo';
|
|
4
4
|
import { LogType } from '@basemaps/shared';
|
|
5
5
|
import { Metrics } from '@linzjs/metrics';
|
|
6
|
+
import { GdalBandPreset, PresetName } from '../../preset.js';
|
|
6
7
|
import { CogifyStacCollection, CogifyStacItem } from '../stac.js';
|
|
7
8
|
import { CutlineOptimizer } from './cutline.js';
|
|
8
9
|
export interface TileCoverContext {
|
|
@@ -19,7 +20,9 @@ export interface TileCoverContext {
|
|
|
19
20
|
/** Optional logger to trace covering creation */
|
|
20
21
|
logger?: LogType;
|
|
21
22
|
/** GDAL configuration preset */
|
|
22
|
-
preset:
|
|
23
|
+
preset: PresetName;
|
|
24
|
+
/** GDAL Band configuration preset */
|
|
25
|
+
presetBands?: GdalBandPreset[];
|
|
23
26
|
/** Optional color with which to replace all transparent COG pixels */
|
|
24
27
|
background?: Rgba;
|
|
25
28
|
/**
|
|
@@ -35,4 +38,6 @@ export interface TileCoverResult {
|
|
|
35
38
|
/** GeoJSON features of all the source imagery */
|
|
36
39
|
source: GeoJSON.FeatureCollection;
|
|
37
40
|
}
|
|
41
|
+
export declare const TargetZoomOffsetDefault = 7;
|
|
42
|
+
export declare const TargetZoomOffset: Partial<Record<PresetName, number>>;
|
|
38
43
|
export declare function createTileCover(ctx: TileCoverContext): Promise<TileCoverResult>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Bounds, Projection, ProjectionLoader, TileId } from '@basemaps/geo';
|
|
1
|
+
import { Bounds, EpsgCode, Projection, ProjectionLoader, TileId } from '@basemaps/geo';
|
|
2
2
|
import { fsa, urlToString } from '@basemaps/shared';
|
|
3
3
|
import { CliDate, CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
4
|
-
import { intersection, toFeatureCollection, union } from '@linzjs/geojson';
|
|
4
|
+
import { intersection, multiPolygonToWgs84, toFeatureCollection, union } from '@linzjs/geojson';
|
|
5
5
|
import { Presets } from '../../preset.js';
|
|
6
6
|
import { createFileStats } from '../stac.js';
|
|
7
7
|
import { createCovering } from './covering.js';
|
|
@@ -31,16 +31,25 @@ function getTargetBaseZoom(tileMatrix, resolution, targetZoomOffset) {
|
|
|
31
31
|
return Projection.getTiffResZoom(tileMatrix, resolution);
|
|
32
32
|
return Projection.getTiffResZoom(tileMatrix, resolution) + targetZoomOffset;
|
|
33
33
|
}
|
|
34
|
+
// The base zoom is 256x256 pixels at its resolution, we are trying to find a image that is <32k pixels wide/high
|
|
35
|
+
// zooming out 7 levels converts a 256x256 image into 32k x 32k image
|
|
36
|
+
// 256 * 2 ** 7 = 32,768 - 256x256 tile
|
|
37
|
+
// 512 * 2 ** 6 = 32,768 - 512x512 tile
|
|
38
|
+
// This math only works for highly compressed RGB imagery, for multispectrial imagery small tiles need to be made
|
|
39
|
+
export const TargetZoomOffsetDefault = 7;
|
|
40
|
+
// ZSTD files are generally larger than webp or LERC
|
|
41
|
+
export const TargetZoomOffset = {
|
|
42
|
+
zstd_17: 6,
|
|
43
|
+
lzw: 6,
|
|
44
|
+
};
|
|
34
45
|
export async function createTileCover(ctx) {
|
|
35
46
|
// Ensure we have the projection loaded for the source imagery
|
|
36
47
|
await ProjectionLoader.load(ctx.imagery.projection);
|
|
48
|
+
await ProjectionLoader.load(EpsgCode.Wgs84);
|
|
37
49
|
// Find the zoom level that is at least as good as the source imagery
|
|
38
50
|
const targetBaseZoom = getTargetBaseZoom(ctx.tileMatrix, ctx.imagery.gsd, ctx.targetZoomOffset);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// 256 * 2 ** 7 = 32,768 - 256x256 tile
|
|
42
|
-
// 512 * 2 ** 6 = 32,768 - 512x512 tile
|
|
43
|
-
const optimalCoveringZoom = Math.max(1, targetBaseZoom - 7); // z12 from z19
|
|
51
|
+
const targetZoomOffset = TargetZoomOffset[ctx.preset] ?? 7;
|
|
52
|
+
const optimalCoveringZoom = Math.max(1, targetBaseZoom - targetZoomOffset); // z12 from z19
|
|
44
53
|
ctx.logger?.debug({ targetBaseZoom, cogOverZoom: optimalCoveringZoom }, 'Imagery:ZoomLevel');
|
|
45
54
|
const sourceBounds = projectPolygon(polygonFromBounds(ctx.imagery.files), ctx.imagery.projection, ctx.tileMatrix.projection.code);
|
|
46
55
|
ctx.logger?.debug('Cutline:Apply');
|
|
@@ -76,7 +85,12 @@ export async function createTileCover(ctx) {
|
|
|
76
85
|
const bounds = ctx.tileMatrix.tileToSourceBounds(tile);
|
|
77
86
|
// Scale the tile bounds slightly to ensure we get all relevant imagery
|
|
78
87
|
const scaledBounds = bounds.scaleFromCenter(1.05);
|
|
79
|
-
const
|
|
88
|
+
const projection = Projection.get(ctx.tileMatrix);
|
|
89
|
+
// Ensure the bounds are slipped as multipolygons when crossing the antimeridian
|
|
90
|
+
const wsg84Bounds = multiPolygonToWgs84([scaledBounds.toPolygon()], projection.toWgs84, true);
|
|
91
|
+
// Covert the wsg84 bounds back to the source projection
|
|
92
|
+
const tileBounds = Projection.get(EpsgCode.Wgs84).projectMultipolygon(wsg84Bounds, Projection.get(ctx.imagery.projection));
|
|
93
|
+
// Find all the source imagery that intersects this tile
|
|
80
94
|
const source = imageryBounds.filter((f) => intersection(tileBounds, f.polygon).length > 0);
|
|
81
95
|
const feature = Projection.get(ctx.tileMatrix).boundsToGeoJsonFeature(bounds);
|
|
82
96
|
const tileId = TileId.fromTile(tile);
|
|
@@ -101,9 +115,11 @@ export async function createTileCover(ctx) {
|
|
|
101
115
|
'linz_basemaps:options': {
|
|
102
116
|
preset: ctx.preset,
|
|
103
117
|
...Presets[ctx.preset].options,
|
|
118
|
+
presetBands: ctx.presetBands,
|
|
104
119
|
tile,
|
|
105
120
|
tileMatrix: ctx.tileMatrix.identifier,
|
|
106
121
|
sourceEpsg: ctx.imagery.projection,
|
|
122
|
+
sourceBands: ctx.imagery.bands,
|
|
107
123
|
zoomLevel: targetBaseZoom,
|
|
108
124
|
},
|
|
109
125
|
'linz_basemaps:generated': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.cover.js","sourceRoot":"","sources":["../../../src/cogify/covering/tile.cover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"tile.cover.js","sourceRoot":"","sources":["../../../src/cogify/covering/tile.cover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Rgba } from '@basemaps/config';
|
|
2
|
-
import { EpsgCode } from '@basemaps/geo';
|
|
2
|
+
import { EpsgCode, TileMatrixSet } from '@basemaps/geo';
|
|
3
3
|
import { CogifyCreationOptions } from '../stac.js';
|
|
4
4
|
import { GdalCommand } from './gdal.runner.js';
|
|
5
|
-
export declare function gdalBuildVrt(targetVrt: URL, source: URL[], addalpha
|
|
5
|
+
export declare function gdalBuildVrt(targetVrt: URL, source: URL[], addalpha: boolean): GdalCommand;
|
|
6
6
|
export declare function gdalBuildVrtWarp(targetVrt: URL, sourceVrt: URL, sourceProjection: EpsgCode, cutline: {
|
|
7
7
|
url: URL | null;
|
|
8
8
|
blend: number;
|
|
@@ -25,3 +25,9 @@ export declare function gdalCreate(targetTiff: URL, color: Rgba, opt: CogifyCrea
|
|
|
25
25
|
* This is specific configuration to LINZ's topo50 and 250 mapsheets
|
|
26
26
|
*/
|
|
27
27
|
export declare function gdalBuildTopoRasterCommands(targetTiff: URL, sourceVrt: URL, opt: CogifyCreationOptions, width: number, height: number): GdalCommand;
|
|
28
|
+
/**
|
|
29
|
+
* Standardized gdalwarp command for charts mapsheets
|
|
30
|
+
*
|
|
31
|
+
* Reproject the charts tif with the cutline applied.
|
|
32
|
+
*/
|
|
33
|
+
export declare function gdalBuildChartsCommand(target: URL, source: URL, cutline: URL, tileMatrix: TileMatrixSet): GdalCommand;
|
|
@@ -9,7 +9,8 @@ const isPowerOfTwo = (x) => (x & (x - 1)) === 0;
|
|
|
9
9
|
* of empty space is rendered at the edge of every mapsheet.
|
|
10
10
|
*
|
|
11
11
|
*/
|
|
12
|
-
const
|
|
12
|
+
const PixelTrimTop = 1;
|
|
13
|
+
const PixelTrimRight = 4;
|
|
13
14
|
export function gdalBuildVrt(targetVrt, source, addalpha) {
|
|
14
15
|
if (source.length === 0)
|
|
15
16
|
throw new Error('No source files given for :' + targetVrt.href);
|
|
@@ -32,8 +33,6 @@ export function gdalBuildVrtWarp(targetVrt, sourceVrt, sourceProjection, cutline
|
|
|
32
33
|
command: 'gdalwarp',
|
|
33
34
|
args: [
|
|
34
35
|
['-of', 'vrt'], // Output as a VRT
|
|
35
|
-
// ['-co', 'compress=lzw'],
|
|
36
|
-
// ['-co', 'bigtiff=yes'],
|
|
37
36
|
'-multi', // Mutithread IO
|
|
38
37
|
['-wo', 'NUM_THREADS=ALL_CPUS'], // Multithread the warp
|
|
39
38
|
['-s_srs', Epsg.get(sourceProjection).toEpsgString()], // Source EPSG
|
|
@@ -49,6 +48,24 @@ export function gdalBuildVrtWarp(targetVrt, sourceVrt, sourceProjection, cutline
|
|
|
49
48
|
.map(String),
|
|
50
49
|
};
|
|
51
50
|
}
|
|
51
|
+
function getCompressionArgs(cfg) {
|
|
52
|
+
if (cfg.compression === 'lerc') {
|
|
53
|
+
return [
|
|
54
|
+
['-co', `MAX_Z_ERROR=${cfg.maxZError}`],
|
|
55
|
+
['-co', `MAX_Z_ERROR_OVERVIEW=${cfg.maxZErrorOverview}`],
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
if (cfg.compression === 'zstd') {
|
|
59
|
+
return [cfg.predictor ? ['-co', `PREDICTOR=${cfg.predictor}`] : [], ['-co', `LEVEL=${cfg.level}`]];
|
|
60
|
+
}
|
|
61
|
+
if (cfg.compression === 'webp' || cfg.compression === 'jpeg') {
|
|
62
|
+
return [['-co', `QUALITY=${cfg.quality}`]];
|
|
63
|
+
}
|
|
64
|
+
if (cfg.compression === 'lzw') {
|
|
65
|
+
return [cfg.predictor ? ['-co', `PREDICTOR=${cfg.predictor}`] : []];
|
|
66
|
+
}
|
|
67
|
+
throw new Error('Unknown compression preset:' + String(cfg['compression']));
|
|
68
|
+
}
|
|
52
69
|
export function gdalBuildCog(targetTiff, sourceVrt, opt) {
|
|
53
70
|
const cfg = { ...Presets[opt.preset], ...opt };
|
|
54
71
|
const tileMatrix = TileMatrixSets.find(cfg.tileMatrix);
|
|
@@ -68,7 +85,6 @@ export function gdalBuildCog(targetTiff, sourceVrt, opt) {
|
|
|
68
85
|
args: [
|
|
69
86
|
['-of', 'COG'],
|
|
70
87
|
['-co', 'NUM_THREADS=ALL_CPUS'], // Use all CPUS
|
|
71
|
-
['--config', 'GDAL_NUM_THREADS', 'all_cpus'], // Also required to NUM_THREADS till gdal 3.7.x
|
|
72
88
|
['-co', 'BIGTIFF=IF_NEEDED'], // BigTiff is somewhat slower and most (All?) of the COGS should be well below 4GB
|
|
73
89
|
['-co', 'ADD_ALPHA=YES'],
|
|
74
90
|
/**
|
|
@@ -77,16 +93,15 @@ export function gdalBuildCog(targetTiff, sourceVrt, opt) {
|
|
|
77
93
|
*/
|
|
78
94
|
['-co', 'OVERVIEWS=IGNORE_EXISTING'],
|
|
79
95
|
['-co', `BLOCKSIZE=${cfg.blockSize}`],
|
|
80
|
-
// ['-co', 'RESAMPLING=cubic'],
|
|
81
96
|
['-co', `WARP_RESAMPLING=${cfg.warpResampling}`],
|
|
82
97
|
['-co', `OVERVIEW_RESAMPLING=${cfg.overviewResampling}`],
|
|
83
98
|
['-co', `COMPRESS=${cfg.compression}`],
|
|
84
|
-
cfg
|
|
85
|
-
cfg.
|
|
86
|
-
cfg.maxZErrorOverview ? ['-co', `MAX_Z_ERROR_OVERVIEW=${cfg.maxZErrorOverview}`] : undefined,
|
|
99
|
+
...getCompressionArgs(cfg),
|
|
100
|
+
cfg.presetBands ? ['-colorinterp', cfg.presetBands.join(',')] : undefined,
|
|
87
101
|
['-co', 'SPARSE_OK=YES'],
|
|
88
102
|
['-co', `TARGET_SRS=${tileMatrix.projection.toEpsgString()}`],
|
|
89
103
|
['-co', `EXTENT=${tileExtent.join(',')},`],
|
|
104
|
+
['-stats'],
|
|
90
105
|
['-tr', targetResolution, targetResolution],
|
|
91
106
|
urlToString(sourceVrt),
|
|
92
107
|
urlToString(targetTiff),
|
|
@@ -148,7 +163,7 @@ export function gdalBuildTopoRasterCommands(targetTiff, sourceVrt, opt, width, h
|
|
|
148
163
|
['-q'], // Supress non-error output
|
|
149
164
|
['-stats'], // Force stats (re)computation
|
|
150
165
|
['-of', 'COG'], // Output format
|
|
151
|
-
['-srcwin',
|
|
166
|
+
['-srcwin', 0, PixelTrimTop, width - PixelTrimRight, height - PixelTrimTop],
|
|
152
167
|
['-a_srs', `EPSG:${opt.sourceEpsg}`],
|
|
153
168
|
// https://gdal.org/en/latest/drivers/raster/cog.html#creation-options
|
|
154
169
|
['-co', 'BIGTIFF=NO'],
|
|
@@ -172,4 +187,32 @@ export function gdalBuildTopoRasterCommands(targetTiff, sourceVrt, opt, width, h
|
|
|
172
187
|
};
|
|
173
188
|
return command;
|
|
174
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Standardized gdalwarp command for charts mapsheets
|
|
192
|
+
*
|
|
193
|
+
* Reproject the charts tif with the cutline applied.
|
|
194
|
+
*/
|
|
195
|
+
export function gdalBuildChartsCommand(target, source, cutline, tileMatrix) {
|
|
196
|
+
return {
|
|
197
|
+
output: target,
|
|
198
|
+
command: 'gdalwarp',
|
|
199
|
+
args: [
|
|
200
|
+
['-of', 'COG'],
|
|
201
|
+
'-multi',
|
|
202
|
+
['-wo', 'NUM_THREADS=ALL_CPUS'],
|
|
203
|
+
['-t_srs', tileMatrix.projection.toEpsgString()],
|
|
204
|
+
['-b', '1', '-b', '2', '-b', '3'], // Drop dummy band 4 if it exists
|
|
205
|
+
['-dstalpha'],
|
|
206
|
+
['-cutline', urlToString(cutline)],
|
|
207
|
+
['-crop_to_cutline'],
|
|
208
|
+
['-co', 'BIGTIFF=NO'],
|
|
209
|
+
['-r', 'bilinear'],
|
|
210
|
+
urlToString(source),
|
|
211
|
+
urlToString(target),
|
|
212
|
+
]
|
|
213
|
+
.filter((f) => f != null)
|
|
214
|
+
.flat()
|
|
215
|
+
.map(String),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
175
218
|
//# sourceMappingURL=gdal.command.js.map
|