@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.
Files changed (98) hide show
  1. package/build/bin.js +2 -2
  2. package/build/cli/cli.analyse.d.ts +34 -0
  3. package/build/cli/cli.analyse.js +152 -0
  4. package/build/cli/cli.analyse.js.map +1 -0
  5. package/build/cli/cli.create.d.ts +39 -0
  6. package/build/cli/cli.create.js +211 -0
  7. package/build/cli/cli.create.js.map +1 -0
  8. package/build/cli/cli.extract.d.ts +8 -17
  9. package/build/cli/cli.extract.js +43 -33
  10. package/build/cli/cli.extract.js.map +1 -1
  11. package/build/cli/cli.join.d.ts +44 -0
  12. package/build/cli/cli.join.js +149 -0
  13. package/build/cli/cli.join.js.map +1 -0
  14. package/build/extract.js.map +1 -0
  15. package/build/generalization/generalization.d.ts +10 -0
  16. package/build/generalization/generalization.js +168 -0
  17. package/build/generalization/generalization.js.map +1 -0
  18. package/build/generalization/simplify.d.ts +2 -0
  19. package/build/generalization/simplify.js +80 -0
  20. package/build/generalization/simplify.js.map +1 -0
  21. package/build/index.d.ts +83 -5
  22. package/build/index.js +7 -1
  23. package/build/index.js.map +1 -1
  24. package/build/modify/consts.d.ts +1 -0
  25. package/build/modify/consts.js +23 -0
  26. package/build/modify/consts.js.map +1 -0
  27. package/build/modify/layers/__test__/contours.test.d.ts +1 -0
  28. package/build/modify/layers/__test__/contours.test.js +59 -0
  29. package/build/modify/layers/__test__/contours.test.js.map +1 -0
  30. package/build/modify/layers/contours.d.ts +28 -0
  31. package/build/modify/layers/contours.js +90 -0
  32. package/build/modify/layers/contours.js.map +1 -0
  33. package/build/modify/layers/place_labels.d.ts +18 -0
  34. package/build/modify/layers/place_labels.js +117 -0
  35. package/build/modify/layers/place_labels.js.map +1 -0
  36. package/build/modify/layers/pois.d.ts +11 -0
  37. package/build/modify/layers/pois.js +32 -0
  38. package/build/modify/layers/pois.js.map +1 -0
  39. package/build/modify/layers/public_transport.d.ts +12 -0
  40. package/build/modify/layers/public_transport.js +41 -0
  41. package/build/modify/layers/public_transport.js.map +1 -0
  42. package/build/modify/layers/street_labels.d.ts +12 -0
  43. package/build/modify/layers/street_labels.js +34 -0
  44. package/build/modify/layers/street_labels.js.map +1 -0
  45. package/build/modify/layers/streets.d.ts +12 -0
  46. package/build/modify/layers/streets.js +72 -0
  47. package/build/modify/layers/streets.js.map +1 -0
  48. package/build/modify/layers/water.d.ts +13 -0
  49. package/build/modify/layers/water.js +82 -0
  50. package/build/modify/layers/water.js.map +1 -0
  51. package/build/modify/modify.d.ts +11 -0
  52. package/build/modify/modify.js +49 -0
  53. package/build/modify/modify.js.map +1 -0
  54. package/build/modify/parser.d.ts +47 -0
  55. package/build/modify/parser.js +24 -0
  56. package/build/modify/parser.js.map +1 -0
  57. package/build/modify/schema.d.ts +17 -0
  58. package/build/modify/schema.js +2 -0
  59. package/build/modify/schema.js.map +1 -0
  60. package/build/modify/shared.d.ts +7 -0
  61. package/build/modify/shared.js +53 -0
  62. package/build/modify/shared.js.map +1 -0
  63. package/build/schema-loader/parser.d.ts +16 -0
  64. package/build/schema-loader/parser.js +2 -0
  65. package/build/schema-loader/parser.js.map +1 -1
  66. package/build/schema-loader/schema.d.ts +21 -5
  67. package/build/schema-loader/schema.loader.d.ts +3 -1
  68. package/build/schema-loader/schema.loader.js +18 -6
  69. package/build/schema-loader/schema.loader.js.map +1 -1
  70. package/build/stac.d.ts +41 -0
  71. package/build/stac.js +185 -0
  72. package/build/stac.js.map +1 -0
  73. package/build/transform/covt.d.ts +5 -0
  74. package/build/transform/covt.js +23 -0
  75. package/build/transform/covt.js.map +1 -0
  76. package/build/transform/mbtiles.to.ttiles.d.ts +14 -0
  77. package/build/transform/mbtiles.to.ttiles.js +60 -0
  78. package/build/transform/mbtiles.to.ttiles.js.map +1 -0
  79. package/build/transform/nztm.d.ts +4 -0
  80. package/build/transform/nztm.js +13 -0
  81. package/build/transform/nztm.js.map +1 -0
  82. package/build/transform/ogr2ogr.d.ts +9 -0
  83. package/build/transform/ogr2ogr.js +43 -0
  84. package/build/transform/ogr2ogr.js.map +1 -0
  85. package/build/transform/tippecanoe.d.ts +15 -0
  86. package/build/transform/tippecanoe.js +69 -0
  87. package/build/transform/tippecanoe.js.map +1 -0
  88. package/build/types/VectorGeoFeature.d.ts +9 -0
  89. package/build/types/VectorGeoFeature.js +2 -0
  90. package/build/types/VectorGeoFeature.js.map +1 -0
  91. package/build/util.d.ts +35 -0
  92. package/build/util.js +43 -0
  93. package/build/util.js.map +1 -0
  94. package/dist/index.cjs +20809 -9550
  95. package/package.json +23 -8
  96. package/build/extract/extract.js.map +0 -1
  97. /package/build/{extract/extract.d.ts → extract.d.ts} +0 -0
  98. /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
