@loaders.gl/mvt 4.4.0-alpha.2 → 4.4.0-alpha.9

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 (109) hide show
  1. package/README.md +14 -1
  2. package/dist/dist.dev.js +412 -39
  3. package/dist/dist.min.js +1 -1
  4. package/dist/index.cjs +414 -26
  5. package/dist/index.cjs.map +4 -4
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/encode-mvt.d.ts +19 -0
  11. package/dist/lib/encode-mvt.d.ts.map +1 -0
  12. package/dist/lib/encode-mvt.js +15 -0
  13. package/dist/lib/encode-mvt.js.map +1 -0
  14. package/dist/lib/get-schemas-from-tilejson.js +1 -0
  15. package/dist/lib/get-schemas-from-tilejson.js.map +1 -0
  16. package/dist/lib/mapbox-vt-pbf/geojson-wrapper.d.ts +25 -0
  17. package/dist/lib/mapbox-vt-pbf/geojson-wrapper.d.ts.map +1 -0
  18. package/dist/lib/mapbox-vt-pbf/geojson-wrapper.js +73 -0
  19. package/dist/lib/mapbox-vt-pbf/geojson-wrapper.js.map +1 -0
  20. package/dist/lib/mapbox-vt-pbf/to-vector-tile.d.ts +52 -0
  21. package/dist/lib/mapbox-vt-pbf/to-vector-tile.d.ts.map +1 -0
  22. package/dist/lib/mapbox-vt-pbf/to-vector-tile.js +162 -0
  23. package/dist/lib/mapbox-vt-pbf/to-vector-tile.js.map +1 -0
  24. package/dist/lib/mvt-pbf/mvt-constants.d.ts.map +1 -0
  25. package/dist/lib/{pojo-parser → mvt-pbf}/mvt-constants.js +1 -0
  26. package/dist/lib/mvt-pbf/mvt-constants.js.map +1 -0
  27. package/dist/lib/mvt-pbf/mvt-types.d.ts.map +1 -0
  28. package/dist/lib/{pojo-parser → mvt-pbf}/mvt-types.js +1 -0
  29. package/dist/lib/mvt-pbf/mvt-types.js.map +1 -0
  30. package/dist/lib/mvt-pbf/parse-geometry-from-pbf.d.ts.map +1 -0
  31. package/dist/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.js +1 -0
  32. package/dist/lib/mvt-pbf/parse-geometry-from-pbf.js.map +1 -0
  33. package/dist/lib/mvt-pbf/parse-mvt-from-pbf.d.ts.map +1 -0
  34. package/dist/lib/{pojo-parser → mvt-pbf}/parse-mvt-from-pbf.js +1 -0
  35. package/dist/lib/mvt-pbf/parse-mvt-from-pbf.js.map +1 -0
  36. package/dist/lib/mvt-pbf/write-mvt-to-pbf.d.ts +4 -0
  37. package/dist/lib/mvt-pbf/write-mvt-to-pbf.d.ts.map +1 -0
  38. package/dist/lib/mvt-pbf/write-mvt-to-pbf.js +130 -0
  39. package/dist/lib/mvt-pbf/write-mvt-to-pbf.js.map +1 -0
  40. package/dist/lib/parse-mvt.d.ts.map +1 -1
  41. package/dist/lib/parse-mvt.js +4 -1
  42. package/dist/lib/parse-mvt.js.map +1 -0
  43. package/dist/lib/parse-tilejson.js +1 -0
  44. package/dist/lib/parse-tilejson.js.map +1 -0
  45. package/dist/lib/types.js +1 -0
  46. package/dist/lib/types.js.map +1 -0
  47. package/dist/lib/utils/geometry-utils.js +1 -0
  48. package/dist/lib/utils/geometry-utils.js.map +1 -0
  49. package/dist/lib/vector-tile/vector-tile-feature.js +1 -0
  50. package/dist/lib/vector-tile/vector-tile-feature.js.map +1 -0
  51. package/dist/lib/vector-tile/vector-tile-layer.js +1 -0
  52. package/dist/lib/vector-tile/vector-tile-layer.js.map +1 -0
  53. package/dist/lib/vector-tile/vector-tile.js +1 -0
  54. package/dist/lib/vector-tile/vector-tile.js.map +1 -0
  55. package/dist/lib/vector-tiler/features/clip-features.js +1 -0
  56. package/dist/lib/vector-tiler/features/clip-features.js.map +1 -0
  57. package/dist/lib/vector-tiler/features/convert-feature.js +1 -0
  58. package/dist/lib/vector-tiler/features/convert-feature.js.map +1 -0
  59. package/dist/lib/vector-tiler/features/proto-feature.js +1 -0
  60. package/dist/lib/vector-tiler/features/proto-feature.js.map +1 -0
  61. package/dist/lib/vector-tiler/features/simplify-path.js +1 -0
  62. package/dist/lib/vector-tiler/features/simplify-path.js.map +1 -0
  63. package/dist/lib/vector-tiler/features/wrap-features.js +1 -0
  64. package/dist/lib/vector-tiler/features/wrap-features.js.map +1 -0
  65. package/dist/lib/vector-tiler/proto-tile.js +1 -0
  66. package/dist/lib/vector-tiler/proto-tile.js.map +1 -0
  67. package/dist/lib/vector-tiler/tile-to-geojson.js +1 -0
  68. package/dist/lib/vector-tiler/tile-to-geojson.js.map +1 -0
  69. package/dist/lib/vector-tiler/transform-tile.js +1 -0
  70. package/dist/lib/vector-tiler/transform-tile.js.map +1 -0
  71. package/dist/mvt-format.js +1 -0
  72. package/dist/mvt-format.js.map +1 -0
  73. package/dist/mvt-loader.js +2 -1
  74. package/dist/mvt-loader.js.map +1 -0
  75. package/dist/mvt-source.js +2 -1
  76. package/dist/mvt-source.js.map +1 -0
  77. package/dist/mvt-worker.js +6 -3
  78. package/dist/mvt-writer.d.ts +26 -0
  79. package/dist/mvt-writer.d.ts.map +1 -0
  80. package/dist/mvt-writer.js +32 -0
  81. package/dist/mvt-writer.js.map +1 -0
  82. package/dist/table-tile-source.js +1 -0
  83. package/dist/table-tile-source.js.map +1 -0
  84. package/dist/tilejson-loader.js +2 -1
  85. package/dist/tilejson-loader.js.map +1 -0
  86. package/dist/workers/mvt-worker.js +1 -0
  87. package/dist/workers/mvt-worker.js.map +1 -0
  88. package/package.json +6 -6
  89. package/src/index.ts +5 -0
  90. package/src/lib/encode-mvt.ts +31 -0
  91. package/src/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
  92. package/src/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
  93. package/src/lib/mapbox-vt-pbf/to-vector-tile.ts +229 -0
  94. package/src/lib/mvt-pbf/write-mvt-to-pbf.ts +158 -0
  95. package/src/lib/parse-mvt.ts +3 -1
  96. package/src/mvt-source.ts +1 -1
  97. package/src/mvt-writer.ts +35 -0
  98. package/dist/lib/pojo-parser/mvt-constants.d.ts.map +0 -1
  99. package/dist/lib/pojo-parser/mvt-types.d.ts.map +0 -1
  100. package/dist/lib/pojo-parser/parse-geometry-from-pbf.d.ts.map +0 -1
  101. package/dist/lib/pojo-parser/parse-mvt-from-pbf.d.ts.map +0 -1
  102. /package/dist/lib/{pojo-parser → mvt-pbf}/mvt-constants.d.ts +0 -0
  103. /package/dist/lib/{pojo-parser → mvt-pbf}/mvt-types.d.ts +0 -0
  104. /package/dist/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.d.ts +0 -0
  105. /package/dist/lib/{pojo-parser → mvt-pbf}/parse-mvt-from-pbf.d.ts +0 -0
  106. /package/src/lib/{pojo-parser → mvt-pbf}/mvt-constants.ts +0 -0
  107. /package/src/lib/{pojo-parser → mvt-pbf}/mvt-types.ts +0 -0
  108. /package/src/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.ts +0 -0
  109. /package/src/lib/{pojo-parser → mvt-pbf}/parse-mvt-from-pbf.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-tile-source.js","sourceRoot":"","sources":["../src/table-tile-source.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  import { parseTileJSON } from "./lib/parse-tilejson.js";
