@loaders.gl/mvt 4.4.0-alpha.1 → 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.
- package/README.md +14 -1
- package/dist/dist.dev.js +412 -39
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +414 -26
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/encode-mvt.d.ts +19 -0
- package/dist/lib/encode-mvt.d.ts.map +1 -0
- package/dist/lib/encode-mvt.js +15 -0
- package/dist/lib/encode-mvt.js.map +1 -0
- package/dist/lib/get-schemas-from-tilejson.js +1 -0
- package/dist/lib/get-schemas-from-tilejson.js.map +1 -0
- package/dist/lib/mapbox-vt-pbf/geojson-wrapper.d.ts +25 -0
- package/dist/lib/mapbox-vt-pbf/geojson-wrapper.d.ts.map +1 -0
- package/dist/lib/mapbox-vt-pbf/geojson-wrapper.js +73 -0
- package/dist/lib/mapbox-vt-pbf/geojson-wrapper.js.map +1 -0
- package/dist/lib/mapbox-vt-pbf/to-vector-tile.d.ts +52 -0
- package/dist/lib/mapbox-vt-pbf/to-vector-tile.d.ts.map +1 -0
- package/dist/lib/mapbox-vt-pbf/to-vector-tile.js +162 -0
- package/dist/lib/mapbox-vt-pbf/to-vector-tile.js.map +1 -0
- package/dist/lib/mvt-pbf/mvt-constants.d.ts.map +1 -0
- package/dist/lib/{pojo-parser → mvt-pbf}/mvt-constants.js +1 -0
- package/dist/lib/mvt-pbf/mvt-constants.js.map +1 -0
- package/dist/lib/mvt-pbf/mvt-types.d.ts.map +1 -0
- package/dist/lib/{pojo-parser → mvt-pbf}/mvt-types.js +1 -0
- package/dist/lib/mvt-pbf/mvt-types.js.map +1 -0
- package/dist/lib/mvt-pbf/parse-geometry-from-pbf.d.ts.map +1 -0
- package/dist/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.js +1 -0
- package/dist/lib/mvt-pbf/parse-geometry-from-pbf.js.map +1 -0
- package/dist/lib/mvt-pbf/parse-mvt-from-pbf.d.ts.map +1 -0
- package/dist/lib/{pojo-parser → mvt-pbf}/parse-mvt-from-pbf.js +1 -0
- package/dist/lib/mvt-pbf/parse-mvt-from-pbf.js.map +1 -0
- package/dist/lib/mvt-pbf/write-mvt-to-pbf.d.ts +4 -0
- package/dist/lib/mvt-pbf/write-mvt-to-pbf.d.ts.map +1 -0
- package/dist/lib/mvt-pbf/write-mvt-to-pbf.js +130 -0
- package/dist/lib/mvt-pbf/write-mvt-to-pbf.js.map +1 -0
- package/dist/lib/parse-mvt.d.ts.map +1 -1
- package/dist/lib/parse-mvt.js +4 -1
- package/dist/lib/parse-mvt.js.map +1 -0
- package/dist/lib/parse-tilejson.js +1 -0
- package/dist/lib/parse-tilejson.js.map +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils/geometry-utils.js +1 -0
- package/dist/lib/utils/geometry-utils.js.map +1 -0
- package/dist/lib/vector-tile/vector-tile-feature.js +1 -0
- package/dist/lib/vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/lib/vector-tile/vector-tile-layer.js +1 -0
- package/dist/lib/vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/lib/vector-tile/vector-tile.js +1 -0
- package/dist/lib/vector-tile/vector-tile.js.map +1 -0
- package/dist/lib/vector-tiler/features/clip-features.js +1 -0
- package/dist/lib/vector-tiler/features/clip-features.js.map +1 -0
- package/dist/lib/vector-tiler/features/convert-feature.js +1 -0
- package/dist/lib/vector-tiler/features/convert-feature.js.map +1 -0
- package/dist/lib/vector-tiler/features/proto-feature.js +1 -0
- package/dist/lib/vector-tiler/features/proto-feature.js.map +1 -0
- package/dist/lib/vector-tiler/features/simplify-path.js +1 -0
- package/dist/lib/vector-tiler/features/simplify-path.js.map +1 -0
- package/dist/lib/vector-tiler/features/wrap-features.js +1 -0
- package/dist/lib/vector-tiler/features/wrap-features.js.map +1 -0
- package/dist/lib/vector-tiler/proto-tile.js +1 -0
- package/dist/lib/vector-tiler/proto-tile.js.map +1 -0
- package/dist/lib/vector-tiler/tile-to-geojson.js +1 -0
- package/dist/lib/vector-tiler/tile-to-geojson.js.map +1 -0
- package/dist/lib/vector-tiler/transform-tile.js +1 -0
- package/dist/lib/vector-tiler/transform-tile.js.map +1 -0
- package/dist/mvt-format.js +1 -0
- package/dist/mvt-format.js.map +1 -0
- package/dist/mvt-loader.js +2 -1
- package/dist/mvt-loader.js.map +1 -0
- package/dist/mvt-source.js +2 -1
- package/dist/mvt-source.js.map +1 -0
- package/dist/mvt-worker.js +6 -3
- package/dist/mvt-writer.d.ts +26 -0
- package/dist/mvt-writer.d.ts.map +1 -0
- package/dist/mvt-writer.js +32 -0
- package/dist/mvt-writer.js.map +1 -0
- package/dist/table-tile-source.js +1 -0
- package/dist/table-tile-source.js.map +1 -0
- package/dist/tilejson-loader.js +2 -1
- package/dist/tilejson-loader.js.map +1 -0
- package/dist/workers/mvt-worker.js +1 -0
- package/dist/workers/mvt-worker.js.map +1 -0
- package/package.json +7 -7
- package/src/index.ts +5 -0
- package/src/lib/encode-mvt.ts +31 -0
- package/src/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
- package/src/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
- package/src/lib/mapbox-vt-pbf/to-vector-tile.ts +229 -0
- package/src/lib/mvt-pbf/write-mvt-to-pbf.ts +158 -0
- package/src/lib/parse-mvt.ts +3 -1
- package/src/mvt-source.ts +1 -1
- package/src/mvt-writer.ts +35 -0
- package/dist/lib/pojo-parser/mvt-constants.d.ts.map +0 -1
- package/dist/lib/pojo-parser/mvt-types.d.ts.map +0 -1
- package/dist/lib/pojo-parser/parse-geometry-from-pbf.d.ts.map +0 -1
- package/dist/lib/pojo-parser/parse-mvt-from-pbf.d.ts.map +0 -1
- /package/dist/lib/{pojo-parser → mvt-pbf}/mvt-constants.d.ts +0 -0
- /package/dist/lib/{pojo-parser → mvt-pbf}/mvt-types.d.ts +0 -0
- /package/dist/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.d.ts +0 -0
- /package/dist/lib/{pojo-parser → mvt-pbf}/parse-mvt-from-pbf.d.ts +0 -0
- /package/src/lib/{pojo-parser → mvt-pbf}/mvt-constants.ts +0 -0
- /package/src/lib/{pojo-parser → mvt-pbf}/mvt-types.ts +0 -0
- /package/src/lib/{pojo-parser → mvt-pbf}/parse-geometry-from-pbf.ts +0 -0
- /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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"}
|
package/dist/tilejson-loader.js
CHANGED
|
@@ -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.
|
|
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"}
|
|
@@ -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.
|
|
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.
|
|
48
|
-
"@loaders.gl/images": "4.4.0-alpha.
|
|
49
|
-
"@loaders.gl/loader-utils": "4.4.0-alpha.
|
|
50
|
-
"@loaders.gl/schema": "4.4.0-alpha.
|
|
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"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@types/pbf": "^3.0.2"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@loaders.gl/core": "4.4.0-alpha.
|
|
59
|
+
"@loaders.gl/core": "4.4.0-alpha.1"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
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
|
+
}
|