@loaders.gl/mvt 4.3.0-alpha.3 → 4.3.0-alpha.5
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/dist/dist.dev.js +57 -5
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +59 -7
- package/dist/index.cjs.map +3 -3
- package/dist/lib/get-schemas-from-tilejson.d.ts +4 -0
- package/dist/lib/get-schemas-from-tilejson.d.ts.map +1 -0
- package/dist/lib/get-schemas-from-tilejson.js +55 -0
- package/dist/lib/parse-tilejson.d.ts +9 -4
- package/dist/lib/parse-tilejson.d.ts.map +1 -1
- package/dist/lib/parse-tilejson.js +7 -7
- package/dist/lib/types.d.ts +39 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -1
- package/dist/mvt-loader.d.ts +2 -0
- package/dist/mvt-loader.d.ts.map +1 -1
- package/dist/mvt-loader.js +1 -1
- package/dist/mvt-worker.js +3 -3
- package/dist/tilejson-loader.js +1 -1
- package/package.json +9 -6
- package/src/lib/get-schemas-from-tilejson.ts +64 -0
- package/src/lib/parse-tilejson.ts +20 -13
- package/src/lib/types.ts +40 -2
- package/src/mvt-loader.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-schemas-from-tilejson.d.ts","sourceRoot":"","sources":["../../src/lib/get-schemas-from-tilejson.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAiD,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAK,EAAC,aAAa,EAAgB,4BAAyB;AAInE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAevE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
// LAYERS
|
|
5
|
+
export function getSchemaFromTileJSONLayer(layer) {
|
|
6
|
+
const fields = [];
|
|
7
|
+
if (layer.fields) {
|
|
8
|
+
for (const field of layer.fields) {
|
|
9
|
+
fields.push({
|
|
10
|
+
name: field.name,
|
|
11
|
+
type: getDataTypeFromTileJSONField(field),
|
|
12
|
+
metadata: getMetadataFromTileJSONField(field)
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
metadata: getMetadataFromTileJSONLayer(layer),
|
|
18
|
+
fields
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function getMetadataFromTileJSONLayer(layer) {
|
|
22
|
+
const metadata = {};
|
|
23
|
+
for (const [key, value] of Object.entries(layer)) {
|
|
24
|
+
if (key !== 'fields' && value) {
|
|
25
|
+
metadata[key] = JSON.stringify(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return metadata;
|
|
29
|
+
}
|
|
30
|
+
// FIELDS
|
|
31
|
+
function getDataTypeFromTileJSONField(field) {
|
|
32
|
+
switch (field.type.toLowerCase()) {
|
|
33
|
+
case 'float32':
|
|
34
|
+
return 'float32';
|
|
35
|
+
case 'number':
|
|
36
|
+
case 'float64':
|
|
37
|
+
return 'float64';
|
|
38
|
+
case 'string':
|
|
39
|
+
case 'utf8':
|
|
40
|
+
return 'utf8';
|
|
41
|
+
case 'boolean':
|
|
42
|
+
return 'bool';
|
|
43
|
+
default:
|
|
44
|
+
return 'null';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function getMetadataFromTileJSONField(field) {
|
|
48
|
+
const metadata = {};
|
|
49
|
+
for (const [key, value] of Object.entries(field)) {
|
|
50
|
+
if (key !== 'name' && value) {
|
|
51
|
+
metadata[key] = JSON.stringify(value);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return metadata;
|
|
55
|
+
}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
import { Schema } from '@loaders.gl/schema';
|
|
1
2
|
export type TileJSONOptions = {
|
|
2
3
|
/** max number of values. If not provided, include all values in the source tilestats */
|
|
3
4
|
maxValues?: number;
|
|
4
5
|
};
|
|
5
6
|
/** Parsed and typed TileJSON, merges Tilestats information if present */
|
|
6
7
|
export type TileJSON = {
|
|
8
|
+
/** Name of the tileset (for presentation in UI) */
|
|
7
9
|
name?: string;
|
|
10
|
+
/** A description of the contents or purpose of the tileset */
|
|
8
11
|
description?: string;
|
|
12
|
+
/** The version of the tileset */
|
|
9
13
|
version?: string;
|
|
10
14
|
tileFormat?: string;
|
|
11
15
|
tilesetType?: string;
|
|
16
|
+
/** Generating application. Tippecanoe adds this. */
|
|
17
|
+
generator?: string;
|
|
18
|
+
/** Generating application options. Tippecanoe adds this. */
|
|
19
|
+
generatorOptions?: string;
|
|
12
20
|
/** Tile indexing scheme */
|
|
13
21
|
scheme?: 'xyz' | 'tms';
|
|
14
22
|
/** Sharded URLs */
|
|
@@ -23,10 +31,6 @@ export type TileJSON = {
|
|
|
23
31
|
htmlAttribution?: string;
|
|
24
32
|
htmlLegend?: string;
|
|
25
33
|
layers?: TileJSONLayer[];
|
|
26
|
-
/** Generating application. Tippecanoe adds this. */
|
|
27
|
-
generator?: string;
|
|
28
|
-
/** Generating application options. Tippecanoe adds this. */
|
|
29
|
-
generatorOptions?: string;
|
|
30
34
|
/** Any nested JSON metadata */
|
|
31
35
|
metaJson?: any | null;
|
|
32
36
|
};
|
|
@@ -44,6 +48,7 @@ export type TileJSONLayer = {
|
|
|
44
48
|
minZoom?: number;
|
|
45
49
|
maxZoom?: number;
|
|
46
50
|
fields: TileJSONField[];
|
|
51
|
+
schema?: Schema;
|
|
47
52
|
};
|
|
48
53
|
export type TileJSONField = {
|
|
49
54
|
/** The name of this attribute */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-tilejson.d.ts","sourceRoot":"","sources":["../../src/lib/parse-tilejson.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG;IAC5B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wHAAwH;IACxH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IAEzB
|
|
1
|
+
{"version":3,"file":"parse-tilejson.d.ts","sourceRoot":"","sources":["../../src/lib/parse-tilejson.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAG1C,MAAM,MAAM,eAAe,GAAG;IAC5B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,QAAQ,GAAG;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wHAAwH;IACxH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IAEzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IAEb,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IAEvE,OAAO;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,EAAE,CAAC;IAExB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AA+CF;;;;;GAKG;AAEH,wBAAgB,aAAa,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,GAAG,IAAI,CAiE1F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { getSchemaFromTileJSONLayer } from "./get-schemas-from-tilejson.js";
|
|
4
5
|
const isObject = (x) => x !== null && typeof x === 'object';
|
|
5
6
|
/**
|
|
6
7
|
* Parse TileJSON from metadata
|
|
@@ -125,15 +126,14 @@ function parseTilestatsForLayer(layer, options) {
|
|
|
125
126
|
function mergeLayers(layers, tilestatsLayers) {
|
|
126
127
|
return layers.map((layer) => {
|
|
127
128
|
const tilestatsLayer = tilestatsLayers.find((tsLayer) => tsLayer.name === layer.name);
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
delete layer2.fields;
|
|
132
|
-
return {
|
|
133
|
-
...layer2,
|
|
129
|
+
const fields = tilestatsLayer?.fields || layer.fields || [];
|
|
130
|
+
const mergedLayer = {
|
|
131
|
+
...layer,
|
|
134
132
|
...tilestatsLayer,
|
|
135
133
|
fields
|
|
136
134
|
};
|
|
135
|
+
mergedLayer.schema = getSchemaFromTileJSONLayer(mergedLayer);
|
|
136
|
+
return mergedLayer;
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
@@ -260,7 +260,7 @@ function attributeTypeToFieldType(aType) {
|
|
|
260
260
|
const type = aType.toLowerCase();
|
|
261
261
|
if (!type || !attrTypeMap[type]) {
|
|
262
262
|
// console.warn(
|
|
263
|
-
// `cannot convert
|
|
263
|
+
// `cannot convert attribute type ${type} to loaders.gl data type, use string by default`
|
|
264
264
|
// );
|
|
265
265
|
}
|
|
266
266
|
return attrTypeMap[type] || { type: 'string' };
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,4 +1,41 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** For local coordinates, the tileIndex is not required */
|
|
2
|
+
type MVTLocalCoordinatesOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* When set to `local`, the parser will return a flat array of GeoJSON objects with local coordinates decoded from tile origin.
|
|
5
|
+
*/
|
|
6
|
+
coordinates: 'local';
|
|
7
|
+
tileIndex: null;
|
|
8
|
+
};
|
|
9
|
+
/** In WGS84 coordinates, the tileIndex is required */
|
|
10
|
+
type MVTWgs84CoordinatesOptions = {
|
|
11
|
+
/**
|
|
12
|
+
* When set to `wgs84`, the parser will return a flat array of GeoJSON objects with coordinates in longitude, latitude decoded from the provided tile index.
|
|
13
|
+
*/
|
|
14
|
+
coordinates?: 'wgs84';
|
|
15
|
+
/**
|
|
16
|
+
* Mandatory with `wgs84` coordinates option. An object containing tile index values (`x`, `y`,
|
|
17
|
+
* `z`) to reproject features' coordinates into WGS84.
|
|
18
|
+
*/
|
|
19
|
+
tileIndex?: {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
z: number;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type MVTOptions = (MVTLocalCoordinatesOptions | MVTWgs84CoordinatesOptions) & {
|
|
26
|
+
shape?: 'geojson-table' | 'columnar-table' | 'geojson' | 'binary' | 'binary-geometry';
|
|
27
|
+
/**
|
|
28
|
+
* When non-`null`, the layer name of each feature is added to
|
|
29
|
+
* `feature.properties[layerProperty]`. (A `feature.properties` object is created if the feature
|
|
30
|
+
* has no existing properties). If set to `null`, a layer name property will not be added.
|
|
31
|
+
*/
|
|
32
|
+
layerProperty?: string | number;
|
|
33
|
+
/**
|
|
34
|
+
* Optional list of layer names. If not `null`, only features belonging to the named layers will
|
|
35
|
+
* be included in the output. If `null`, features from all layers are returned.
|
|
36
|
+
*/
|
|
37
|
+
layers?: string[];
|
|
38
|
+
};
|
|
2
39
|
export type MVTMapboxGeometry = {
|
|
3
40
|
type?: string;
|
|
4
41
|
id?: number;
|
|
@@ -16,4 +53,5 @@ export type MVTMapboxCoordinates = {
|
|
|
16
53
|
};
|
|
17
54
|
id?: number;
|
|
18
55
|
};
|
|
56
|
+
export {};
|
|
19
57
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAIA,2DAA2D;AAC3D,KAAK,0BAA0B,GAAG;IAChC;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,sDAAsD;AACtD,KAAK,0BAA0B,GAAG;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,0BAA0B,GAAG,0BAA0B,CAAC,GAAG;IACnF,KAAK,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IACtF;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,iBAAiB,CAAC;KAChC,CAAC;IACF,UAAU,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;KAAC,CAAC;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC"}
|
package/dist/lib/types.js
CHANGED
package/dist/mvt-loader.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export type MVTLoaderOptions = LoaderOptions & {
|
|
|
20
20
|
workerUrl?: string;
|
|
21
21
|
};
|
|
22
22
|
gis?: {
|
|
23
|
+
/** @deprecated Use options.mvt.shape === 'binary-geometry' */
|
|
24
|
+
binary?: boolean;
|
|
23
25
|
/** @deprecated. Use options.mvt.shape */
|
|
24
26
|
format?: 'geojson-table' | 'columnar-table' | 'geojson' | 'binary' | 'binary-geometry';
|
|
25
27
|
};
|
package/dist/mvt-loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mvt-loader.d.ts","sourceRoot":"","sources":["../src/mvt-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,2BAAwB;AAMzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,6BAA6B;QAC7B,KAAK,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;QACtF,sHAAsH;QACtH,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAChC,uJAAuJ;QACvJ,SAAS,CAAC,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAC9C,0GAA0G;QAC1G,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,gJAAgJ;QAChJ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,yCAAyC;QACzC,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;KACxF,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;yDAEiB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAOtD,CAAC"}
|
|
1
|
+
{"version":3,"file":"mvt-loader.d.ts","sourceRoot":"","sources":["../src/mvt-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,2BAAwB;AAMzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,6BAA6B;QAC7B,KAAK,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;QACtF,sHAAsH;QACtH,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAChC,uJAAuJ;QACvJ,SAAS,CAAC,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAC9C,0GAA0G;QAC1G,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,gJAAgJ;QAChJ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,8DAA8D;QAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,yCAAyC;QACzC,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;KACxF,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;yDAEiB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAOtD,CAAC"}
|
package/dist/mvt-loader.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { parseMVT } from "./lib/parse-mvt.js";
|
|
6
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
-
const VERSION = typeof "4.3.0-alpha.
|
|
8
|
+
const VERSION = typeof "4.3.0-alpha.4" !== 'undefined' ? "4.3.0-alpha.4" : 'latest';
|
|
9
9
|
/**
|
|
10
10
|
* Worker loader for the Mapbox Vector Tile format
|
|
11
11
|
*/
|
package/dist/mvt-worker.js
CHANGED
|
@@ -1649,7 +1649,7 @@
|
|
|
1649
1649
|
var navigator_ = globalThis.navigator || {};
|
|
1650
1650
|
|
|
1651
1651
|
// ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
|
|
1652
|
-
var VERSION = true ? "4.3.0-alpha.
|
|
1652
|
+
var VERSION = true ? "4.3.0-alpha.4" : "untranspiled source";
|
|
1653
1653
|
var isBrowser2 = isBrowser();
|
|
1654
1654
|
|
|
1655
1655
|
// ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
|
|
@@ -2147,7 +2147,7 @@
|
|
|
2147
2147
|
});
|
|
2148
2148
|
|
|
2149
2149
|
// ../loader-utils/src/lib/log-utils/log.ts
|
|
2150
|
-
var VERSION2 = true ? "4.3.0-alpha.
|
|
2150
|
+
var VERSION2 = true ? "4.3.0-alpha.4" : "latest";
|
|
2151
2151
|
var version = VERSION2[0] >= "0" && VERSION2[0] <= "9" ? `v${VERSION2}` : "";
|
|
2152
2152
|
function createLog() {
|
|
2153
2153
|
const log2 = new Log({ id: "loaders.gl" });
|
|
@@ -3019,7 +3019,7 @@
|
|
|
3019
3019
|
}
|
|
3020
3020
|
|
|
3021
3021
|
// src/mvt-loader.ts
|
|
3022
|
-
var VERSION3 = true ? "4.3.0-alpha.
|
|
3022
|
+
var VERSION3 = true ? "4.3.0-alpha.4" : "latest";
|
|
3023
3023
|
var MVTWorkerLoader = {
|
|
3024
3024
|
dataType: null,
|
|
3025
3025
|
batchType: null,
|
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.3.0-alpha.
|
|
7
|
+
const VERSION = typeof "4.3.0-alpha.4" !== 'undefined' ? "4.3.0-alpha.4" : 'latest';
|
|
8
8
|
/**
|
|
9
9
|
* Loader for TileJSON metadata
|
|
10
10
|
*/
|
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.3.0-alpha.
|
|
4
|
+
"version": "4.3.0-alpha.5",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"publishConfig": {
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
"types": "./dist/index.d.ts",
|
|
27
27
|
"import": "./dist/index.js",
|
|
28
28
|
"require": "./dist/index.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./mvt-worker.js": {
|
|
31
|
+
"import": "./dist/mvt-worker.js"
|
|
29
32
|
}
|
|
30
33
|
},
|
|
31
34
|
"sideEffects": false,
|
|
@@ -41,10 +44,10 @@
|
|
|
41
44
|
"build-worker": "esbuild src/workers/mvt-worker.ts --bundle --outfile=dist/mvt-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
42
45
|
},
|
|
43
46
|
"dependencies": {
|
|
44
|
-
"@loaders.gl/gis": "4.3.0-alpha.
|
|
45
|
-
"@loaders.gl/images": "4.3.0-alpha.
|
|
46
|
-
"@loaders.gl/loader-utils": "4.3.0-alpha.
|
|
47
|
-
"@loaders.gl/schema": "4.3.0-alpha.
|
|
47
|
+
"@loaders.gl/gis": "4.3.0-alpha.5",
|
|
48
|
+
"@loaders.gl/images": "4.3.0-alpha.5",
|
|
49
|
+
"@loaders.gl/loader-utils": "4.3.0-alpha.5",
|
|
50
|
+
"@loaders.gl/schema": "4.3.0-alpha.5",
|
|
48
51
|
"@math.gl/polygon": "^4.0.0",
|
|
49
52
|
"@probe.gl/stats": "^4.0.0",
|
|
50
53
|
"pbf": "^3.2.1"
|
|
@@ -55,5 +58,5 @@
|
|
|
55
58
|
"peerDependencies": {
|
|
56
59
|
"@loaders.gl/core": "^4.0.0"
|
|
57
60
|
},
|
|
58
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "b57553345b3cbf621c95ad9b22aa672217451f61"
|
|
59
62
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {Schema, Field, DataType, SchemaMetadata, FieldMetadata} from '@loaders.gl/schema';
|
|
6
|
+
import type {TileJSONLayer, TileJSONField} from './parse-tilejson';
|
|
7
|
+
|
|
8
|
+
// LAYERS
|
|
9
|
+
|
|
10
|
+
export function getSchemaFromTileJSONLayer(layer: TileJSONLayer): Schema {
|
|
11
|
+
const fields: Field[] = [];
|
|
12
|
+
if (layer.fields) {
|
|
13
|
+
for (const field of layer.fields) {
|
|
14
|
+
fields.push({
|
|
15
|
+
name: field.name,
|
|
16
|
+
type: getDataTypeFromTileJSONField(field),
|
|
17
|
+
metadata: getMetadataFromTileJSONField(field)
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
metadata: getMetadataFromTileJSONLayer(layer),
|
|
23
|
+
fields
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function getMetadataFromTileJSONLayer(layer: TileJSONLayer): SchemaMetadata {
|
|
28
|
+
const metadata: Record<string, string> = {};
|
|
29
|
+
for (const [key, value] of Object.entries(layer)) {
|
|
30
|
+
if (key !== 'fields' && value) {
|
|
31
|
+
metadata[key] = JSON.stringify(value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return metadata;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// FIELDS
|
|
38
|
+
|
|
39
|
+
function getDataTypeFromTileJSONField(field: TileJSONField): DataType {
|
|
40
|
+
switch (field.type.toLowerCase()) {
|
|
41
|
+
case 'float32':
|
|
42
|
+
return 'float32';
|
|
43
|
+
case 'number':
|
|
44
|
+
case 'float64':
|
|
45
|
+
return 'float64';
|
|
46
|
+
case 'string':
|
|
47
|
+
case 'utf8':
|
|
48
|
+
return 'utf8';
|
|
49
|
+
case 'boolean':
|
|
50
|
+
return 'bool';
|
|
51
|
+
default:
|
|
52
|
+
return 'null';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getMetadataFromTileJSONField(field: TileJSONField): FieldMetadata {
|
|
57
|
+
const metadata: Record<string, string> = {};
|
|
58
|
+
for (const [key, value] of Object.entries(field)) {
|
|
59
|
+
if (key !== 'name' && value) {
|
|
60
|
+
metadata[key] = JSON.stringify(value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return metadata;
|
|
64
|
+
}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
+
import {Schema} from '@loaders.gl/schema';
|
|
6
|
+
import {getSchemaFromTileJSONLayer} from './get-schemas-from-tilejson';
|
|
7
|
+
|
|
5
8
|
export type TileJSONOptions = {
|
|
6
9
|
/** max number of values. If not provided, include all values in the source tilestats */
|
|
7
10
|
maxValues?: number;
|
|
@@ -9,13 +12,21 @@ export type TileJSONOptions = {
|
|
|
9
12
|
|
|
10
13
|
/** Parsed and typed TileJSON, merges Tilestats information if present */
|
|
11
14
|
export type TileJSON = {
|
|
15
|
+
/** Name of the tileset (for presentation in UI) */
|
|
12
16
|
name?: string;
|
|
17
|
+
/** A description of the contents or purpose of the tileset */
|
|
13
18
|
description?: string;
|
|
19
|
+
/** The version of the tileset */
|
|
14
20
|
version?: string;
|
|
15
21
|
|
|
16
22
|
tileFormat?: string;
|
|
17
23
|
tilesetType?: string;
|
|
18
24
|
|
|
25
|
+
/** Generating application. Tippecanoe adds this. */
|
|
26
|
+
generator?: string;
|
|
27
|
+
/** Generating application options. Tippecanoe adds this. */
|
|
28
|
+
generatorOptions?: string;
|
|
29
|
+
|
|
19
30
|
/** Tile indexing scheme */
|
|
20
31
|
scheme?: 'xyz' | 'tms';
|
|
21
32
|
/** Sharded URLs */
|
|
@@ -33,11 +44,6 @@ export type TileJSON = {
|
|
|
33
44
|
// Combination of tilestats (if present) and tilejson layer information
|
|
34
45
|
layers?: TileJSONLayer[];
|
|
35
46
|
|
|
36
|
-
/** Generating application. Tippecanoe adds this. */
|
|
37
|
-
generator?: string;
|
|
38
|
-
/** Generating application options. Tippecanoe adds this. */
|
|
39
|
-
generatorOptions?: string;
|
|
40
|
-
|
|
41
47
|
/** Any nested JSON metadata */
|
|
42
48
|
metaJson?: any | null;
|
|
43
49
|
};
|
|
@@ -61,6 +67,8 @@ export type TileJSONLayer = {
|
|
|
61
67
|
minZoom?: number;
|
|
62
68
|
maxZoom?: number;
|
|
63
69
|
fields: TileJSONField[];
|
|
70
|
+
|
|
71
|
+
schema?: Schema;
|
|
64
72
|
};
|
|
65
73
|
|
|
66
74
|
export type TileJSONField = {
|
|
@@ -262,17 +270,16 @@ function parseTilestatsForLayer(layer: TilestatsLayer, options: TileJSONOptions)
|
|
|
262
270
|
}
|
|
263
271
|
|
|
264
272
|
function mergeLayers(layers: TileJSONLayer[], tilestatsLayers: TileJSONLayer[]): TileJSONLayer[] {
|
|
265
|
-
return layers.map((layer) => {
|
|
273
|
+
return layers.map((layer: TileJSONLayer): TileJSONLayer => {
|
|
266
274
|
const tilestatsLayer = tilestatsLayers.find((tsLayer) => tsLayer.name === layer.name);
|
|
267
|
-
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
delete layer2.fields;
|
|
271
|
-
return {
|
|
272
|
-
...layer2,
|
|
275
|
+
const fields = tilestatsLayer?.fields || layer.fields || [];
|
|
276
|
+
const mergedLayer = {
|
|
277
|
+
...layer,
|
|
273
278
|
...tilestatsLayer,
|
|
274
279
|
fields
|
|
275
280
|
} as TileJSONLayer;
|
|
281
|
+
mergedLayer.schema = getSchemaFromTileJSONLayer(mergedLayer);
|
|
282
|
+
return mergedLayer;
|
|
276
283
|
});
|
|
277
284
|
}
|
|
278
285
|
|
|
@@ -419,7 +426,7 @@ function attributeTypeToFieldType(aType: string): {type: string} {
|
|
|
419
426
|
const type = aType.toLowerCase();
|
|
420
427
|
if (!type || !attrTypeMap[type]) {
|
|
421
428
|
// console.warn(
|
|
422
|
-
// `cannot convert
|
|
429
|
+
// `cannot convert attribute type ${type} to loaders.gl data type, use string by default`
|
|
423
430
|
// );
|
|
424
431
|
}
|
|
425
432
|
return attrTypeMap[type] || {type: 'string'};
|
package/src/lib/types.ts
CHANGED
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
|
-
// Copyright vis.gl contributors
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
/** For local coordinates, the tileIndex is not required */
|
|
6
|
+
type MVTLocalCoordinatesOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* When set to `local`, the parser will return a flat array of GeoJSON objects with local coordinates decoded from tile origin.
|
|
9
|
+
*/
|
|
10
|
+
coordinates: 'local';
|
|
11
|
+
tileIndex: null;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** In WGS84 coordinates, the tileIndex is required */
|
|
15
|
+
type MVTWgs84CoordinatesOptions = {
|
|
16
|
+
/**
|
|
17
|
+
* When set to `wgs84`, the parser will return a flat array of GeoJSON objects with coordinates in longitude, latitude decoded from the provided tile index.
|
|
18
|
+
*/
|
|
19
|
+
coordinates?: 'wgs84';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Mandatory with `wgs84` coordinates option. An object containing tile index values (`x`, `y`,
|
|
23
|
+
* `z`) to reproject features' coordinates into WGS84.
|
|
24
|
+
*/
|
|
25
|
+
tileIndex?: {x: number; y: number; z: number};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type MVTOptions = (MVTLocalCoordinatesOptions | MVTWgs84CoordinatesOptions) & {
|
|
29
|
+
shape?: 'geojson-table' | 'columnar-table' | 'geojson' | 'binary' | 'binary-geometry';
|
|
30
|
+
/**
|
|
31
|
+
* When non-`null`, the layer name of each feature is added to
|
|
32
|
+
* `feature.properties[layerProperty]`. (A `feature.properties` object is created if the feature
|
|
33
|
+
* has no existing properties). If set to `null`, a layer name property will not be added.
|
|
34
|
+
*/
|
|
35
|
+
layerProperty?: string | number;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Optional list of layer names. If not `null`, only features belonging to the named layers will
|
|
39
|
+
* be included in the output. If `null`, features from all layers are returned.
|
|
40
|
+
*/
|
|
41
|
+
layers?: string[];
|
|
42
|
+
};
|
|
4
43
|
|
|
5
|
-
/** TODO where is this used? */
|
|
6
44
|
export type MVTMapboxGeometry = {
|
|
7
45
|
type?: string;
|
|
8
46
|
id?: number;
|
package/src/mvt-loader.ts
CHANGED
|
@@ -26,6 +26,8 @@ export type MVTLoaderOptions = LoaderOptions & {
|
|
|
26
26
|
workerUrl?: string;
|
|
27
27
|
};
|
|
28
28
|
gis?: {
|
|
29
|
+
/** @deprecated Use options.mvt.shape === 'binary-geometry' */
|
|
30
|
+
binary?: boolean;
|
|
29
31
|
/** @deprecated. Use options.mvt.shape */
|
|
30
32
|
format?: 'geojson-table' | 'columnar-table' | 'geojson' | 'binary' | 'binary-geometry';
|
|
31
33
|
};
|