5
5
  // __VERSION__ is injected by babel-plugin-version-inline
6
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
- const VERSION = typeof "4.4.0-alpha.1" !== 'undefined' ? "4.4.0-alpha.1" : 'latest';
7
+ const VERSION = typeof "4.4.0-alpha.9" !== 'undefined' ? "4.4.0-alpha.9" : 'latest';
8
8
  /**
9
9
  * Loader for TileJSON metadata
10
10
  */
@@ -36,3 +36,4 @@ export const TileJSONLoader = {
36
36
  return parseTileJSON(json, tilejsonOptions);
37
37
  }
38
38
  };
39
+ //# sourceMappingURL=tilejson-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilejson-loader.js","sourceRoot":"","sources":["../src/tilejson-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,aAAa,EAAC,gCAA6B;AAEnD,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,sBAAkB,KAAK,WAAW,CAAC,CAAC,iBAAa,CAAC,CAAC,QAAQ,CAAC;AAU5E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,IAA2B;IACrC,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,UAAU;IACd,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,IAAI,EAAE,IAAI;IACV,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,SAAS,EAAE,SAAS;SACrB;KACF;IACD,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAA+B,EAAE,EAAE;QACzE,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,EAAC,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAC,CAAC;QACnF,OAAO,aAAa,CAAC,IAAI,EAAE,eAAe,CAAa,CAAC;IAC1D,CAAC;IACD,aAAa,EAAE,CAAC,IAAY,EAAE,OAA+B,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,eAAe,GAAG,EAAC,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAC,CAAC;QACnF,OAAO,aAAa,CAAC,IAAI,EAAE,eAAe,CAAa,CAAC;IAC1D,CAAC;CAC0E,CAAC"}
@@ -4,3 +4,4 @@
4
4
  import { MVTLoader } from "../mvt-loader.js";