- input: number;
79
- output: number;
80
- };
92
+ metrics?: Metrics;
93
+ /** cached mbtile filename */
94
+ fileName?: URL;
81
95
  /** cached mbtile location */
82
- cache?: URL;
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/extract.js';
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({ ...layer, version: CliInfo.version }));
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
- layer.cache = new URL(fileName, this.cache);
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;AAChD,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4CAA4C;AAEzF,MAAM,OAAO,YAAY;IAKvB,YAAY,IAAS,EAAE,MAAe,EAAE,KAAW;QAJnD;;;;;WAAU;QACV;;;;;WAAgB;QAChB;;;;mBAAoB,EAAE;WAAC;QACvB;;;;;WAAY;QAEV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,oBAAoB;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC5B,eAAe;wBACf,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,4BAA4B,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;gBAAE,SAAS;YACpC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,qBAAqB;gBACrB,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;oBAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAExF,kDAAkD;gBAClD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBAC5D,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjC,IAAI,IAAI,IAAI,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAC;oBAClF,yCAAyC;oBACzC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC7B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACpC,CAAC;gBAED,wEAAwE;gBACxE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,IAAI,QAAQ,IAAI,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;gBAC/F,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,gBAAgB;oBAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvF,mCAAmC;gBACnC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,SAAS;wBACxB,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,UAAU,UAAU;wBACtD,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,UAAU,UAAU,CAAC;oBACxC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,kBAAkB;QAClB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,iDAAiD;QACjD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"schema.loader.js","sourceRoot":"","sources":["../../src/schema-loader/schema.loader.ts"],"names":[],"mappings":"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"}
@@ -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":"AAAA,OAAO,EAAe,MAAM,EAAiB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,MAAM,EAAc,MAAM,2BAA2B,CAAC;AAmC/D,MAAM,SAAS,GAAmB;IAChC,EAAE,IAAI,EAAE,8BAA8B,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;CACzG,CAAC;AAEF,MAAM,OAAO,UAAU;IAMrB,YAAY,MAAe;QAL3B;;;;;WAAgB;QAEhB,wEAAwE;QACxE;;;;mBAAyB,EAAE;WAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,KAAY;QACpD,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,iCAAiC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,+BAA+B,CAAC,CAAC;YACvE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAiB,cAAc,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAa;gBACzB,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAClB,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,WAAW,EAAE,gBAAgB,CAAC,KAAK;gBACnC,aAAa,EAAE,KAAK,CAAC,OAAO;gBAC5B,iBAAiB,EAAE,CAAC,WAAW,CAAC;gBAChC,IAAI,EAAE,oDAAoD,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,OAAO,GAAG;aAChG,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC1B,QAAQ,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtD,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,oCAAoC,CAAC,CAAC;YAC5E,sCAAsC;YACtC,MAAM,QAAQ,GAAa;gBACzB,GAAG,EAAE,OAAO;gBACZ,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,iBAAiB,EAAE,WAAW;gBAC9B,IAAI,EAAE,oDAAoD,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,OAAO,GAAG;aAChG,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,cAAc,CACZ,MAAkB,EAClB,QAAgB,EAChB,UAAyB,EACzB,OAA+B;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAmB;YAC3B,EAAE,EAAE,GAAG,KAAK,IAAI,QAAQ,EAAE;YAC1B,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;YAChC,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,KAAK,QAAQ,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;gBAC3C,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,YAAY,EAAE;gBAChD,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,QAAQ,EAAE;gBAC5C,GAAG,MAAM;aACV;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI;gBACvC,yBAAyB,EAAE;oBACzB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ,EAAE,OAAO;iBAClB;aACF;YACD,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,+CAA+C;QAC/C,IAAI,OAAO,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC;QAExE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,KAAe,EAAE,MAAkB,EAAE,QAAgB,EAAE,KAAa;QACvF,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,EAAE;YACnB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,KAAK,GAAG,KAAK;YACjB,KAAK;YACL,WAAW,EAAE,uBAAuB;YACpC,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,IAAI,EAAE,CAAC,KAAK,CAAC;iBACd;gBACD,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE;aAC1C;YACD,KAAK,EAAE;gBACL,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,EAAE;gBACpE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,QAAQ,OAAO,EAAE;gBAC3C,GAAG,MAAM;aACV;YACD,SAAS;YACT,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,EAAE;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,8CAA8C;YAC3D,EAAE,EAAE,KAAK,GAAG,KAAK;YACjB,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAgB,EAChB,UAAe,EACf,QAAgB,EAChB,UAAyB,EACzB,KAAa,EACb,MAAe;IAEf,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,0BAA0B;IAC1B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,GAAa,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAE,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAA2B,CAAC,KAAK,CAAC,CAAC;QACtG,MAAM,IAAI,GAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAsB,CAAC,IAAI,CAAC;QACjF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,IAAI,SAAS,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnG,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACpB,QAAQ,CAAC,iBAAiB,CAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,mBAAmB;IACnB,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEzE,aAAa;IACb,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,GAAG;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,UAAU,CAAC,SAAS,EAAE;KACpC,CAAC;IAEF,yBAAyB;IACzB,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE3F,sBAAsB;IACtB,IAAI,WAAW,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAAE,WAAW,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAc,WAAW,CAAC,CAAC;IAC9F,8BAA8B;IAC9B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;QACrB,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,KAAK,KAAK,kBAAkB;QAClC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,kBAAkB;KACzB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,QAAQ,OAAO,CAAC,CAAC;IACpD,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACzD,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/D,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { LogType } from '@basemaps/shared';
2
+ /**
3
+ * Create index for the COVT tar file
4
+ */
5
+ export declare function toTarIndex(input: string, output: string, logger: LogType): Promise<string>;
@@ -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,4 @@
1
+ import { TileMatrixSet } from '@basemaps/geo';
2
+ import { Feature } from 'geojson';
3
+ export declare function transformNdJson(feature: Feature): void;
4
+ export declare function transformZoom(z: number, tileMatrix: TileMatrixSet): number;
@@ -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>;