@basemaps/cli-vector 8.1.0 → 8.3.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 +211 -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 +10 -0
- package/build/generalization/generalization.js +168 -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 +117 -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 +32 -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 +41 -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.d.ts +13 -0
- package/build/modify/layers/water.js +82 -0
- package/build/modify/layers/water.js.map +1 -0
- package/build/modify/modify.d.ts +11 -0
- package/build/modify/modify.js +49 -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 +7 -0
- package/build/modify/shared.js +53 -0
- package/build/modify/shared.js.map +1 -0
- package/build/schema-loader/parser.d.ts +16 -0
- package/build/schema-loader/parser.js +2 -0
- package/build/schema-loader/parser.js.map +1 -1
- package/build/schema-loader/schema.d.ts +21 -5
- package/build/schema-loader/schema.loader.d.ts +3 -1
- package/build/schema-loader/schema.loader.js +18 -6
- 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/nztm.d.ts +4 -0
- package/build/transform/nztm.js +13 -0
- package/build/transform/nztm.js.map +1 -0
- package/build/transform/ogr2ogr.d.ts +9 -0
- package/build/transform/ogr2ogr.js +43 -0
- package/build/transform/ogr2ogr.js.map +1 -0
- package/build/transform/tippecanoe.d.ts +15 -0
- package/build/transform/tippecanoe.js +69 -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 +20809 -9550
- 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
|
@@ -51,6 +51,21 @@ export type Simplify = {
|
|
|
51
51
|
style: Styling;
|
|
52
52
|
tolerance?: number;
|
|
53
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Cache mbtile file
|
|
56
|
+
*/
|
|
57
|
+
export interface CacheFile {
|
|
58
|
+
fileName: string;
|
|
59
|
+
path: URL;
|
|
60
|
+
exists: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Record the input and output features of the
|
|
64
|
+
*/
|
|
65
|
+
export interface Metrics {
|
|
66
|
+
input: number;
|
|
67
|
+
output: number;
|
|
68
|
+
}
|
|
54
69
|
/**
|
|
55
70
|
* Layer interface for source data layer config metadata
|
|
56
71
|
*/
|
|
@@ -74,14 +89,15 @@ export interface Layer {
|
|
|
74
89
|
/** Tippecanoe transform options */
|
|
75
90
|
tippecanoe?: string[];
|
|
76
91
|
/** Metrics data during the process, will capture into the stac once processed */
|
|
77
|
-
metrics?:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
};
|
|
92
|
+
metrics?: Metrics;
|
|
93
|
+
/** cached mbtile filename */
|
|
94
|
+
fileName?: URL;
|
|
81
95
|
/** cached mbtile location */
|
|
82
|
-
cache?:
|
|
96
|
+
cache?: CacheFile;
|
|
83
97
|
/** true for layer over 2GB, which will require separated node to process */
|
|
84
98
|
largeLayer?: boolean;
|
|
99
|
+
/** Include the aera size as square meters in the property _derived_area via ogr*/
|
|
100
|
+
includeDerivedArea?: boolean;
|
|
85
101
|
}
|
|
86
102
|
/**
|
|
87
103
|
* Schema metadata for vector layer
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import { TileMatrixSet } from '@basemaps/geo';
|
|
1
2
|
import { LogType } from '@basemaps/shared';
|
|
2
3
|
import { Schema } from './schema.js';
|
|
3
4
|
export declare class SchemaLoader {
|
|
4
5
|
path: URL;
|
|
5
6
|
logger: LogType;
|
|
6
7
|
schemas: Schema[];
|
|
8
|
+
tileMatrix: TileMatrixSet;
|
|
7
9
|
cache?: URL;
|
|
8
|
-
constructor(path: URL, logger: LogType, cache?: URL);
|
|
10
|
+
constructor(path: URL, tileMatrix: TileMatrixSet, logger: LogType, cache?: URL);
|
|
9
11
|
/**
|
|
10
12
|
* Read the json schema from the path
|
|
11
13
|
*
|
|
@@ -2,11 +2,11 @@ import { sha256base58 } from '@basemaps/config';
|
|
|
2
2
|
import { fsa } from '@basemaps/shared';
|
|
3
3
|
import { CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { lds, LDS_CACHE_BUCKET } from '../extract
|
|
5
|
+
import { lds, LDS_CACHE_BUCKET } from '../extract.js';
|
|
6
6
|
import { zSchema } from './parser.js';
|
|
7
7
|
const LARGE_LAYER_SIZE = 1024 * 1024 * 1024; // processing for large layers that over 1GB
|
|
8
8
|
export class SchemaLoader {
|
|
9
|
-
constructor(path, logger, cache) {
|
|
9
|
+
constructor(path, tileMatrix, logger, cache) {
|
|
10
10
|
Object.defineProperty(this, "path", {
|
|
11
11
|
enumerable: true,
|
|
12
12
|
configurable: true,
|
|
@@ -25,6 +25,12 @@ export class SchemaLoader {
|
|
|
25
25
|
writable: true,
|
|
26
26
|
value: []
|
|
27
27
|
});
|
|
28
|
+
Object.defineProperty(this, "tileMatrix", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: true,
|
|
31
|
+
writable: true,
|
|
32
|
+
value: void 0
|
|
33
|
+
});
|
|
28
34
|
Object.defineProperty(this, "cache", {
|
|
29
35
|
enumerable: true,
|
|
30
36
|
configurable: true,
|
|
@@ -33,6 +39,7 @@ export class SchemaLoader {
|
|
|
33
39
|
});
|
|
34
40
|
this.path = path;
|
|
35
41
|
this.logger = logger;
|
|
42
|
+
this.tileMatrix = tileMatrix;
|
|
36
43
|
this.cache = cache;
|
|
37
44
|
}
|
|
38
45
|
/**
|
|
@@ -70,8 +77,6 @@ export class SchemaLoader {
|
|
|
70
77
|
const files = await lds.getLdsCacheFiles();
|
|
71
78
|
for (const schema of this.schemas) {
|
|
72
79
|
this.logger.info({ layer: schema.name }, 'SchemaLoader: PrepareLayer');
|
|
73
|
-
if (schema.layers == null)
|
|
74
|
-
continue;
|
|
75
80
|
for (const layer of schema.layers) {
|
|
76
81
|
// Set layer simplify
|
|
77
82
|
if (schema.simplify != null && layer.simplify == null)
|
|
@@ -93,12 +98,19 @@ export class SchemaLoader {
|
|
|
93
98
|
if (fileInfo.size != null && fileInfo.size > LARGE_LAYER_SIZE)
|
|
94
99
|
layer.largeLayer = true;
|
|
95
100
|
// Set the cache path for the layer
|
|
96
|
-
const configHash = sha256base58(JSON.stringify({
|
|
101
|
+
const configHash = sha256base58(JSON.stringify({ name: schema.name, layer, version: CliInfo.version }));
|
|
97
102
|
if (this.cache != null) {
|
|
98
103
|
const fileName = isLdsFile
|
|
99
104
|
? `${layer.id}_${layer.version}_${configHash}.mbtiles`
|
|
100
105
|
: `${layer.id}_${configHash}.mbtiles`;
|
|
101
|
-
|
|
106
|
+
const path = new URL(`${this.tileMatrix.projection.code}/${layer.id}/${fileName}`, this.cache);
|
|
107
|
+
const exists = await fsa.exists(path);
|
|
108
|
+
const cache = {
|
|
109
|
+
fileName,
|
|
110
|
+
path,
|
|
111
|
+
exists,
|
|
112
|
+
};
|
|
113
|
+
layer.cache = cache;
|
|
102
114
|
}
|
|
103
115
|
}
|
|
104
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.loader.js","sourceRoot":"","sources":["../../src/schema-loader/schema.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.loader.js","sourceRoot":"","sources":["../../src/schema-loader/schema.loader.ts"],"names":[],"mappings":"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"}
|
package/build/stac.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BoundingBox, TileMatrixSet } from '@basemaps/geo';
|
|
2
|
+
import { LogType } from '@basemaps/shared';
|
|
3
|
+
import { StacCatalog, StacCollection, StacItem, StacLink } from 'stac-ts';
|
|
4
|
+
import { Layer, SchemaMetadata } from './schema-loader/schema.js';
|
|
5
|
+
export interface VectorCreationOptions {
|
|
6
|
+
/** Schema name for the layer*/
|
|
7
|
+
name: string;
|
|
8
|
+
/**Schema metadata for creation vector tiles */
|
|
9
|
+
metadata: SchemaMetadata;
|
|
10
|
+
/** Tile matrix to create the tiles against */
|
|
11
|
+
tileMatrix: string;
|
|
12
|
+
/** Individual layer options */
|
|
13
|
+
layer: Layer;
|
|
14
|
+
}
|
|
15
|
+
export interface GeneratedProperties {
|
|
16
|
+
/** Package name that generated the file */
|
|
17
|
+
package: string;
|
|
18
|
+
/** Version number that generated the file */
|
|
19
|
+
version: string;
|
|
20
|
+
/** Git commit hash that the file was generated with */
|
|
21
|
+
hash: string;
|
|
22
|
+
/** ISO date of the time this file was generated */
|
|
23
|
+
datetime: string;
|
|
24
|
+
}
|
|
25
|
+
export type VectorStacItem = StacItem & {
|
|
26
|
+
properties: {
|
|
27
|
+
'linz_basemaps:generated': GeneratedProperties;
|
|
28
|
+
'linz_basemaps:options'?: VectorCreationOptions;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export declare class VectorStac {
|
|
32
|
+
logger: LogType;
|
|
33
|
+
/** List of bounding boxes for the layer, to union as collection bbox */
|
|
34
|
+
bboxArr: BoundingBox[];
|
|
35
|
+
constructor(logger: LogType);
|
|
36
|
+
createStacLink(targetLayer: string, layer: Layer): Promise<StacLink>;
|
|
37
|
+
createStacItem(layers: StacLink[], filename: string, tileMatrix: TileMatrixSet, options?: VectorCreationOptions): VectorStacItem;
|
|
38
|
+
createStacCollection(bbBox: number[], layers: StacLink[], filename: string, title: string): StacCollection;
|
|
39
|
+
createStacCatalog(): StacCatalog;
|
|
40
|
+
}
|
|
41
|
+
export declare function createStacFiles(filePaths: URL[], targetPath: URL, filename: string, tileMatrix: TileMatrixSet, title: string, logger: LogType): Promise<URL[]>;
|
package/build/stac.js
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Bounds } from '@basemaps/geo';
|
|
2
|
+
import { fsa } from '@basemaps/shared';
|
|
3
|
+
import { CliDate, CliId, CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
4
|
+
import { LDS_CACHE_BUCKET } from './extract.js';
|
|
5
|
+
import { zLayer } from './schema-loader/parser.js';
|
|
6
|
+
const providers = [
|
|
7
|
+
{ name: 'Land Information New Zealand', url: 'https://www.linz.govt.nz/', roles: ['processor', 'host'] },
|
|
8
|
+
];
|
|
9
|
+
export class VectorStac {
|
|
10
|
+
constructor(logger) {
|
|
11
|
+
Object.defineProperty(this, "logger", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
value: void 0
|
|
16
|
+
});
|
|
17
|
+
/** List of bounding boxes for the layer, to union as collection bbox */
|
|
18
|
+
Object.defineProperty(this, "bboxArr", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true,
|
|
22
|
+
value: []
|
|
23
|
+
});
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
}
|
|
26
|
+
async createStacLink(targetLayer, layer) {
|
|
27
|
+
if (layer.source.startsWith(LDS_CACHE_BUCKET)) {
|
|
28
|
+
// Create stac link for lds layer
|
|
29
|
+
this.logger.info({ layer: layer.id }, 'VectorStac: CreateLdsStacLink');
|
|
30
|
+
const collectionPath = new URL('collection.json', layer.source);
|
|
31
|
+
const sourceCollection = await fsa.readJson(collectionPath);
|
|
32
|
+
const spatialExtents = sourceCollection.extent.spatial.bbox;
|
|
33
|
+
this.bboxArr.push(...spatialExtents.map((b) => Bounds.fromBbox(b)));
|
|
34
|
+
const stacLink = {
|
|
35
|
+
rel: 'lds:layer',
|
|
36
|
+
'lds:id': layer.id,
|
|
37
|
+
'lds:name': layer.name,
|
|
38
|
+
'lds:title': sourceCollection.title,
|
|
39
|
+
'lds:version': layer.version,
|
|
40
|
+
'basemaps:layers': [targetLayer],
|
|
41
|
+
href: `https://data.linz.govt.nz/services/api/v1/layers/${layer.id}/versions/${layer.version}/`,
|
|
42
|
+
};
|
|
43
|
+
if (layer.metrics != null) {
|
|
44
|
+
stacLink['lds:feature_count'] = layer.metrics.input;
|
|
45
|
+
}
|
|
46
|
+
return stacLink;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.logger.info({ layer: layer.id }, 'VectorStac: CreateExternalStacLink');
|
|
50
|
+
// Create stac link for external layer
|
|
51
|
+
const stacLink = {
|
|
52
|
+
rel: 'layer',
|
|
53
|
+
id: layer.id,
|
|
54
|
+
name: layer.name,
|
|
55
|
+
'basemaps:layers': targetLayer,
|
|
56
|
+
href: `https://data.linz.govt.nz/services/api/v1/layers/${layer.id}/versions/${layer.version}/`,
|
|
57
|
+
};
|
|
58
|
+
return stacLink;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
createStacItem(layers, filename, tileMatrix, options) {
|
|
62
|
+
this.logger.info({ filename }, 'VectorStac: CreateStacItem');
|
|
63
|
+
const item = {
|
|
64
|
+
id: `${CliId}/${filename}`,
|
|
65
|
+
type: 'Feature',
|
|
66
|
+
collection: CliId,
|
|
67
|
+
stac_version: '1.0.0',
|
|
68
|
+
stac_extensions: [],
|
|
69
|
+
geometry: null,
|
|
70
|
+
bbox: tileMatrix.extent.toBbox(),
|
|
71
|
+
links: [
|
|
72
|
+
{ href: `./${filename}.json`, rel: 'self' },
|
|
73
|
+
{ href: './collection.json', rel: 'collection' },
|
|
74
|
+
{ href: './collection.json', rel: 'parent' },
|
|
75
|
+
...layers,
|
|
76
|
+
],
|
|
77
|
+
properties: {
|
|
78
|
+
'proj:epsg': tileMatrix.projection.code,
|
|
79
|
+
'linz_basemaps:generated': {
|
|
80
|
+
package: CliInfo.package,
|
|
81
|
+
hash: CliInfo.hash,
|
|
82
|
+
version: CliInfo.version,
|
|
83
|
+
datetime: CliDate,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
assets: {},
|
|
87
|
+
};
|
|
88
|
+
// Set options for individual mbtiles stac file
|
|
89
|
+
if (options != null)
|
|
90
|
+
item.properties['linz_basemaps:options'] = options;
|
|
91
|
+
return item;
|
|
92
|
+
}
|
|
93
|
+
createStacCollection(bbBox, layers, filename, title) {
|
|
94
|
+
return {
|
|
95
|
+
stac_version: '1.0.0',
|
|
96
|
+
stac_extensions: [],
|
|
97
|
+
type: 'Collection',
|
|
98
|
+
license: 'CC-BY-4.0',
|
|
99
|
+
id: 'sc_' + CliId,
|
|
100
|
+
title,
|
|
101
|
+
description: 'Linz Vector Basemaps.',
|
|
102
|
+
extent: {
|
|
103
|
+
spatial: {
|
|
104
|
+
bbox: [bbBox],
|
|
105
|
+
},
|
|
106
|
+
temporal: { interval: [[CliDate, null]] },
|
|
107
|
+
},
|
|
108
|
+
links: [
|
|
109
|
+
{ rel: 'self', href: './collection.json', type: 'application/json' },
|
|
110
|
+
{ rel: 'item', href: `./${filename}.json` },
|
|
111
|
+
...layers,
|
|
112
|
+
],
|
|
113
|
+
providers,
|
|
114
|
+
summaries: {},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
createStacCatalog() {
|
|
118
|
+
return {
|
|
119
|
+
stac_version: '1.0.0',
|
|
120
|
+
stac_extensions: [],
|
|
121
|
+
type: 'Catalog',
|
|
122
|
+
title: 'ETL',
|
|
123
|
+
description: 'ETL process to generate LINZ Vector Basemaps',
|
|
124
|
+
id: 'sl_' + CliId,
|
|
125
|
+
links: [{ rel: 'self', href: './catalog.json', type: 'application/json' }],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export async function createStacFiles(filePaths, targetPath, filename, tileMatrix, title, logger) {
|
|
130
|
+
const vectorStac = new VectorStac(logger);
|
|
131
|
+
// Prepare stac item links
|
|
132
|
+
const bboxArr = [];
|
|
133
|
+
const layersMap = new Map();
|
|
134
|
+
for (const file of filePaths) {
|
|
135
|
+
const stacPath = fsa.toUrl(`${file.href.split('.mbtiles')[0]}.json`);
|
|
136
|
+
const stac = await fsa.readJson(stacPath);
|
|
137
|
+
if (stac.bbox)
|
|
138
|
+
bboxArr.push(Bounds.fromBbox(stac.bbox));
|
|
139
|
+
const layer = zLayer.parse(stac.properties['linz_basemaps:options'].layer);
|
|
140
|
+
const name = stac.properties['linz_basemaps:options'].name;
|
|
141
|
+
const layerLink = stac.links.find((l) => l.rel === 'lds:layer' && l['lds:id'] === layer.id);
|
|
142
|
+
if (layerLink == null)
|
|
143
|
+
throw new Error(`Layer link not found for ${layer.id} in ${stacPath.href}`);
|
|
144
|
+
const existing = layersMap.get(layer.id);
|
|
145
|
+
if (existing != null) {
|
|
146
|
+
existing['basemaps:layers'].push(name);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
layersMap.set(layer.id, layerLink);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const layers = Array.from(layersMap.values());
|
|
153
|
+
// Create stac item
|
|
154
|
+
const stacItem = vectorStac.createStacItem(layers, filename, tileMatrix);
|
|
155
|
+
// Union bbox
|
|
156
|
+
const unionBound = Bounds.union(bboxArr);
|
|
157
|
+
const unionBbox = unionBound.toBbox();
|
|
158
|
+
stacItem.bbox = unionBbox;
|
|
159
|
+
stacItem.geometry = {
|
|
160
|
+
type: 'Polygon',
|
|
161
|
+
coordinates: unionBound.toPolygon(),
|
|
162
|
+
};
|
|
163
|
+
// Create stac collection
|
|
164
|
+
const stacCollection = vectorStac.createStacCollection(unionBbox, layers, filename, title);
|
|
165
|
+
// Create stac catalog
|
|
166
|
+
let stacCatalog = vectorStac.createStacCatalog();
|
|
167
|
+
const catalogPath = new URL('catalog.json', targetPath);
|
|
168
|
+
if (await fsa.exists(catalogPath))
|
|
169
|
+
stacCatalog = await fsa.readJson(catalogPath);
|
|
170
|
+
// Add link for new collection
|
|
171
|
+
stacCatalog.links.push({
|
|
172
|
+
rel: 'child',
|
|
173
|
+
href: `./${CliId}/collection.json`,
|
|
174
|
+
created: CliDate,
|
|
175
|
+
type: 'application/json',
|
|
176
|
+
});
|
|
177
|
+
const item = fsa.toUrl(`tmp/join/${filename}.json`);
|
|
178
|
+
await fsa.write(item, JSON.stringify(stacItem, null, 2));
|
|
179
|
+
const collection = fsa.toUrl('tmp/join/collection.json');
|
|
180
|
+
await fsa.write(collection, JSON.stringify(stacCollection, null, 2));
|
|
181
|
+
const catalog = fsa.toUrl('tmp/join/catalog.json');
|
|
182
|
+
await fsa.write(catalog, JSON.stringify(stacCatalog, null, 2));
|
|
183
|
+
return [item, collection, catalog];
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=stac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stac.js","sourceRoot":"","sources":["../src/stac.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { fsa, SourceMemory } from '@basemaps/shared';
|
|
2
|
+
import { CotarIndexBuilder, TarReader } from '@cotar/builder';
|
|
3
|
+
import { CotarIndex } from '@cotar/core';
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
/**
|
|
6
|
+
* Create index for the COVT tar file
|
|
7
|
+
*/
|
|
8
|
+
export async function toTarIndex(input, output, logger) {
|
|
9
|
+
logger.info({ output: output }, 'Cotar.Index:Start');
|
|
10
|
+
const fd = await fs.open(input, 'r');
|
|
11
|
+
const opts = { packingFactor: 1.25, maxSearch: 50 }; // Default package rule.
|
|
12
|
+
const { buffer, count } = await CotarIndexBuilder.create(fd, opts);
|
|
13
|
+
const index = await CotarIndex.create(new SourceMemory('index', buffer));
|
|
14
|
+
await TarReader.validate(fd, index);
|
|
15
|
+
await fs.writeFile(output, buffer);
|
|
16
|
+
await fs.appendFile(input, buffer);
|
|
17
|
+
await fd.close();
|
|
18
|
+
if (!(await fsa.exists(fsa.toUrl(output))))
|
|
19
|
+
throw new Error('Error - Cotar.Index creation Failure.');
|
|
20
|
+
logger.info({ index, count }, 'Cotar.Index:Done');
|
|
21
|
+
return output;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=covt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"covt.js","sourceRoot":"","sources":["../../src/transform/covt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAqB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,MAAe;IAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAErD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAErC,MAAM,IAAI,GAAsB,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,wBAAwB;IAChG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAErG,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LogType } from '@basemaps/shared';
|
|
2
|
+
export interface TileTable {
|
|
3
|
+
zoom_level: number;
|
|
4
|
+
tile_column: number;
|
|
5
|
+
tile_row: number;
|
|
6
|
+
tile_data: Buffer;
|
|
7
|
+
}
|
|
8
|
+
export declare function xyzToPath(x: number | string, y: number | string, z: number | string, compressed?: boolean): string;
|
|
9
|
+
export declare function readMbTiles(fileName: string, limit: number | undefined, logger: LogType): Generator<{
|
|
10
|
+
tile: TileTable;
|
|
11
|
+
index: number;
|
|
12
|
+
total: number;
|
|
13
|
+
}, null>;
|
|
14
|
+
export declare function toTarTiles(input: string, output: string, logger: LogType, limit?: number): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import sq from 'node:sqlite';
|
|
2
|
+
import { createWriteStream } from 'fs';
|
|
3
|
+
import * as tar from 'tar-stream';
|
|
4
|
+
export function xyzToPath(x, y, z, compressed = true) {
|
|
5
|
+
return `tiles/${z}/${x}/${y}.pbf` + (compressed ? '.gz' : '');
|
|
6
|
+
}
|
|
7
|
+
export function* readMbTiles(fileName, limit = -1, logger) {
|
|
8
|
+
logger.debug({ file: fileName }, 'ReadMbTiles:Start');
|
|
9
|
+
const db = new sq.DatabaseSync(fileName);
|
|
10
|
+
let limitQuery = '';
|
|
11
|
+
if (limit > 0)
|
|
12
|
+
limitQuery = `LIMIT ${limit}`;
|
|
13
|
+
const getAll = db.prepare('SELECT count(*) as count FROM tiles;');
|
|
14
|
+
const totalRow = getAll.get();
|
|
15
|
+
const total = totalRow ? totalRow['count'] : 0;
|
|
16
|
+
const getTiles = db.prepare(`SELECT * FROM tiles ORDER BY zoom_level ${limitQuery}`);
|
|
17
|
+
const tiles = getTiles.all();
|
|
18
|
+
let index = 0;
|
|
19
|
+
for (const data of tiles) {
|
|
20
|
+
const tile = {
|
|
21
|
+
zoom_level: data['zoom_level'],
|
|
22
|
+
tile_column: data['tile_column'],
|
|
23
|
+
tile_row: data['tile_row'],
|
|
24
|
+
tile_data: Buffer.from(data['tile_data']),
|
|
25
|
+
};
|
|
26
|
+
yield { tile, index: index++, total };
|
|
27
|
+
}
|
|
28
|
+
logger.debug({ file: fileName }, 'ReadMbTiles:End');
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export async function toTarTiles(input, output, logger, limit = -1) {
|
|
32
|
+
const packer = tar.pack();
|
|
33
|
+
const startTime = Date.now();
|
|
34
|
+
let writeCount = 0;
|
|
35
|
+
const writeProm = new Promise((resolve) => packer.on('end', resolve));
|
|
36
|
+
packer.pipe(createWriteStream(output));
|
|
37
|
+
let startTileTime = Date.now();
|
|
38
|
+
for await (const { tile, index, total } of readMbTiles(input, limit, logger)) {
|
|
39
|
+
if (index === 0)
|
|
40
|
+
logger.info({ path: output, count: total }, 'Covt.Tar:Start');
|
|
41
|
+
const z = tile.zoom_level;
|
|
42
|
+
const x = tile.tile_column;
|
|
43
|
+
const y = tile.tile_row;
|
|
44
|
+
const tileName = xyzToPath(x, y, z);
|
|
45
|
+
const tileData = tile.tile_data;
|
|
46
|
+
packer.entry({ name: tileName }, tileData);
|
|
47
|
+
if (writeCount % 25_000 === 0) {
|
|
48
|
+
const percent = ((writeCount / index) * 100).toFixed(2);
|
|
49
|
+
const duration = Date.now() - startTileTime;
|
|
50
|
+
startTileTime = Date.now();
|
|
51
|
+
logger.debug({ current: writeCount, total: total, percent, duration }, 'Covt.Tar:WriteTile');
|
|
52
|
+
}
|
|
53
|
+
writeCount++;
|
|
54
|
+
}
|
|
55
|
+
logger.debug('Covt.Tar:Finalize');
|
|
56
|
+
packer.finalize();
|
|
57
|
+
await writeProm;
|
|
58
|
+
logger.info({ path: output, count: writeCount, duration: Date.now() - startTime }, 'Covt.Tar:Done');
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=mbtiles.to.ttiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mbtiles.to.ttiles.js","sourceRoot":"","sources":["../../src/transform/mbtiles.to.ttiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Nztm2000QuadTms, projectFeature } from '@basemaps/geo';
|
|
2
|
+
// Transform a GeoJSON feature to the NZTM projection
|
|
3
|
+
export function transformNdJson(feature) {
|
|
4
|
+
projectFeature(feature, Nztm2000QuadTms);
|
|
5
|
+
}
|
|
6
|
+
// Transform Zoom level to NZTM projection
|
|
7
|
+
export function transformZoom(z, tileMatrix) {
|
|
8
|
+
if (tileMatrix.identifier === Nztm2000QuadTms.identifier)
|
|
9
|
+
return Math.max(0, z - 2);
|
|
10
|
+
else
|
|
11
|
+
return z;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=nztm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nztm.js","sourceRoot":"","sources":["../../src/transform/nztm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAG/E,qDAAqD;AACrD,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC3C,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,UAAyB;IAChE,IAAI,UAAU,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;QAC/E,OAAO,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LogType } from '@basemaps/shared';
|
|
2
|
+
import { Layer } from '../schema-loader/schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* ogr2ogr GeoJSONSeq usage, return cmd for ogr2ogr
|
|
5
|
+
*
|
|
6
|
+
* @returns {cmd: string, args: string[]} cmd and arguments for ogr2ogr
|
|
7
|
+
*/
|
|
8
|
+
export declare function ogr2ogrNDJson(input: URL, output: URL, layer: Layer, logger: LogType): Promise<void>;
|
|
9
|
+
export declare function getTableName(input: URL, logger: LogType): Promise<string>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Epsg } from '@basemaps/geo';
|
|
2
|
+
import { Command } from '@linzjs/docker-command';
|
|
3
|
+
/**
|
|
4
|
+
* ogr2ogr GeoJSONSeq usage, return cmd for ogr2ogr
|
|
5
|
+
*
|
|
6
|
+
* @returns {cmd: string, args: string[]} cmd and arguments for ogr2ogr
|
|
7
|
+
*/
|
|
8
|
+
export async function ogr2ogrNDJson(input, output, layer, logger) {
|
|
9
|
+
const cmd = Command.create('ogr2ogr');
|
|
10
|
+
cmd.args.push('-f', 'GeoJSONSeq');
|
|
11
|
+
cmd.args.push(output.pathname);
|
|
12
|
+
cmd.args.push('-t_srs', Epsg.Wgs84.toEpsgString());
|
|
13
|
+
// Calculate area for lake polygons
|
|
14
|
+
if (layer.includeDerivedArea) {
|
|
15
|
+
const table = await getTableName(input, logger);
|
|
16
|
+
cmd.args.push('-dialect', 'SQLite');
|
|
17
|
+
cmd.args.push('-sql', `SELECT *, ST_Area(geom) AS _derived_area FROM "${table}"`);
|
|
18
|
+
}
|
|
19
|
+
cmd.args.push(input.pathname);
|
|
20
|
+
const res = await cmd.run();
|
|
21
|
+
if (res.exitCode !== 0) {
|
|
22
|
+
logger.fatal({ Gdal: res }, 'Failure');
|
|
23
|
+
throw new Error('Gdal failed to run');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function getTableName(input, logger) {
|
|
27
|
+
const cmd = Command.create('ogrinfo');
|
|
28
|
+
cmd.args.push('-ro');
|
|
29
|
+
cmd.args.push('-q');
|
|
30
|
+
cmd.args.push('-json');
|
|
31
|
+
cmd.args.push(input.pathname);
|
|
32
|
+
const res = await cmd.run();
|
|
33
|
+
if (res.exitCode !== 0) {
|
|
34
|
+
logger.fatal({ Gdal: res }, 'Failure');
|
|
35
|
+
throw new Error('Gdal failed to run');
|
|
36
|
+
}
|
|
37
|
+
const info = JSON.parse(res.stdout);
|
|
38
|
+
if (info.layers == null || info.layers.length === 0) {
|
|
39
|
+
throw new Error(`No layers found in ${input.pathname}`);
|
|
40
|
+
}
|
|
41
|
+
return info.layers[0].name; // Return the first layer name
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ogr2ogr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ogr2ogr.js","sourceRoot":"","sources":["../../src/transform/ogr2ogr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAU,EAAE,MAAW,EAAE,KAAY,EAAE,MAAe;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnD,mCAAmC;IACnC,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kDAAkD,KAAK,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAU,EAAE,MAAe;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAE5B,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAmC,CAAC;IACtE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,8BAA8B;AAC5D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TileMatrixSet } from '@basemaps/geo';
|
|
2
|
+
import { LogType } from '@basemaps/shared';
|
|
3
|
+
import { Layer } from '../schema-loader/schema.js';
|
|
4
|
+
/**
|
|
5
|
+
* tippecanoe usage, return cmd for tippecanoe
|
|
6
|
+
*
|
|
7
|
+
* @returns { cmd: string; args: string[] } cmd and arguments for tippecanoe docker command
|
|
8
|
+
*/
|
|
9
|
+
export declare function tippecanoe(input: URL, output: URL, layer: Layer, tileMatrix: TileMatrixSet, logger: LogType): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* tippecanoe tile-join usage, return cmd for tile-join
|
|
12
|
+
*
|
|
13
|
+
* @returns { cmd: string; args: string[] } cmd and arguments for tippecanoe tile-join docker command
|
|
14
|
+
*/
|
|
15
|
+
export declare function tileJoin(inputs: URL[], output: string, logger: LogType): Promise<void>;
|