5
5
  import { createLoaderWorker } from '@loaders.gl/loader-utils';
6
6
  createLoaderWorker(MVTLoader);
7
+ //# sourceMappingURL=mvt-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mvt-worker.js","sourceRoot":"","sources":["../../src/workers/mvt-worker.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAEhC,OAAO,EAAC,SAAS,EAAC,yBAAsB;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAE5D,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loaders.gl/mvt",
3
3
  "description": "Loader for Mapbox Vector Tiles",
4
- "version": "4.4.0-alpha.2",
4
+ "version": "4.4.0-alpha.9",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "publishConfig": {
@@ -44,10 +44,10 @@
44
44
  "build-worker": "esbuild src/workers/mvt-worker.ts --bundle --outfile=dist/mvt-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
45
45
  },
46
46
  "dependencies": {
47
- "@loaders.gl/gis": "4.4.0-alpha.2",
48
- "@loaders.gl/images": "4.4.0-alpha.2",
49
- "@loaders.gl/loader-utils": "4.4.0-alpha.2",
50
- "@loaders.gl/schema": "4.4.0-alpha.2",
47
+ "@loaders.gl/gis": "4.4.0-alpha.9",
48
+ "@loaders.gl/images": "4.4.0-alpha.9",
49
+ "@loaders.gl/loader-utils": "4.4.0-alpha.9",
50
+ "@loaders.gl/schema": "4.4.0-alpha.9",
51
51
  "@math.gl/polygon": "^4.1.0",
52
52
  "@probe.gl/stats": "^4.0.0",
53
53
  "pbf": "^3.2.1"
@@ -58,5 +58,5 @@
58
58
  "peerDependencies": {
59
59
  "@loaders.gl/core": "4.4.0-alpha.1"
60
60
  },
61
- "gitHead": "3d9fed050eabdc0812ddf2f4d5fb9914a34ee0c2"
61
+ "gitHead": "e9e6710379718c7663e97eba868c76e15de4cb84"
62
62
  }
package/src/index.ts CHANGED
@@ -13,6 +13,11 @@ export type {TileJSON} from './lib/parse-tilejson';
13
13
  export {MVTLoader, MVTWorkerLoader} from './mvt-loader';
14
14
  export type {MVTLoaderOptions} from './mvt-loader';
15
15
 
16
+ // MVTWriter
17
+
18
+ export {MVTWriter} from './mvt-writer';
19
+ export type {MVTWriterOptions} from './lib/encode-mvt';
20
+
16
21
  // MVTSource
17
22
 
18
23
  export {MVTSource} from './mvt-source';
