@basemaps/cli-vector 8.1.0 → 8.2.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/bin.js +2 -2
- package/build/cli/cli.analyse.d.ts +34 -0
- package/build/cli/cli.analyse.js +152 -0
- package/build/cli/cli.analyse.js.map +1 -0
- package/build/cli/cli.create.d.ts +39 -0
- package/build/cli/cli.create.js +207 -0
- package/build/cli/cli.create.js.map +1 -0
- package/build/cli/cli.extract.d.ts +8 -17
- package/build/cli/cli.extract.js +43 -33
- package/build/cli/cli.extract.js.map +1 -1
- package/build/cli/cli.join.d.ts +44 -0
- package/build/cli/cli.join.js +149 -0
- package/build/cli/cli.join.js.map +1 -0
- package/build/extract.js.map +1 -0
- package/build/generalization/generalization.d.ts +9 -0
- package/build/generalization/generalization.js +159 -0
- package/build/generalization/generalization.js.map +1 -0
- package/build/generalization/simplify.d.ts +2 -0
- package/build/generalization/simplify.js +80 -0
- package/build/generalization/simplify.js.map +1 -0
- package/build/index.d.ts +83 -5
- package/build/index.js +7 -1
- package/build/index.js.map +1 -1
- package/build/modify/consts.d.ts +1 -0
- package/build/modify/consts.js +23 -0
- package/build/modify/consts.js.map +1 -0
- package/build/modify/layers/__test__/contours.test.d.ts +1 -0
- package/build/modify/layers/__test__/contours.test.js +59 -0
- package/build/modify/layers/__test__/contours.test.js.map +1 -0
- package/build/modify/layers/contours.d.ts +28 -0
- package/build/modify/layers/contours.js +90 -0
- package/build/modify/layers/contours.js.map +1 -0
- package/build/modify/layers/place_labels.d.ts +18 -0
- package/build/modify/layers/place_labels.js +122 -0
- package/build/modify/layers/place_labels.js.map +1 -0
- package/build/modify/layers/pois.d.ts +11 -0
- package/build/modify/layers/pois.js +27 -0
- package/build/modify/layers/pois.js.map +1 -0
- package/build/modify/layers/public_transport.d.ts +12 -0
- package/build/modify/layers/public_transport.js +53 -0
- package/build/modify/layers/public_transport.js.map +1 -0
- package/build/modify/layers/street_labels.d.ts +12 -0
- package/build/modify/layers/street_labels.js +34 -0
- package/build/modify/layers/street_labels.js.map +1 -0
- package/build/modify/layers/streets.d.ts +12 -0
- package/build/modify/layers/streets.js +72 -0
- package/build/modify/layers/streets.js.map +1 -0
- package/build/modify/layers/water_polygons.d.ts +13 -0
- package/build/modify/layers/water_polygons.js +85 -0
- package/build/modify/layers/water_polygons.js.map +1 -0
- package/build/modify/modify.d.ts +11 -0
- package/build/modify/modify.js +48 -0
- package/build/modify/modify.js.map +1 -0
- package/build/modify/parser.d.ts +47 -0
- package/build/modify/parser.js +24 -0
- package/build/modify/parser.js.map +1 -0
- package/build/modify/schema.d.ts +17 -0
- package/build/modify/schema.js +2 -0
- package/build/modify/schema.js.map +1 -0
- package/build/modify/shared.d.ts +4 -0
- package/build/modify/shared.js +38 -0
- package/build/modify/shared.js.map +1 -0
- package/build/schema-loader/parser.d.ts +8 -0
- package/build/schema-loader/parser.js +1 -0
- package/build/schema-loader/parser.js.map +1 -1
- package/build/schema-loader/schema.d.ts +19 -5
- package/build/schema-loader/schema.loader.js +10 -5
- package/build/schema-loader/schema.loader.js.map +1 -1
- package/build/stac.d.ts +41 -0
- package/build/stac.js +185 -0
- package/build/stac.js.map +1 -0
- package/build/transform/covt.d.ts +5 -0
- package/build/transform/covt.js +23 -0
- package/build/transform/covt.js.map +1 -0
- package/build/transform/mbtiles.to.ttiles.d.ts +14 -0
- package/build/transform/mbtiles.to.ttiles.js +60 -0
- package/build/transform/mbtiles.to.ttiles.js.map +1 -0
- package/build/transform/ogr2ogr.d.ts +7 -0
- package/build/transform/ogr2ogr.js +20 -0
- package/build/transform/ogr2ogr.js.map +1 -0
- package/build/transform/tippecanoe.d.ts +14 -0
- package/build/transform/tippecanoe.js +68 -0
- package/build/transform/tippecanoe.js.map +1 -0
- package/build/types/VectorGeoFeature.d.ts +9 -0
- package/build/types/VectorGeoFeature.js +2 -0
- package/build/types/VectorGeoFeature.js.map +1 -0
- package/build/util.d.ts +35 -0
- package/build/util.js +43 -0
- package/build/util.js.map +1 -0
- package/dist/index.cjs +20753 -9551
- package/package.json +23 -8
- package/build/extract/extract.js.map +0 -1
- /package/build/{extract/extract.d.ts → extract.d.ts} +0 -0
- /package/build/{extract/extract.js → extract.js} +0 -0
package/build/bin.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Error.stackTraceLimit = 100;
|
|
2
2
|
import { LogConfig } from '@basemaps/shared';
|
|
3
3
|
import { run } from 'cmd-ts';
|
|
4
|
-
import {
|
|
5
|
-
run(
|
|
4
|
+
import { VectorCli } from './index.js';
|
|
5
|
+
run(VectorCli, process.argv.slice(2)).catch((err) => {
|
|
6
6
|
const logger = LogConfig.get();
|
|
7
7
|
logger.fatal({ err }, 'Command:Failed');
|
|
8
8
|
// Give the logger some time to flush before exiting
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const AnalyseArgs: {
|
|
2
|
+
path: 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<URL>>;
|
|
4
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
5
|
+
template: 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<string>>;
|
|
7
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
8
|
+
target: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
9
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<URL>>;
|
|
10
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
11
|
+
verbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
12
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
13
|
+
} & 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>;
|
|
14
|
+
extraVerbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
15
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
16
|
+
} & 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>;
|
|
17
|
+
};
|
|
18
|
+
export declare const AnalyseCommand: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
19
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
20
|
+
path: URL;
|
|
21
|
+
template: string;
|
|
22
|
+
target: URL;
|
|
23
|
+
verbose: boolean;
|
|
24
|
+
extraVerbose: boolean;
|
|
25
|
+
}>>;
|
|
26
|
+
} & 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<{
|
|
27
|
+
path: URL;
|
|
28
|
+
template: string;
|
|
29
|
+
target: URL;
|
|
30
|
+
verbose: boolean;
|
|
31
|
+
extraVerbose: boolean;
|
|
32
|
+
}, Promise<void>> & {
|
|
33
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
|
|
34
|
+
} & 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,152 @@
|
|
|
1
|
+
import sq from 'node:sqlite';
|
|
2
|
+
import { fsa, Url } from '@basemaps/shared';
|
|
3
|
+
import { CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
4
|
+
import { getLogger, logArguments } from '@basemaps/shared/build/cli/log.js';
|
|
5
|
+
import { VectorTile } from '@mapbox/vector-tile';
|
|
6
|
+
import { command, option } from 'cmd-ts';
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import Mustache from 'mustache';
|
|
9
|
+
import sizeof from 'object-sizeof';
|
|
10
|
+
import { basename } from 'path';
|
|
11
|
+
import Protobuf from 'pbf';
|
|
12
|
+
import { gunzip } from 'zlib';
|
|
13
|
+
function distribution(size) {
|
|
14
|
+
if (size <= 10000)
|
|
15
|
+
return '0-10KB';
|
|
16
|
+
if (size <= 50000)
|
|
17
|
+
return '10-50KB';
|
|
18
|
+
if (size <= 100000)
|
|
19
|
+
return '50-100KB';
|
|
20
|
+
if (size <= 200000)
|
|
21
|
+
return '100-200KB';
|
|
22
|
+
if (size <= 500000)
|
|
23
|
+
return '200-500KB';
|
|
24
|
+
return '>500KB';
|
|
25
|
+
}
|
|
26
|
+
export const AnalyseArgs = {
|
|
27
|
+
...logArguments,
|
|
28
|
+
path: option({
|
|
29
|
+
long: 'path',
|
|
30
|
+
type: Url,
|
|
31
|
+
description: 'Path to mbtiles',
|
|
32
|
+
}),
|
|
33
|
+
template: option({
|
|
34
|
+
long: 'template',
|
|
35
|
+
defaultValue: () => 'analysis/template.md',
|
|
36
|
+
defaultValueIsSerializable: true,
|
|
37
|
+
description: 'Path of analysis template',
|
|
38
|
+
}),
|
|
39
|
+
target: option({
|
|
40
|
+
long: 'target',
|
|
41
|
+
type: Url,
|
|
42
|
+
description: 'Target location for the result file',
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
export const AnalyseCommand = command({
|
|
46
|
+
name: 'analyse',
|
|
47
|
+
version: CliInfo.version,
|
|
48
|
+
description: 'Analyse vector mbtiles',
|
|
49
|
+
args: AnalyseArgs,
|
|
50
|
+
async handler(args) {
|
|
51
|
+
const logger = getLogger(this, args, 'cli-vector');
|
|
52
|
+
logger.info('AnalyseMbTiles: Start');
|
|
53
|
+
const analysisData = [];
|
|
54
|
+
let mbtilesFile = args.path.pathname;
|
|
55
|
+
if (args.path.protocol !== 'file:') {
|
|
56
|
+
logger.info('Download Start');
|
|
57
|
+
const fileName = basename(args.path.pathname);
|
|
58
|
+
const localFile = fsa.toUrl(`tmp/${fileName}`);
|
|
59
|
+
await fsa.head(args.path);
|
|
60
|
+
const stream = fsa.readStream(args.path);
|
|
61
|
+
await fsa.write(localFile, stream);
|
|
62
|
+
mbtilesFile = localFile.pathname;
|
|
63
|
+
logger.info('Download End');
|
|
64
|
+
}
|
|
65
|
+
logger.info({ mbtilesFile }, 'Read mbtiles');
|
|
66
|
+
const db = new sq.DatabaseSync(mbtilesFile);
|
|
67
|
+
const MaxZoom = 15;
|
|
68
|
+
for (let i = 0; i <= MaxZoom; i++) {
|
|
69
|
+
const result = db
|
|
70
|
+
.prepare('SELECT tile_column as x, ((1 << zoom_level) - 1 - tile_row) as y, zoom_level as z, tile_data FROM tiles WHERE zoom_level=?')
|
|
71
|
+
.all(i);
|
|
72
|
+
let maxTile = { x: 0, y: 0, z: 0, max: 0 };
|
|
73
|
+
const layersSum = new Map();
|
|
74
|
+
const distributionSum = new Map();
|
|
75
|
+
for (const row of result) {
|
|
76
|
+
const buffer = await new Promise((resolve) => {
|
|
77
|
+
gunzip(row.tile_data, (_, buffer) => resolve(buffer));
|
|
78
|
+
});
|
|
79
|
+
const tile = new VectorTile(new Protobuf(buffer));
|
|
80
|
+
if (buffer.length > maxTile.max)
|
|
81
|
+
maxTile = {
|
|
82
|
+
x: row.x,
|
|
83
|
+
y: row.y,
|
|
84
|
+
z: row.z,
|
|
85
|
+
max: buffer.length,
|
|
86
|
+
link: `https://basemaps.linz.govt.nz/v1/tiles/topographic/WebMercatorQuad/${row.z}/${row.z}/${row.y}.pbf`,
|
|
87
|
+
};
|
|
88
|
+
// Prepare distribution
|
|
89
|
+
const dis = distribution(buffer.length);
|
|
90
|
+
const value = distributionSum.get(dis);
|
|
91
|
+
if (value == null) {
|
|
92
|
+
distributionSum.set(dis, 1);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
distributionSum.set(dis, value + 1);
|
|
96
|
+
}
|
|
97
|
+
// Prepare layer information
|
|
98
|
+
for (const [name, layer] of Object.entries(tile.layers)) {
|
|
99
|
+
let features = layer.length;
|
|
100
|
+
// Calculate the total features size
|
|
101
|
+
let totalGeometry = 0;
|
|
102
|
+
let totalAttributes = 0;
|
|
103
|
+
for (let i = 0; i < layer.length; i++) {
|
|
104
|
+
const feature = layer.feature(i);
|
|
105
|
+
const properties = sizeof(feature.properties);
|
|
106
|
+
const geometry = sizeof(feature.loadGeometry());
|
|
107
|
+
totalGeometry += properties;
|
|
108
|
+
totalAttributes += geometry;
|
|
109
|
+
}
|
|
110
|
+
// Cumulative total features and sizes
|
|
111
|
+
const layerInfo = layersSum.get(name);
|
|
112
|
+
if (layerInfo) {
|
|
113
|
+
features += layerInfo.features;
|
|
114
|
+
totalGeometry += layerInfo.totalGeometry;
|
|
115
|
+
totalAttributes += layerInfo.totalAttributes;
|
|
116
|
+
}
|
|
117
|
+
layersSum.set(name, { features, totalGeometry, totalAttributes });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Prepare printable max tile
|
|
121
|
+
maxTile.size = `${(maxTile.max / 1000).toFixed(1)}KB`;
|
|
122
|
+
// Prepare printable distributions
|
|
123
|
+
const distributions = [];
|
|
124
|
+
for (const [distribution, tiles] of distributionSum) {
|
|
125
|
+
const percentage = `${((tiles * 100) / result.length).toFixed(1)}%`;
|
|
126
|
+
distributions.push({ distribution, tiles, percentage });
|
|
127
|
+
}
|
|
128
|
+
// Prepare printable layers
|
|
129
|
+
const layers = [];
|
|
130
|
+
for (const [name, layerInfo] of layersSum) {
|
|
131
|
+
const features = layerInfo.features;
|
|
132
|
+
const totalGeometry = `${(layerInfo.totalGeometry / 1000).toFixed(1)}KB`;
|
|
133
|
+
const totalAttributes = `${(layerInfo.totalAttributes / 1000).toFixed(1)}KB`;
|
|
134
|
+
const totalSize = `${((layerInfo.totalGeometry + layerInfo.totalAttributes) / 1000).toFixed(1)}KB`;
|
|
135
|
+
layers.push({ name, features, totalGeometry, totalAttributes, totalSize });
|
|
136
|
+
}
|
|
137
|
+
const data = {
|
|
138
|
+
zoom: i,
|
|
139
|
+
maxTile,
|
|
140
|
+
distributions,
|
|
141
|
+
layers,
|
|
142
|
+
};
|
|
143
|
+
analysisData.push(data);
|
|
144
|
+
}
|
|
145
|
+
db.close();
|
|
146
|
+
logger.info('Finished reading mbtiles');
|
|
147
|
+
const template = readFileSync(args.template).toString();
|
|
148
|
+
const output = Mustache.render(template, { data: analysisData });
|
|
149
|
+
await fsa.write(new URL('report.md', args.target), Buffer.from(output, 'utf8'));
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=cli.analyse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.analyse.js","sourceRoot":"","sources":["../../src/cli/cli.analyse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const CreateArgs: {
|
|
2
|
+
path: 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<URL[]>>;
|
|
4
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp;
|
|
5
|
+
fromFile: 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<URL[] | undefined>>;
|
|
7
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
8
|
+
concurrency: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
9
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<number>>;
|
|
10
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
11
|
+
join: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
12
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
13
|
+
} & 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>;
|
|
14
|
+
verbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
15
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
16
|
+
} & 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>;
|
|
17
|
+
extraVerbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
18
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
19
|
+
} & 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>;
|
|
20
|
+
};
|
|
21
|
+
export declare const CreateCommand: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
22
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
23
|
+
path: URL[];
|
|
24
|
+
fromFile: URL[] | undefined;
|
|
25
|
+
concurrency: number;
|
|
26
|
+
join: boolean;
|
|
27
|
+
verbose: boolean;
|
|
28
|
+
extraVerbose: boolean;
|
|
29
|
+
}>>;
|
|
30
|
+
} & 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<{
|
|
31
|
+
path: URL[];
|
|
32
|
+
fromFile: URL[] | undefined;
|
|
33
|
+
concurrency: number;
|
|
34
|
+
join: boolean;
|
|
35
|
+
verbose: boolean;
|
|
36
|
+
extraVerbose: boolean;
|
|
37
|
+
}, Promise<void>> & {
|
|
38
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
|
|
39
|
+
} & 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,207 @@
|
|
|
1
|
+
import { fsa, Url, UrlArrayJsonFile } from '@basemaps/shared';
|
|
2
|
+
import { CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
3
|
+
import { getLogger, logArguments } from '@basemaps/shared/build/cli/log.js';
|
|
4
|
+
import { command, flag, number, option, optional, restPositionals } from 'cmd-ts';
|
|
5
|
+
import PLimit from 'p-limit';
|
|
6
|
+
import { createGunzip } from 'zlib';
|
|
7
|
+
import { generalize } from '../generalization/generalization.js';
|
|
8
|
+
import { ogr2ogrNDJson } from '../transform/ogr2ogr.js';
|
|
9
|
+
import { tileJoin, tippecanoe } from '../transform/tippecanoe.js';
|
|
10
|
+
import { ContentType, prepareTmpPaths } from '../util.js';
|
|
11
|
+
const TmpPath = fsa.toUrl('tmp/create/');
|
|
12
|
+
export const CreateArgs = {
|
|
13
|
+
...logArguments,
|
|
14
|
+
path: restPositionals({ type: Url, displayName: 'path', description: 'Path to vector Stac Item' }),
|
|
15
|
+
fromFile: option({
|
|
16
|
+
type: optional(UrlArrayJsonFile),
|
|
17
|
+
long: 'from-file',
|
|
18
|
+
description: 'Path to JSON file containing array of paths to mbtiles stac json.',
|
|
19
|
+
}),
|
|
20
|
+
concurrency: option({
|
|
21
|
+
type: number,
|
|
22
|
+
long: 'concurrency',
|
|
23
|
+
defaultValue: () => 1,
|
|
24
|
+
defaultValueIsSerializable: true,
|
|
25
|
+
description: 'Number of items to process concurrently when downloading source files or generating mbtiles.',
|
|
26
|
+
}),
|
|
27
|
+
join: flag({
|
|
28
|
+
long: 'join',
|
|
29
|
+
description: 'TODO: new parameter to join multiple mbtiles for local test only, because tile-join is not access to aws',
|
|
30
|
+
defaultValue: () => false,
|
|
31
|
+
defaultValueIsSerializable: true,
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
export const CreateCommand = command({
|
|
35
|
+
name: 'create',
|
|
36
|
+
version: CliInfo.version,
|
|
37
|
+
description: 'Create individual vector mbtiles.',
|
|
38
|
+
args: CreateArgs,
|
|
39
|
+
async handler(args) {
|
|
40
|
+
const logger = getLogger(this, args, 'cli-vector');
|
|
41
|
+
const paths = args.fromFile != null ? args.path.concat(args.fromFile) : args.path;
|
|
42
|
+
// parse files as vector stac items and prepare tmp file paths
|
|
43
|
+
logger.info({ files: paths.length }, 'Parse Vector Stac Items: Start');
|
|
44
|
+
const items = await Promise.all(paths.map((path) => prepareItem(path, logger)));
|
|
45
|
+
logger.info({ items: items.length }, 'Parse Vector Stac Items: End');
|
|
46
|
+
const q = PLimit(args.concurrency);
|
|
47
|
+
// download source files
|
|
48
|
+
logger.info({ items: items.length }, 'Download Source Files: Start');
|
|
49
|
+
await Promise.all(items.map((item) => q(() => downloadSourceFile(item, logger))));
|
|
50
|
+
logger.info({ items: items.length }, 'Download Source Files: End');
|
|
51
|
+
// generate ndjsons and mbtiles
|
|
52
|
+
logger.info({ items: items.length }, 'Create Mbtiles Files: Start');
|
|
53
|
+
await Promise.all(items.map((item) => q(() => createMbtilesFile(item, logger))));
|
|
54
|
+
logger.info({ items: items.length }, 'Create Mbtiles Files: End');
|
|
55
|
+
// if applicable, combine all mbtiles files into a single mbtiles file
|
|
56
|
+
if (args.join === true) {
|
|
57
|
+
const mbtileFiles = items.map((item) => item.tmpPaths.mbtiles);
|
|
58
|
+
logger.info({ joining: mbtileFiles.length }, 'JoinMbtiles:Start');
|
|
59
|
+
const joinedFile = new URL(`joined.mbtiles`, TmpPath);
|
|
60
|
+
await tileJoin(mbtileFiles, joinedFile.pathname, logger);
|
|
61
|
+
if (!(await fsa.exists(joinedFile)))
|
|
62
|
+
throw new Error(`Failed to create joined mbtiles ${joinedFile.href}`);
|
|
63
|
+
logger.info({ output: joinedFile.href }, 'JoinMbtiles:End');
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Parses the given filepath into a runtime VectorStacItem object and prepares temporary paths for upcoming local files.
|
|
69
|
+
*
|
|
70
|
+
* @param path - the path to the file to parse
|
|
71
|
+
* @param logger - a logger instance
|
|
72
|
+
* @returns an object containing a VectorStacItem and TmpPaths object
|
|
73
|
+
*/
|
|
74
|
+
async function prepareItem(path, logger) {
|
|
75
|
+
logger.info({ source: path }, 'PrepareItem: Start');
|
|
76
|
+
// parse Vector Stac Item file
|
|
77
|
+
const stac = await fsa.readJson(path);
|
|
78
|
+
const options = stac.properties['linz_basemaps:options'];
|
|
79
|
+
if (options == null)
|
|
80
|
+
throw new Error(`Stac file missing linz_basemaps:options ${stac.id}`);
|
|
81
|
+
const layer = options.layer;
|
|
82
|
+
const shortbreadLayer = options.name;
|
|
83
|
+
// check properties
|
|
84
|
+
const cache = layer.cache;
|
|
85
|
+
if (cache == null)
|
|
86
|
+
throw new Error(`Failed to read cache path from stac ${path.href}`);
|
|
87
|
+
const format = layer.source.split('.').pop();
|
|
88
|
+
if (format == null)
|
|
89
|
+
throw new Error(`Failed to parse source file format ${layer.source}`);
|
|
90
|
+
if (!(format in ContentType))
|
|
91
|
+
throw new Error(`Unsupported source file format ${layer.source}`);
|
|
92
|
+
// prepare tmp paths for local files
|
|
93
|
+
const tmpPaths = prepareTmpPaths(TmpPath, path, layer.id, format, shortbreadLayer);
|
|
94
|
+
logger.info({ shortbreadLayer, dataset: layer.name }, 'PrepareItem: End');
|
|
95
|
+
return { stac, tmpPaths };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Downloads the given VectorStacItem's source file locally.
|
|
99
|
+
*
|
|
100
|
+
* @param stac - the VectorStacItem object for which to download its source file
|
|
101
|
+
* @param tmpPaths - the TmpPaths object denoting where to save the downloaded file
|
|
102
|
+
* @param logger - a logger instance
|
|
103
|
+
*/
|
|
104
|
+
async function downloadSourceFile({ stac, tmpPaths }, logger) {
|
|
105
|
+
const options = stac.properties['linz_basemaps:options'];
|
|
106
|
+
if (options == null)
|
|
107
|
+
throw new Error(`Stac file missing linz_basemaps:options ${stac.id}`);
|
|
108
|
+
const layer = options.layer;
|
|
109
|
+
logger.info({ source: layer.source, id: layer.id, name: layer.name }, 'DownloadSourceFile: Start');
|
|
110
|
+
if (!(await fsa.exists(tmpPaths.source.path))) {
|
|
111
|
+
// TODO: We don't acturally need to head file from lds-cache here.
|
|
112
|
+
// As the fsa.stream doesn't retry to register roles, we need head to register it.
|
|
113
|
+
// We could delete this once that is fixed.
|
|
114
|
+
const stats = await fsa.head(new URL(layer.source));
|
|
115
|
+
logger.debug({ size: stats?.size, ContentType: stats?.contentType, LastModified: stats?.lastModified }, 'DownloadSourceFile: stats');
|
|
116
|
+
const stream = fsa.readStream(new URL(layer.source));
|
|
117
|
+
await fsa.write(tmpPaths.source.path, stream.pipe(createGunzip()), {
|
|
118
|
+
contentType: tmpPaths.source.contentType,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
logger.info({ destination: tmpPaths.source.path, id: layer.id, name: layer.name }, 'DownloadSourceFile: End');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generates an Mbtiles file from the given VectorStacItem's source file. Steps:
|
|
125
|
+
*
|
|
126
|
+
* 1. Converts the source file into an ndjson
|
|
127
|
+
* 2. Parses the ndjson file and applies the generalization options
|
|
128
|
+
* 3. Transforms the generalized ndjson file to an mbtiles file
|
|
129
|
+
* 4. Copies the mbtiles file to the same directory as the Vector Stac Item file
|
|
130
|
+
* 5. Updates the Vector Stac Item file
|
|
131
|
+
*
|
|
132
|
+
* @param stac - the VectorStacItem object from which to generate an Mbtiles file
|
|
133
|
+
* @param tmpPaths - the TmpPaths object denoting where to save temporary files for each step
|
|
134
|
+
* @param logger - a logger instance
|
|
135
|
+
*/
|
|
136
|
+
async function createMbtilesFile({ stac, tmpPaths }, logger) {
|
|
137
|
+
const options = stac.properties['linz_basemaps:options'];
|
|
138
|
+
if (options == null)
|
|
139
|
+
throw new Error(`Stac file missing linz_basemaps:options ${stac.id}`);
|
|
140
|
+
const layer = options.layer;
|
|
141
|
+
const shortbreadLayer = options.name;
|
|
142
|
+
logger.info({ shortbreadLayer, dataset: layer.name }, 'CreateMbtilesFile: Start');
|
|
143
|
+
/**
|
|
144
|
+
* Convert the source file into an ndjson
|
|
145
|
+
*/
|
|
146
|
+
logger.info({ source: tmpPaths.source.path, dataset: layer.name }, '[1/5] Convert source file to ndjson: Start');
|
|
147
|
+
if (!(await fsa.exists(tmpPaths.ndjson))) {
|
|
148
|
+
await ogr2ogrNDJson(tmpPaths.source.path, tmpPaths.ndjson, logger);
|
|
149
|
+
}
|
|
150
|
+
logger.info({ destination: tmpPaths.ndjson, dataset: layer.name }, '[1/5] Convert source file to ndjson: End');
|
|
151
|
+
/**
|
|
152
|
+
* Parse the ndjson file and apply the generalization options
|
|
153
|
+
*/
|
|
154
|
+
logger.info({ source: tmpPaths.ndjson, dataset: layer.name }, '[2/5] Generalise ndjson features: Start');
|
|
155
|
+
let metrics = null;
|
|
156
|
+
if (!(await fsa.exists(tmpPaths.genNdjson))) {
|
|
157
|
+
metrics = await generalize(tmpPaths.ndjson, tmpPaths.genNdjson, options, logger);
|
|
158
|
+
if (metrics.output === 0)
|
|
159
|
+
throw new Error(`Failed to generalize ndjson file ${tmpPaths.ndjson.href}`);
|
|
160
|
+
}
|
|
161
|
+
logger.info({ destination: tmpPaths.genNdjson, dataset: layer.name }, '[2/5] Generalise ndjson features: End');
|
|
162
|
+
/**
|
|
163
|
+
* Transform the generalized ndjson file to an mbtiles file
|
|
164
|
+
*/
|
|
165
|
+
logger.info({ source: tmpPaths.genNdjson, dataset: layer.name }, '[3/5] Transform generalised ndjson into mbtiles: Start');
|
|
166
|
+
if (!(await fsa.exists(tmpPaths.mbtiles))) {
|
|
167
|
+
await tippecanoe(tmpPaths.genNdjson, tmpPaths.mbtiles, layer, logger);
|
|
168
|
+
}
|
|
169
|
+
logger.info({ destination: tmpPaths.mbtiles, dataset: layer.name }, '[3/5] Transform generalised ndjson into mbtiles: End');
|
|
170
|
+
/**
|
|
171
|
+
* Copy the mbtiles file to the same directory as the Vector Stac Item file
|
|
172
|
+
*/
|
|
173
|
+
logger.info({ source: tmpPaths.mbtiles, dataset: layer.name }, '[4/5] Copy mbtiles to stac location: Start');
|
|
174
|
+
if (!(await fsa.exists(tmpPaths.mbtilesCopy))) {
|
|
175
|
+
await fsa.write(tmpPaths.mbtilesCopy, fsa.readStream(tmpPaths.mbtiles));
|
|
176
|
+
// Ensure the mbtiles file was copied successfully
|
|
177
|
+
if (!(await fsa.exists(tmpPaths.mbtilesCopy))) {
|
|
178
|
+
throw new Error(`Failed to write the mbtiles file to ${tmpPaths.mbtilesCopy.href}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
logger.info({ destination: tmpPaths.mbtilesCopy, dataset: layer.name }, '[4/5] Copy mbtiles to stac location: End');
|
|
182
|
+
/**
|
|
183
|
+
* Update the Vector Stac Item file
|
|
184
|
+
*/
|
|
185
|
+
logger.info({ source: tmpPaths.origin, dataset: layer.name }, '[5/5] Update stac: Start');
|
|
186
|
+
// Update 'cache' flag to 'true' now that the mbtiles file exists
|
|
187
|
+
layer.cache.exists = true;
|
|
188
|
+
// Assign the 'lds:feature_count' property
|
|
189
|
+
const links = stac.links;
|
|
190
|
+
const ldsLayerIndex = links.findIndex((stacLink) => stacLink.rel === 'lds:layer');
|
|
191
|
+
if (ldsLayerIndex === -1)
|
|
192
|
+
throw new Error('Failed to locate `lds:layer` link object');
|
|
193
|
+
if (links[ldsLayerIndex]['lds:feature_count'] == null) {
|
|
194
|
+
// the 'metrics' variable is only ever null if the gen-ndjson file already exists, i.e.
|
|
195
|
+
// generated in a previous run. In such case, that run would have written the
|
|
196
|
+
// 'lds:feature_count' property to the Vector Stac Item file. If the following error occurs,
|
|
197
|
+
// then the previous run must have failed after creating the gen-ndjson file, but before
|
|
198
|
+
// updating the Vector Stac Item file.
|
|
199
|
+
if (metrics == null)
|
|
200
|
+
throw new Error('Metrics object does not exist');
|
|
201
|
+
links[ldsLayerIndex]['lds:feature_count'] = metrics.input;
|
|
202
|
+
}
|
|
203
|
+
// Overwrite the Vector Stac Item file
|
|
204
|
+
await fsa.write(tmpPaths.origin, JSON.stringify(stac, null, 2));
|
|
205
|
+
logger.info({ destination: tmpPaths.origin }, '[5/5] Update stac: End');
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=cli.create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.create.js","sourceRoot":"","sources":["../../src/cli/cli.create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
import { Layer, SchemaMetadata } from '../schema-loader/schema.js';
|
|
2
|
-
export interface Task {
|
|
3
|
-
name: string;
|
|
4
|
-
metadata: SchemaMetadata;
|
|
5
|
-
layer: Layer;
|
|
6
|
-
}
|
|
7
|
-
export interface ToProcess {
|
|
8
|
-
tasks: Task[];
|
|
9
|
-
}
|
|
10
1
|
export declare const ExtractArgs: {
|
|
11
|
-
|
|
12
|
-
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<
|
|
2
|
+
schema: 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<URL>>;
|
|
13
4
|
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
14
5
|
cache: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
15
6
|
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<string>>;
|
|
16
7
|
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
17
|
-
|
|
18
|
-
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<
|
|
8
|
+
tileMatrix: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
9
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<string>>;
|
|
19
10
|
} & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
|
|
20
11
|
verbose: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
21
12
|
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean>>;
|
|
@@ -26,16 +17,16 @@ export declare const ExtractArgs: {
|
|
|
26
17
|
};
|
|
27
18
|
export declare const ExtractCommand: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
28
19
|
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
29
|
-
|
|
20
|
+
schema: URL;
|
|
30
21
|
cache: string;
|
|
31
|
-
|
|
22
|
+
tileMatrix: string;
|
|
32
23
|
verbose: boolean;
|
|
33
24
|
extraVerbose: boolean;
|
|
34
25
|
}>>;
|
|
35
26
|
} & 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<{
|
|
36
|
-
|
|
27
|
+
schema: URL;
|
|
37
28
|
cache: string;
|
|
38
|
-
|
|
29
|
+
tileMatrix: string;
|
|
39
30
|
verbose: boolean;
|
|
40
31
|
extraVerbose: boolean;
|
|
41
32
|
}, Promise<void>> & {
|