@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.
Files changed (94) 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 +207 -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 +9 -0
  16. package/build/generalization/generalization.js +159 -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 +122 -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 +27 -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 +53 -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_polygons.d.ts +13 -0
  49. package/build/modify/layers/water_polygons.js +85 -0
  50. package/build/modify/layers/water_polygons.js.map +1 -0
  51. package/build/modify/modify.d.ts +11 -0
  52. package/build/modify/modify.js +48 -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 +4 -0
  61. package/build/modify/shared.js +38 -0
  62. package/build/modify/shared.js.map +1 -0
  63. package/build/schema-loader/parser.d.ts +8 -0
  64. package/build/schema-loader/parser.js +1 -0
  65. package/build/schema-loader/parser.js.map +1 -1
  66. package/build/schema-loader/schema.d.ts +19 -5
  67. package/build/schema-loader/schema.loader.js +10 -5
  68. package/build/schema-loader/schema.loader.js.map +1 -1
  69. package/build/stac.d.ts +41 -0
  70. package/build/stac.js +185 -0
  71. package/build/stac.js.map +1 -0
  72. package/build/transform/covt.d.ts +5 -0
  73. package/build/transform/covt.js +23 -0
  74. package/build/transform/covt.js.map +1 -0
  75. package/build/transform/mbtiles.to.ttiles.d.ts +14 -0
  76. package/build/transform/mbtiles.to.ttiles.js +60 -0
  77. package/build/transform/mbtiles.to.ttiles.js.map +1 -0
  78. package/build/transform/ogr2ogr.d.ts +7 -0
  79. package/build/transform/ogr2ogr.js +20 -0
  80. package/build/transform/ogr2ogr.js.map +1 -0
  81. package/build/transform/tippecanoe.d.ts +14 -0
  82. package/build/transform/tippecanoe.js +68 -0
  83. package/build/transform/tippecanoe.js.map +1 -0
  84. package/build/types/VectorGeoFeature.d.ts +9 -0
  85. package/build/types/VectorGeoFeature.js +2 -0
  86. package/build/types/VectorGeoFeature.js.map +1 -0
  87. package/build/util.d.ts +35 -0
  88. package/build/util.js +43 -0
  89. package/build/util.js.map +1 -0
  90. package/dist/index.cjs +20753 -9551
  91. package/package.json +23 -8
  92. package/build/extract/extract.js.map +0 -1
  93. /package/build/{extract/extract.d.ts → extract.d.ts} +0 -0
  94. /package/build/{extract/extract.js → extract.js} +0 -0