@@ -0,0 +1,31 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {WriterOptions} from '@loaders.gl/loader-utils';
6
+ import {fromGeojson} from './mapbox-vt-pbf/to-vector-tile';
7
+
8
+ export type MVTWriterOptions = WriterOptions & {
9
+ mvt?: {
10
+ /** Name of the single layer that will be written into the tile */
11
+ layerName?: string;
12
+ /** Vector tile specification version */
13
+ version?: number;
14
+ /** Extent of the vector tile grid */
15
+ extent?: number;
16
+ /** Optional tile index for projecting WGS84 coordinates into tile space */
17
+ tileIndex?: {x: number; y: number; z: number};
18
+ };
19
+ };
20
+
21
+ export function encodeMVT(data, options?: MVTWriterOptions) {
22
+ const {mvt} = options || {};
23
+ const encodeOptions = {
24
+ layerName: mvt?.layerName || 'geojsonLayer',
25
+ version: mvt?.version || 1,
26
+ extent: mvt?.extent || 4096,
27
+ tileIndex: mvt?.tileIndex
28
+ };
29
+
30
+ return fromGeojson(data, encodeOptions);
31
+ }
@@ -0,0 +1,76 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+
5
+ // Forked from https://github.com/mapbox/vt-pbf under MIT License Copyright (c) 2015 Anand Thakker
6
+
7
+ import VectorTileFeature from "../mapbox-vector-tile-js/vector-tile-feature";
8
+
9
+ export function geojsonFeatureToVt(feature) {
10
+ const tags = null;
11
+
12
+ const vtFeature = {
13
+ type: featureTypeToVt(feature.type),
14
+ geometry: geometryToVt(feature.geometry),
15
+ tags
16
+ };
17
+
18
+ if (feature.id !== null) {
19
+ vtFeature.id = feature.id;
20
+ }
21
+
22
+ return VectorTileFeature;
23
+ }
24
+
25
+ function featureTypeToVt(type) {
26
+ switch (type) {
27
+ case 'Polygon':
28
+ case 'MultiPolygon':
29
+ return 3;
30
+ case 'LineString':
31
+ case 'MultiLineString':
32
+ return 2;
33
+ default :
34
+ return 1;
35
+ }
36
+ }
37
+
38
+ function geometryToVt(geometry, type) {
39
+ const simplified = [];
40
+
41
+ // tile.minX = Math.min(tile.minX, feature.minX);
42
+ // tile.minY = Math.min(tile.minY, feature.minY);
43
+ // tile.maxX = Math.max(tile.maxX, feature.maxX);
44
+ // tile.maxY = Math.max(tile.maxY, feature.maxY);
45
+
46
+ switch (type) {
47
+ case 'Point':
48
+ case 'MultiPoint':
49
+ for (let i = 0; i < geometry.length; i += 3) {
50
+ simplified.push(geometry[i], geometry[i + 1]);
51
+ tile.numPoints++;
52
+ tile.numSimplified++;
53
+ }
54
+ break;
55
+
56
+ case 'LineString':
57
+ addLine(simplified, geometry, tile, tolerance, false, false);
58
+ break;
59
+
60
+ case 'MultiLineString':
61
+ case 'Polygon':
62
+ for (let i = 0; i < geometry.length; i++) {
63
+ addLine(simplified, geometry[i], tile, tolerance, type === 'Polygon', i === 0);
64
+ }
65
+ break;
66
+
67
+ case 'MultiPolygon':
68
+ for (let k = 0; k < geometry.length; k++) {
69
+ const polygon = geometry[k];
70
+ for (let i = 0; i < polygon.length; i++) {
71
+ addLine(simplified, polygon[i], tile, tolerance, true, i === 0);
72
+ }
73
+ }
74
+ break;
75
+ }
76
+ }
@@ -0,0 +1,89 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+
5
+ // Forked from https://github.com/mapbox/vt-pbf under MIT License Copyright (c) 2015 Anand Thakker
6
+
7
+ class Point {
8
+ x: number;
9
+ y: number;
10
+ constructor(x: number, y: number) {
11
+ this.x = x;
12
+ this.y = y;
13
+ }
14
+ }
15
+
16
+ // conform to vectortile api
17
+ export default class GeoJSONWrapper {
18
+ options;
19
+ features: any[];
20
+ length: number;
21
+
22
+ constructor(features, options = {}) {
23
+ this.options = options;
24
+ this.features = features;
25
+ this.length = features.length;
26
+ }
27
+
28
+ feature(index) {
29
+ return new FeatureWrapper(this.features[index], this.options.extent);
30
+ }
31
+ }
32
+
33
+ class FeatureWrapper {
34
+ id;
35
+ type;
36
+ rawGeometry: any;
37
+ properties;
38
+ extent;
39
+ geometry: Point[][] = [];
40
+
41
+ constructor(feature, extent) {
42
+ this.id = typeof feature.id === 'number' ? feature.id : undefined;
43
+ this.type = feature.type;
44
+ this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry;
45
+ this.properties = feature.tags;
46
+ this.extent = extent || 4096;
47
+ }
48
+
49
+ loadGeometry() {
50
+ const rings = this.rawGeometry;
51
+ this.geometry = [];
52
+
53
+ for (const ring of rings) {
54
+ const newRing: Point[] = [];
55
+ for (const coord of ring) {
56
+ newRing.push(new Point(coord[0], coord[1]));
57
+ }
58
+ this.geometry.push(newRing);
59
+ }
60
+ return this.geometry;
61
+ }
62
+
63
+ bbox() {
64
+ if (!this.geometry) {
65
+ this.loadGeometry();
66
+ }
67
+
68
+ const rings = this.geometry;
69
+ let x1 = Infinity;
70
+ let x2 = -Infinity;
71
+ let y1 = Infinity;
72
+ let y2 = -Infinity;
73
+
74
+ for (const ring of rings) {
75
+ for (const coord of ring) {
76
+ x1 = Math.min(x1, coord.x);
77
+ x2 = Math.max(x2, coord.x);
78
+ y1 = Math.min(y1, coord.y);
79
+ y2 = Math.max(y2, coord.y);
80
+ }
81
+ }
82
+
83
+ return [x1, y1, x2, y2];
84
+ }
85
+
86
+ // toGeoJSON(x, y, z) {
87
+ // return VectorTileFeature.prototype.toGeoJSON.call(this, x, y, z);
88
+ // }
89
+ }
@@ -0,0 +1,229 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+
5
+ // Forked from https://github.com/mapbox/vt-pbf under MIT License Copyright (c) 2015 Anand Thakker
6
+
7
+ import Pbf from 'pbf';
8
+ import type {MVTTile} from '../mvt-pbf/mvt-types';
9
+ import {writeMVT} from '../mvt-pbf/write-mvt-to-pbf';
10
+ import GeoJSONWrapper from './geojson-wrapper';
11
+ import type {GeoJSON, FeatureCollection, Geometry} from '@loaders.gl/schema';
12
+ import {copyToArrayBuffer} from '@loaders.gl/loader-utils';
13
+
14
+ export type FromGeojsonOptions = {
15
+ layerName?: string;
16
+ version?: number;
17
+ extent?: number;
18
+ tileIndex?: {x: number; y: number; z: number};
19
+ };
20
+
21
+ /**
22
+ * Serialize a map of geojson layers
23
+ * loaders.gl addition
24
+ *
25
+ * @param geojson
26
+ * @param [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`.
27
+ * @param [options.extent=4096] - Extent of the vector tile
28
+ * @return uncompressed, pbf-serialized tile data
29
+ */
30
+ export function fromGeojson(geojson: FeatureCollection, options: FromGeojsonOptions): ArrayBuffer {
31
+ options = options || {};
32
+ geojson = normalizeGeojson(geojson);
33
+ const extent = options.extent || 4096;
34
+ const features = convertFeaturesToVectorTileFeatures(geojson.features, extent, options.tileIndex);
35
+ const layer = new GeoJSONWrapper(features, {...options, extent});
36
+ // TODO - this is broken
37
+ (layer as any).name = options.layerName || 'geojsonLayer';
38
+ (layer as any).version = options.version || 1;
39
+ (layer as any).extent = options.extent || 4096;
40
+
41
+ // @ts-expect-error
42
+ return fromVectorTileJs({layers: {[layer.name]: layer}});
43
+ }
44
+
45
+ /**
46
+ * Serialize a vector-tile-js-created tile to pbf
47
+ *
48
+ * @param tile
49
+ * @return uncompressed, pbf-serialized tile data
50
+ */
51
+ export function fromVectorTileJs(tile: MVTTile): ArrayBuffer {
52
+ const pbf = new Pbf();
53
+ writeMVT(tile, pbf);
54
+ const uint8Array = pbf.finish();
55
+ // TODO - make sure no byteOffsets/byteLenghts are used?
56
+ return copyToArrayBuffer(
57
+ uint8Array.buffer,
58
+ uint8Array.byteOffset,
59
+ uint8Array.byteOffset + uint8Array.byteLength
60
+ );
61
+ }
62
+
63
+ /**
64
+ * Serialized a geojson-vt-created tile to pbf.
65
+ *
66
+ * @param vtLayers - An object mapping layer names to geojson-vt-created vector tile objects
67
+ * @param [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`.
68
+ * @param [options.version=1] - Version of vector-tile spec used
69
+ * @param [options.extent=4096] - Extent of the vector tile
70
+ * @return uncompressed, pbf-serialized tile data
71
+ *
72
+ export function fromGeojsonVt(vtLayers, options): ArrayBuffer {
73
+ options = options || {};
74
+ const layers = {};
75
+ for (const key in vtLayers) {
76
+ layers[key] = new GeoJSONWrapper(vtLayers[key].features, options);
77
+ layers[key].name = key;
78
+ layers[key].version = options.version;
79
+ layers[key].extent = options.extent;
80
+ }
81
+ return fromVectorTileJs({layers});
82
+ }
83
+ */
84
+
85
+ export function normalizeGeojson(geojson: GeoJSON): FeatureCollection {
86
+ // Array of features
87
+ if (Array.isArray(geojson)) {
88
+ return {
89
+ type: 'FeatureCollection',
90
+ features: geojson
91
+ };
92
+ }
93
+ // A single feature
94
+ if (geojson.type === 'Feature') {
95
+ return {
96
+ type: 'FeatureCollection',
97
+ features: [geojson]
98
+ };
99
+ }
100
+ throw new Error('Invalid GeoJSON object');
101
+ }
102
+
103
+ function convertFeaturesToVectorTileFeatures(
104
+ features,
105
+ extent: number,
106
+ tileIndex?: {x: number; y: number; z: number}
107
+ ) {
108
+ if (features.every(isVectorTileFeature)) {
109
+ return features;
110
+ }
111
+
112
+ return features.map((feature) => convertFeatureToVectorTile(feature, extent, tileIndex));
113
+ }
114
+
115
+ function convertFeatureToVectorTile(
116
+ feature,
117
+ extent: number,
118
+ tileIndex?: {x: number; y: number; z: number}
119
+ ) {
120
+ const geometry = feature.geometry as Geometry;
121
+ const type = getVectorTileType(geometry.type);
122
+
123
+ return {
124
+ id: typeof feature.id === 'number' ? feature.id : undefined,
125
+ type,
126
+ geometry: projectGeometryToTileSpace(geometry, extent, tileIndex),
127
+ tags: feature.properties || {}
128
+ };
129
+ }
130
+
131
+ function projectGeometryToTileSpace(
132
+ geometry: Geometry,
133
+ extent: number,
134
+ tileIndex?: {x: number; y: number; z: number}
135
+ ) {
136
+ switch (geometry.type) {
137
+ case 'Point':
138
+ return [projectPointToTile(geometry.coordinates as number[], extent, tileIndex)];
139
+ case 'MultiPoint':
140
+ return geometry.coordinates.map((coord) =>
141
+ projectPointToTile(coord as number[], extent, tileIndex)
142
+ );
143
+ case 'LineString':
144
+ return [
145
+ geometry.coordinates.map((coord) =>
146
+ projectPointToTile(coord as number[], extent, tileIndex)
147
+ )
148
+ ];
149
+ case 'MultiLineString':
150
+ return geometry.coordinates.map((line) =>
151
+ line.map((coord) => projectPointToTile(coord as number[], extent, tileIndex))
152
+ );
153
+ case 'Polygon':
154
+ return geometry.coordinates.map((ring) =>
155
+ ring.map((coord) => projectPointToTile(coord as number[], extent, tileIndex))
156
+ );
157
+ case 'MultiPolygon':
158
+ return geometry.coordinates.flatMap((polygon) =>
159
+ polygon.map((ring) =>
160
+ ring.map((coord) => projectPointToTile(coord as number[], extent, tileIndex))
161
+ )
162
+ );
163
+ default:
164
+ throw new Error(`Unsupported geometry type: ${geometry.type}`);
165
+ }
166
+ }
167
+
168
+ function projectPointToTile(
169
+ point: number[],
170
+ extent: number,
171
+ tileIndex?: {x: number; y: number; z: number}
172
+ ) {
173
+ if (isNormalizedPoint(point)) {
174
+ return [Math.round(point[0] * extent), Math.round(point[1] * extent)];
175
+ }
176
+
177
+ if (tileIndex && isLngLatPoint(point)) {
178
+ return projectLngLatToTile(point, tileIndex, extent);
179
+ }
180
+
181
+ return [Math.round(point[0]), Math.round(point[1])];
182
+ }
183
+
184
+ function isNormalizedPoint(point: number[]) {
185
+ return Math.abs(point[0]) <= 1 && Math.abs(point[1]) <= 1;
186
+ }
187
+
188
+ function isLngLatPoint(point: number[]) {
189
+ return Math.abs(point[0]) <= 180 && Math.abs(point[1]) <= 90;
190
+ }
191
+
192
+ function projectLngLatToTile(
193
+ point: number[],
194
+ tileIndex: {x: number; y: number; z: number},
195
+ extent: number
196
+ ) {
197
+ const [lng, lat] = point;
198
+ const {x, y, z} = tileIndex;
199
+ const size = extent * Math.pow(2, z);
200
+ const x0 = extent * x;
201
+ const y0 = extent * y;
202
+
203
+ const worldX = ((lng + 180) / 360) * size;
204
+ const worldY =
205
+ ((180 - (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + (lat * Math.PI) / 180 / 2))) * size) /
206
+ 360;
207
+
208
+ return [Math.round(worldX - x0), Math.round(worldY - y0)];
209
+ }
210
+
211
+ function isVectorTileFeature(feature): boolean {
212
+ return typeof feature?.type === 'number' && Array.isArray(feature.geometry);
213
+ }
214
+
215
+ function getVectorTileType(type: Geometry['type']): 1 | 2 | 3 {
216
+ switch (type) {
217
+ case 'Point':
218
+ case 'MultiPoint':
219
+ return 1;
220
+ case 'LineString':
221
+ case 'MultiLineString':
222
+ return 2;
223
+ case 'Polygon':
224
+ case 'MultiPolygon':
225
+ return 3;
226
+ default:
227
+ throw new Error(`Unknown geometry type: ${type}`);
228
+ }
229
+ }
@@ -0,0 +1,158 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+
5
+ // Forked from https://github.com/mapbox/vt-pbf under MIT License Copyright (c) 2015 Anand Thakker
6
+
7
+ import Protobuf from 'pbf';
8
+ import type {MVTTile, MVTLayer} from './mvt-types';
9
+ import * as MVT from './mvt-constants';
10
+
11
+ type WriteContext = {
12
+ layer: MVTLayer | any;
13
+ keys: string[];
14
+ values: unknown[];
15
+ keycache: Record<string, number>;
16
+ valuecache: Record<string, number>;
17
+ feature?: any;
18
+ };
19
+
20
+ export function writeMVT(tile: MVTTile, pbf?: Protobuf): void {
21
+ for (const key in tile.layers) {
22
+ const context: WriteContext = {
23
+ layer: tile.layers[key],
24
+ keys: [],
25
+ values: [],
26
+ keycache: {},
27
+ valuecache: {}
28
+ };
29
+
30
+ pbf!.writeMessage(MVT.TileInfo.layers, writeLayer, context);
31
+ }
32
+ }
33
+
34
+ function writeLayer(context: WriteContext, pbf?: Protobuf): void {
35
+ const {layer} = context;
36
+
37
+ pbf!.writeVarintField(MVT.LayerInfo.version, layer.version || 1);
38
+ pbf!.writeStringField(MVT.LayerInfo.name, layer.name || '');
39
+ pbf!.writeVarintField(MVT.LayerInfo.extent, layer.extent || 4096);
40
+
41
+ for (let i = 0; i < layer.length; i++) {
42
+ context.feature = layer.feature(i);
43
+ pbf!.writeMessage(MVT.LayerInfo.features, writeFeature, context);
44
+ }
45
+
46
+ const keys = context.keys;
47
+ for (let i = 0; i < keys.length; i++) {
48
+ pbf!.writeStringField(MVT.LayerInfo.keys, keys[i]);
49
+ }
50
+
51
+ const values = context.values;
52
+ for (let i = 0; i < values.length; i++) {
53
+ pbf!.writeMessage(MVT.LayerInfo.values, writeValue, values[i]);
54
+ }
55
+ }
56
+
57
+ function writeFeature(context: WriteContext, pbf?: Protobuf): void {
58
+ const feature = context.feature!;
59
+
60
+ if (feature.id !== undefined) {
61
+ pbf!.writeVarintField(MVT.FeatureInfo.id, feature.id);
62
+ }
63
+
64
+ pbf!.writeMessage(MVT.FeatureInfo.tags, writeProperties, context);
65
+ pbf!.writeVarintField(MVT.FeatureInfo.type, feature.type);
66
+ pbf!.writeMessage(MVT.FeatureInfo.geometry, writeGeometry, feature);
67
+ }
68
+
69
+ function writeProperties(context: WriteContext, pbf?: Protobuf): void {
70
+ const feature = context.feature!;
71
+ const {keys, values, keycache, valuecache} = context;
72
+
73
+ for (const key in feature.properties) {
74
+ let keyIndex = keycache[key];
75
+ if (typeof keyIndex === 'undefined') {
76
+ keys.push(key);
77
+ keyIndex = keys.length - 1;
78
+ keycache[key] = keyIndex;
79
+ }
80
+ pbf!.writeVarint(keyIndex);
81
+
82
+ let value = feature.properties[key];
83
+ const type = typeof value;
84
+ if (type !== 'string' && type !== 'boolean' && type !== 'number') {
85
+ value = JSON.stringify(value);
86
+ }
87
+ const valueKey = `${type}:${value}`;
88
+ let valueIndex = valuecache[valueKey];
89
+ if (typeof valueIndex === 'undefined') {
90
+ values.push(value);
91
+ valueIndex = values.length - 1;
92
+ valuecache[valueKey] = valueIndex;
93
+ }
94
+ pbf!.writeVarint(valueIndex);
95
+ }
96
+ }
97
+
98
+ function command(cmd, length) {
99
+ return (length << 3) + (cmd & 0x7);
100
+ }
101
+
102
+ function zigzag(num) {
103
+ return (num << 1) ^ (num >> 31);
104
+ }
105
+
106
+ function writeGeometry(feature, pbf?: Protobuf): void {
107
+ const geometry = feature.loadGeometry();
108
+ const type = feature.type;
109
+ let x = 0;
110
+ let y = 0;
111
+ const rings = geometry.length;
112
+ for (let r = 0; r < rings; r++) {
113
+ const ring = geometry[r];
114
+ let count = 1;
115
+ if (type === 1) {
116
+ count = ring.length;
117
+ }
118
+ pbf!.writeVarint(command(1, count)); // moveto
119
+ // do not write polygon closing path as lineto
120
+ const lineCount = type === 3 ? ring.length - 1 : ring.length;
121
+ for (let i = 0; i < lineCount; i++) {
122
+ if (i === 1 && type !== 1) {
123
+ pbf!.writeVarint(command(2, lineCount - 1)); // lineto
124
+ }
125
+ const dx = ring[i].x - x;
126
+ const dy = ring[i].y - y;
127
+ pbf!.writeVarint(zigzag(dx));
128
+ pbf!.writeVarint(zigzag(dy));
129
+ x += dx;
130
+ y += dy;
131
+ }
132
+ if (type === 3) {
133
+ pbf!.writeVarint(command(7, 1)); // closepath
134
+ }
135
+ }
136
+ }
137
+
138
+ function writeValue(value: unknown, pbf?: Protobuf): void {
139
+ switch (typeof value) {
140
+ case 'string':
141
+ pbf!.writeStringField(1, value);
142
+ break;
143
+ case 'boolean':
144
+ pbf!.writeBooleanField(7, value);
145
+ break;
146
+ case 'number':
147
+ if (value % 1 !== 0) {
148
+ pbf!.writeDoubleField(3, value);
149
+ } else if (value < 0) {
150
+ pbf!.writeSVarintField(6, value);
151
+ } else {
152
+ pbf!.writeVarintField(5, value);
153
+ }
154
+ break;
155
+ default:
156
+ // ignore
157
+ }
158
+ }