@@ -0,0 +1,34 @@
1
+ import { handleRoadFeature } from '../shared.js';
2
+ /**
3
+ * Processes a 'street_labels' layer feature.
4
+ *
5
+ * @param feature - the feature to process
6
+ * @param options - the layer's options
7
+ * @param logger - a logger instance
8
+ * @returns the processed feature
9
+ */
10
+ export function handleLayerStreetLabels(feature, options, logger) {
11
+ logger.trace({}, 'HandleStreetLabels:Start');
12
+ const kind = options.layer.tags['kind'];
13
+ switch (kind) {
14
+ case 'road':
15
+ feature = handleKindRoad(feature, options, logger);
16
+ break;
17
+ }
18
+ logger.trace({}, 'HandleStreetLabels:End');
19
+ return feature;
20
+ }
21
+ /**
22
+ * Processes a 'street_labels' layer feature with a 'kind' value of 'road'.
23
+ *
24
+ * @param feature - the feature to process
25
+ * @param logger - a logger instance
26
+ * @returns the processed feature
27
+ */
28
+ function handleKindRoad(feature, options, logger) {
29
+ logger.trace({}, 'HandleKindRoad:Start');
30
+ feature = handleRoadFeature(feature, options, logger);
31
+ logger.trace({}, 'HandleKindRoad:End');
32
+ return feature;
33
+ }
34
+ //# sourceMappingURL=street_labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"street_labels.js","sourceRoot":"","sources":["../../../src/modify/layers/street_labels.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAyB,EACzB,OAA8B,EAC9B,MAAe;IAEf,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAAyB,EAAE,OAA8B,EAAE,MAAe;IAChG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;IACzC,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEtD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { LogType } from '@basemaps/shared';
2
+ import { VectorCreationOptions } from '../../stac.js';
3
+ import { VectorGeoFeature } from '../../types/VectorGeoFeature.js';
4
+ /**
5
+ * Processes a 'streets' layer feature.
6
+ *
7
+ * @param feature - the feature to process
8
+ * @param options - the layer's options
9
+ * @param logger - a logger instance
10
+ * @returns the processed feature
11
+ */
12
+ export declare function handleLayerStreets(feature: VectorGeoFeature, options: VectorCreationOptions, logger: LogType): VectorGeoFeature;
@@ -0,0 +1,72 @@
1
+ import { handleRoadFeature } from '../shared.js';
2
+ /**
3
+ * Processes a 'streets' layer feature.
4
+ *
5
+ * @param feature - the feature to process
6
+ * @param options - the layer's options
7
+ * @param logger - a logger instance
8
+ * @returns the processed feature
9
+ */
10
+ export function handleLayerStreets(feature, options, logger) {
11
+ logger.trace({}, 'HandleStreets:Start');
12
+ feature = structuredClone(feature);
13
+ const kind = options.layer.tags['kind'];
14
+ switch (kind) {
15
+ case 'road':
16
+ feature = handleKindRoad(feature, options, logger);
17
+ break;
18
+ case 'track':
19
+ feature = handleKindTrack(feature, logger);
20
+ break;
21
+ }
22
+ Object.entries(feature.properties).forEach(([key, value]) => {
23
+ // Update bridge and tunnel to boolean
24
+ if (value === 'true') {
25
+ feature.properties[key] = true;
26
+ }
27
+ else if (value === 'false') {
28
+ feature.properties[key] = false;
29
+ }
30
+ });
31
+ logger.trace({}, 'HandleStreets:End');
32
+ return feature;
33
+ }
34
+ /**
35
+ * Processes a 'streets' layer feature with a 'kind' value of 'road'.
36
+ *
37
+ * @param feature - the feature to process
38
+ * @param logger - a logger instance
39
+ * @returns the processed feature
40
+ */
41
+ function handleKindRoad(feature, options, logger) {
42
+ logger.trace({}, 'HandleKindRoad:Start');
43
+ feature = handleRoadFeature(feature, options, logger);
44
+ logger.trace({}, 'HandleKindRoad:End');
45
+ return feature;
46
+ }
47
+ /**
48
+ * Processes a 'streets' layer feature with a 'kind' value of 'track'.
49
+ *
50
+ * @param feature - the feature to process
51
+ * @param logger - a logger instance
52
+ * @returns the processed feature
53
+ */
54
+ function handleKindTrack(feature, logger) {
55
+ logger.trace({}, 'HandleKindTrack:Start');
56
+ feature = structuredClone(feature);
57
+ // calculate the 'subclass' property
58
+ let subclass = feature.properties['track_use'];
59
+ const trackType = feature.properties['track_type'];
60
+ if (trackType != null)
61
+ subclass += `_${trackType}`;
62
+ const status = feature.properties['status'];
63
+ if (status != null)
64
+ subclass += `_${status}`;
65
+ // append/override tags
66
+ feature.properties['subclass'] = subclass;
67
+ logger.trace({ subclass }, 'new/overidden tags');
68
+ // return feature
69
+ logger.trace({}, 'HandleKindTrack:End');
70
+ return feature;
71
+ }
72
+ //# sourceMappingURL=streets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streets.js","sourceRoot":"","sources":["../../../src/modify/layers/streets.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAyB,EACzB,OAA8B,EAC9B,MAAe;IAEf,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACxC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,OAAO;YACV,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM;IACV,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1D,sCAAsC;QACtC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAAyB,EAAE,OAA8B,EAAE,MAAe;IAChG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;IACzC,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEtD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,OAAyB,EAAE,MAAe;IACjE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC1C,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEnC,oCAAoC;IACpC,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,SAAS,IAAI,IAAI;QAAE,QAAQ,IAAI,IAAI,SAAS,EAAE,CAAC;IAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,IAAI;QAAE,QAAQ,IAAI,IAAI,MAAM,EAAE,CAAC;IAE7C,uBAAuB;IACvB,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAEjD,iBAAiB;IACjB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { LogType } from '@basemaps/shared';
2
+ import { VectorCreationOptions } from '../../stac.js';
3
+ import { VectorGeoFeature } from '../../types/VectorGeoFeature.js';
4
+ export declare const LargeLakeSize = 4000000;
5
+ /**
6
+ * Processes a 'water_polygons' layer feature.
7
+ *
8
+ * @param feature - the feature to process
9
+ * @param options - the layer's options
10
+ * @param logger - a logger instance
11
+ * @returns the processed feature
12
+ */
13
+ export declare function handleLayerWaterPolygons(feature: VectorGeoFeature, options: VectorCreationOptions, logger: LogType): VectorGeoFeature;
@@ -0,0 +1,85 @@
1
+ import { Area } from '@linzjs/geojson';
2
+ export const LargeLakeSize = 4_000_000;
3
+ /**
4
+ * Processes a 'water_polygons' layer feature.
5
+ *
6
+ * @param feature - the feature to process
7
+ * @param options - the layer's options
8
+ * @param logger - a logger instance
9
+ * @returns the processed feature
10
+ */
11
+ export function handleLayerWaterPolygons(feature, options, logger) {
12
+ logger.trace({}, 'HandleWaterPolygons:Start');
13
+ feature = structuredClone(feature);
14
+ const kind = options.layer.tags['kind'];
15
+ switch (kind) {
16
+ case 'water':
17
+ feature = handleKindWater(feature, logger);
18
+ break;
19
+ case 'river':
20
+ feature = handleKindRiver(feature, options, logger);
21
+ break;
22
+ }
23
+ const orientatn = feature.properties['orientatn'];
24
+ if (orientatn != null) {
25
+ const direction = orientatn;
26
+ feature.properties['direction'] = direction;
27
+ logger.trace({ direction }, 'new/overidden tags');
28
+ }
29
+ logger.trace({}, 'HandleWaterPolygons:End');
30
+ return feature;
31
+ }
32
+ /**
33
+ * Processes a 'water_polygons' layer feature with a 'kind' value of 'water'.
34
+ *
35
+ * @param feature - the feature to process
36
+ * @param logger - a logger instance
37
+ * @returns the processed feature
38
+ */
39
+ function handleKindWater(feature, logger) {
40
+ logger.trace({}, 'HandleKindWater:Start');
41
+ feature = structuredClone(feature);
42
+ const name = feature.properties['name'];
43
+ if (name == null) {
44
+ // inherit the lake's name from the feature's 'grp_name' property
45
+ const grpName = feature.properties['grp_name'];
46
+ feature.properties['name'] = grpName;
47
+ logger.trace({ name: grpName }, 'new/overidden tags');
48
+ }
49
+ // determine if the lake is large
50
+ let area = 0;
51
+ if (feature.geometry.type === 'MultiPolygon') {
52
+ area = Area.multiPolygon(feature.geometry.coordinates);
53
+ }
54
+ else if (feature.geometry.type === 'Polygon') {
55
+ // for a single polygon, we can use the Area.polygon method directly
56
+ area = Area.polygon(feature.geometry.coordinates);
57
+ }
58
+ const minzoom = area >= LargeLakeSize ? 1 : 9;
59
+ feature.tippecanoe.minzoom = minzoom;
60
+ logger.trace({ minzoom }, 'overidden styles');
61
+ logger.trace({}, 'HandleKindWater:End');
62
+ return feature;
63
+ }
64
+ /**
65
+ * Processes a 'water_polygons' layer feature with a 'kind' value of 'river'.
66
+ *
67
+ * @param feature - the feature to process
68
+ * @param logger - a logger instance
69
+ * @returns the processed feature
70
+ */
71
+ function handleKindRiver(feature, options, logger) {
72
+ logger.trace({}, 'HandleKindRiver:Start');
73
+ feature = structuredClone(feature);
74
+ if (options.layer.style.minZoom < 11) {
75
+ const name = feature.properties['name'];
76
+ if (name === '') {
77
+ const minzoom = 11;
78
+ feature.tippecanoe.minzoom = minzoom;
79
+ logger.trace({ minzoom }, 'overidden styles');
80
+ }
81
+ }
82
+ logger.trace({}, 'HandleKindRiver:End');
83
+ return feature;
84
+ }
85
+ //# sourceMappingURL=water_polygons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"water_polygons.js","sourceRoot":"","sources":["../../../src/modify/layers/water_polygons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { LogType } from '@basemaps/shared';
2
+ import { VectorCreationOptions } from '../stac.js';
3
+ import { VectorGeoFeature } from '../types/VectorGeoFeature.js';
4
+ /**
5
+ * special tag function to check if the name to decide whether to do special tags
6
+ * Include like place_labels, pois(for building poi), contours, public_transport, street_labels/streets, water_lines/water_polygons
7
+ *
8
+ * For a given feature and the Shortbread layer to which we've assigned it, we may need to adjust the feature's metadata (i.e. properties) so that we can distinguish it from others in the same layer.
9
+ * Such distinctions include marking road-type features based on whether they describe motorway, primary, or secondary roads, so we can style each set differently.
10
+ */
11
+ export declare function modifyFeature(feature: VectorGeoFeature, options: VectorCreationOptions, logger: LogType): VectorGeoFeature | null;
@@ -0,0 +1,48 @@
1
+ import { handleLayerContours } from './layers/contours.js';
2
+ import { handleLayerPlaceLabels } from './layers/place_labels.js';
3
+ import { handleLayerPois } from './layers/pois.js';
4
+ import { handleLayerPublicTransport } from './layers/public_transport.js';
5
+ import { handleLayerStreetLabels } from './layers/street_labels.js';
6
+ import { handleLayerStreets } from './layers/streets.js';
7
+ import { handleLayerWaterPolygons } from './layers/water_polygons.js';
8
+ /**
9
+ * special tag function to check if the name to decide whether to do special tags
10
+ * Include like place_labels, pois(for building poi), contours, public_transport, street_labels/streets, water_lines/water_polygons
11
+ *
12
+ * For a given feature and the Shortbread layer to which we've assigned it, we may need to adjust the feature's metadata (i.e. properties) so that we can distinguish it from others in the same layer.
13
+ * Such distinctions include marking road-type features based on whether they describe motorway, primary, or secondary roads, so we can style each set differently.
14
+ */
15
+ export function modifyFeature(feature, options, logger) {
16
+ const id = options.layer.id; // lds dataset id
17
+ const layerName = options.name; // shortbread layer
18
+ logger.trace({ id, layerName }, 'ModifyFeature:Start');
19
+ let modifiedFeature;
20
+ switch (layerName) {
21
+ case 'contours':
22
+ modifiedFeature = handleLayerContours(feature, options, logger);
23
+ break;
24
+ case 'place_labels':
25
+ modifiedFeature = handleLayerPlaceLabels(feature, logger);
26
+ break;
27
+ case 'pois':
28
+ modifiedFeature = handleLayerPois(feature, logger);
29
+ break;
30
+ case 'public_transport':
31
+ modifiedFeature = handleLayerPublicTransport(feature, options, logger);
32
+ break;
33
+ case 'street_labels':
34
+ modifiedFeature = handleLayerStreetLabels(feature, options, logger);
35
+ break;
36
+ case 'streets':
37
+ modifiedFeature = handleLayerStreets(feature, options, logger);
38
+ break;
39
+ case 'water_polygons':
40
+ modifiedFeature = handleLayerWaterPolygons(feature, options, logger);
41
+ break;
42
+ default:
43
+ modifiedFeature = structuredClone(feature);
44
+ }
45
+ logger.trace({ id, layerName }, 'ModifyFeature:End');
46
+ return modifiedFeature;
47
+ }
48
+ //# sourceMappingURL=modify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modify.js","sourceRoot":"","sources":["../../src/modify/modify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,OAA8B,EAC9B,MAAe;IAEf,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,iBAAiB;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB;IAEnD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACvD,IAAI,eAAwC,CAAC;IAE7C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM;QACR,KAAK,cAAc;YACjB,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM;QACR,KAAK,MAAM;YACT,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,kBAAkB;YACrB,eAAe,GAAG,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvE,MAAM;QACR,KAAK,eAAe;YAClB,eAAe,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM;QACR,KAAK,SAAS;YACZ,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/D,MAAM;QACR,KAAK,gBAAgB;YACnB,eAAe,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM;QACR;YACE,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ export declare const zPlaceLabelsProperties: z.ZodObject<{
3
+ /** @example "Kaitaia" */
4
+ label: z.ZodString;
5
+ /** @example "TWN1" */
6
+ style: z.ZodString;
7
+ /** @example "city" */
8
+ place: z.ZodString;
9
+ /** @example 7 */
10
+ adminlevel: z.ZodNumber;
11
+ /** @example "0" */
12
+ natural: z.ZodString;
13
+ /** @example "0" */
14
+ water: z.ZodString;
15
+ }, "strip", z.ZodTypeAny, {
16
+ style: string;
17
+ label: string;
18
+ place: string;
19
+ adminlevel: number;
20
+ natural: string;
21
+ water: string;
22
+ }, {
23
+ style: string;
24
+ label: string;
25
+ place: string;
26
+ adminlevel: number;
27
+ natural: string;
28
+ water: string;
29
+ }>;
30
+ export declare const zPlaceLabelsTippecanoe: z.ZodObject<{
31
+ /** @example "place_labels" */
32
+ layer: z.ZodString;
33
+ /** @example 8 */
34
+ minzoom: z.ZodNumber;
35
+ /** @example 8 */
36
+ maxzoom: z.ZodNumber;
37
+ }, "strip", z.ZodTypeAny, {
38
+ layer: string;
39
+ minzoom: number;
40
+ maxzoom: number;
41
+ }, {
42
+ layer: string;
43
+ minzoom: number;
44
+ maxzoom: number;
45
+ }>;
46
+ export type zTypePlaceLabelsProperties = z.infer<typeof zPlaceLabelsProperties>;
47
+ export type zTypePlaceLabelsTippecanoe = z.infer<typeof zPlaceLabelsTippecanoe>;
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export const zPlaceLabelsProperties = z.object({
3
+ /** @example "Kaitaia" */
4
+ label: z.string(),
5
+ /** @example "TWN1" */
6
+ style: z.string(),
7
+ /** @example "city" */
8
+ place: z.string(),
9
+ /** @example 7 */
10
+ adminlevel: z.number(),
11
+ /** @example "0" */
12
+ natural: z.string(),
13
+ /** @example "0" */
14
+ water: z.string(),
15
+ });
16
+ export const zPlaceLabelsTippecanoe = z.object({
17
+ /** @example "place_labels" */
18
+ layer: z.string(),
19
+ /** @example 8 */
20
+ minzoom: z.number(),
21
+ /** @example 8 */
22
+ maxzoom: z.number(),
23
+ });
24
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/modify/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,yBAAyB;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,sBAAsB;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,sBAAsB;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,iBAAiB;IACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAEtB,mBAAmB;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IAEnB,mBAAmB;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,8BAA8B;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,iBAAiB;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IAEnB,iBAAiB;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { VectorGeoFeature } from '../types/VectorGeoFeature.js';
2
+ export interface VectorGeoPlaceLabelsFeature extends VectorGeoFeature {
3
+ properties: {
4
+ /** @example "Kaitaia" */
5
+ name: string;
6
+ /** @example "ant" */
7
+ kind: string;
8
+ /** @example "city" */
9
+ place: string;
10
+ /** @example 7 */
11
+ adminlevel: number;
12
+ /** @example "0" */
13
+ natural: string;
14
+ /** @example "0" */
15
+ water: string;
16
+ };
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/modify/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { LogType } from '@basemaps/shared';
2
+ import { VectorCreationOptions } from '../stac.js';
3
+ import { VectorGeoFeature } from '../types/VectorGeoFeature.js';
4
+ export declare function handleRoadFeature(feature: VectorGeoFeature, options: VectorCreationOptions, logger: LogType): VectorGeoFeature;
@@ -0,0 +1,38 @@
1
+ import { MajorHighWays } from './consts.js';
2
+ export function handleRoadFeature(feature, options, logger) {
3
+ logger.trace({}, 'HandleRoadFeature:Start');
4
+ feature = structuredClone(feature);
5
+ const highwayNum = feature.properties['hway_num'];
6
+ if (typeof highwayNum === 'string') {
7
+ // append/override tags
8
+ const kind = 'motorway';
9
+ feature.properties['kind'] = kind;
10
+ const ref = highwayNum;
11
+ feature.properties['ref'] = ref;
12
+ logger.trace({ kind, ref }, 'new/overidden tags');
13
+ // override styles
14
+ const minzoom = MajorHighWays.has(highwayNum) ? 2 : 8;
15
+ feature.tippecanoe.minzoom = minzoom;
16
+ logger.trace({ minzoom }, 'overidden styles');
17
+ // return feature
18
+ logger.trace({}, 'HandleRoadFeature:End');
19
+ return feature;
20
+ }
21
+ const laneCount = feature.properties['lane_count'];
22
+ if (typeof laneCount === 'number') {
23
+ // append/override tags
24
+ const kind = laneCount >= 4 ? 'primary' : 'secondary';
25
+ feature.properties['kind'] = kind;
26
+ logger.trace({ kind }, 'new/overidden tags');
27
+ }
28
+ // override styles
29
+ if (options.layer.style.minZoom < 10) {
30
+ const minzoom = 10;
31
+ feature.tippecanoe.minzoom = minzoom;
32
+ logger.trace({ minzoom }, 'overidden styles');
33
+ }
34
+ // return feature
35
+ logger.trace({}, 'HandleRoadFeature:End');
36
+ return feature;
37
+ }
38
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/modify/shared.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,iBAAiB,CAC/B,OAAyB,EACzB,OAA8B,EAC9B,MAAe;IAEf,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAC5C,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,uBAAuB;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAClC,MAAM,GAAG,GAAG,UAAU,CAAC;QACvB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAElD,kBAAkB;QAClB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAE9C,iBAAiB;QACjB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,uBAAuB;QACvB,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QACtD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -57,6 +57,7 @@ export declare const zSimplify: z.ZodObject<{
57
57
  export declare const zLayer: z.ZodObject<{
58
58
  id: z.ZodString;
59
59
  name: z.ZodString;
60
+ version: z.ZodOptional<z.ZodNumber>;
60
61
  source: z.ZodString;
61
62
  tags: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
62
63
  attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -114,6 +115,7 @@ export declare const zLayer: z.ZodObject<{
114
115
  id: string;
115
116
  name: string;
116
117
  source: string;
118
+ version?: number | undefined;
117
119
  attributes?: Record<string, string> | undefined;
118
120
  simplify?: {
119
121
  style: {
@@ -134,6 +136,7 @@ export declare const zLayer: z.ZodObject<{
134
136
  id: string;
135
137
  name: string;
136
138
  source: string;
139
+ version?: number | undefined;
137
140
  attributes?: Record<string, string> | undefined;
138
141
  simplify?: {
139
142
  style: {
@@ -187,6 +190,7 @@ export declare const zSchema: z.ZodObject<{
187
190
  layers: z.ZodArray<z.ZodObject<{
188
191
  id: z.ZodString;
189
192
  name: z.ZodString;
193
+ version: z.ZodOptional<z.ZodNumber>;
190
194
  source: z.ZodString;
191
195
  tags: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
192
196
  attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -244,6 +248,7 @@ export declare const zSchema: z.ZodObject<{
244
248
  id: string;
245
249
  name: string;
246
250
  source: string;
251
+ version?: number | undefined;
247
252
  attributes?: Record<string, string> | undefined;
248
253
  simplify?: {
249
254
  style: {
@@ -264,6 +269,7 @@ export declare const zSchema: z.ZodObject<{
264
269
  id: string;
265
270
  name: string;
266
271
  source: string;
272
+ version?: number | undefined;
267
273
  attributes?: Record<string, string> | undefined;
268
274
  simplify?: {
269
275
  style: {
@@ -290,6 +296,7 @@ export declare const zSchema: z.ZodObject<{
290
296
  id: string;
291
297
  name: string;
292
298
  source: string;
299
+ version?: number | undefined;
293
300
  attributes?: Record<string, string> | undefined;
294
301
  simplify?: {
295
302
  style: {
@@ -324,6 +331,7 @@ export declare const zSchema: z.ZodObject<{
324
331
  id: string;
325
332
  name: string;
326
333
  source: string;
334
+ version?: number | undefined;
327
335
  attributes?: Record<string, string> | undefined;
328
336
  simplify?: {
329
337
  style: {
@@ -17,6 +17,7 @@ export const zSimplify = z.object({
17
17
  export const zLayer = z.object({
18
18
  id: z.string(),
19
19
  name: z.string(),
20
+ version: z.number().optional(),
20
21
  source: z.string(),
21
22
  tags: zTags,
22
23
  attributes: zAttributes.optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/schema-loader/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;CACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/schema-loader/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;CACxB,CAAC,CAAC"}
@@ -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,12 +89,11 @@ 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;
85
99
  }
@@ -2,7 +2,7 @@ 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 {
@@ -70,8 +70,6 @@ export class SchemaLoader {
70
70
  const files = await lds.getLdsCacheFiles();
71
71
  for (const schema of this.schemas) {
72
72
  this.logger.info({ layer: schema.name }, 'SchemaLoader: PrepareLayer');
73
- if (schema.layers == null)
74
- continue;
75
73
  for (const layer of schema.layers) {
76
74
  // Set layer simplify
77
75
  if (schema.simplify != null && layer.simplify == null)
@@ -93,12 +91,19 @@ export class SchemaLoader {
93
91
  if (fileInfo.size != null && fileInfo.size > LARGE_LAYER_SIZE)
94
92
  layer.largeLayer = true;
95
93
  // Set the cache path for the layer
96
- const configHash = sha256base58(JSON.stringify({ ...layer, version: CliInfo.version }));
94
+ const configHash = sha256base58(JSON.stringify({ name: schema.name, layer, version: CliInfo.version }));
97
95
  if (this.cache != null) {
98
96
  const fileName = isLdsFile
99
97
  ? `${layer.id}_${layer.version}_${configHash}.mbtiles`
100
98
  : `${layer.id}_${configHash}.mbtiles`;
101
- layer.cache = new URL(fileName, this.cache);
99
+ const path = new URL(`${layer.id}/${fileName}`, this.cache);
100
+ const exists = await fsa.exists(path);
101
+ const cache = {
102
+ fileName,
103
+ path,
104
+ exists,
105
+ };
106
+ layer.cache = cache;
102
107
  }
103
108
  }
104
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.loader.js","sourceRoot":"","sources":["../../src/schema-loader/schema.loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.loader.js","sourceRoot":"","sources":["../../src/schema-loader/schema.loader.ts"],"names":[],"mappings":"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"}