@deck.gl/carto 9.0.37 → 9.0.40
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/cartoRasterTile-worker.js +4386 -6
- package/dist/cartoSpatialTile-worker.js +4378 -3
- package/dist/cartoVectorTile-worker.js +4378 -3
- package/dist/dist.dev.js +4449 -30
- package/dist/index.cjs +72 -21
- package/dist/index.cjs.map +3 -3
- package/dist/layers/post-process-utils.d.ts +14 -9
- package/dist/layers/post-process-utils.d.ts.map +1 -1
- package/dist/layers/post-process-utils.js +24 -0
- package/dist/layers/raster-layer-vertex.glsl.d.ts +1 -1
- package/dist/layers/raster-layer-vertex.glsl.d.ts.map +1 -1
- package/dist/layers/raster-layer-vertex.glsl.js +7 -7
- package/dist/layers/raster-layer.d.ts.map +1 -1
- package/dist/layers/raster-layer.js +14 -2
- package/dist/layers/raster-tile-layer.d.ts.map +1 -1
- package/dist/layers/raster-tile-layer.js +17 -3
- package/dist/layers/schema/carto-properties-tile-loader.js +1 -1
- package/dist/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
- package/dist/layers/schema/carto-raster-tile-loader.js +7 -3
- package/dist/layers/schema/carto-raster-tile.d.ts +1 -0
- package/dist/layers/schema/carto-raster-tile.d.ts.map +1 -1
- package/dist/layers/schema/carto-raster-tile.js +2 -1
- package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
- package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
- package/dist/layers/schema/fast-pbf.d.ts +5 -1
- package/dist/layers/schema/fast-pbf.d.ts.map +1 -1
- package/dist/layers/schema/fast-pbf.js +11 -2
- package/dist.min.js +21 -18
- package/package.json +2 -2
- package/src/layers/post-process-utils.ts +30 -1
- package/src/layers/raster-layer-vertex.glsl.ts +10 -8
- package/src/layers/raster-layer.ts +15 -2
- package/src/layers/raster-tile-layer.ts +27 -5
- package/src/layers/schema/carto-properties-tile-loader.ts +1 -1
- package/src/layers/schema/carto-raster-tile-loader.ts +7 -2
- package/src/layers/schema/carto-raster-tile.ts +3 -1
- package/src/layers/schema/fast-pbf.ts +17 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CompositeLayer, Layer, LayersList } from '@deck.gl/core';
|
|
1
|
+
import { _ConstructorOf, CompositeLayer, Layer, LayersList } from '@deck.gl/core';
|
|
2
2
|
type Constructor<T> = (new (...args: any[]) => T) & {
|
|
3
3
|
layerName: string;
|
|
4
4
|
};
|
|
@@ -10,18 +10,23 @@ type DrawableCompositeLayer = CompositeLayer & {
|
|
|
10
10
|
* Resulting layer must be used as a sublayer of a layer created
|
|
11
11
|
* with `PostProcessModifier`
|
|
12
12
|
*/
|
|
13
|
-
export declare function RTTModifier(BaseLayer:
|
|
14
|
-
new (): {
|
|
15
|
-
[x: string]: any;
|
|
16
|
-
draw(this: any, opts: any): void;
|
|
17
|
-
};
|
|
18
|
-
[x: string]: any;
|
|
19
|
-
layerName: string;
|
|
20
|
-
};
|
|
13
|
+
export declare function RTTModifier<T extends _ConstructorOf<Layer>>(BaseLayer: T): T;
|
|
21
14
|
/**
|
|
22
15
|
* Modifier that returns the a modified Layer, which applies a
|
|
23
16
|
* postprocess effect to all subLayers created using `RTTModifier`
|
|
24
17
|
*/
|
|
25
18
|
export declare function PostProcessModifier<T extends Constructor<DrawableCompositeLayer>>(BaseLayer: T, effect: any): T;
|
|
19
|
+
/**
|
|
20
|
+
* Copy
|
|
21
|
+
* Simple module that just copies input color to output
|
|
22
|
+
*/
|
|
23
|
+
export declare const copy: {
|
|
24
|
+
readonly name: "copy";
|
|
25
|
+
readonly fs: "vec4 copy_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {\n return color;\n}\n";
|
|
26
|
+
readonly getUniforms: () => {};
|
|
27
|
+
readonly passes: [{
|
|
28
|
+
readonly filter: true;
|
|
29
|
+
}];
|
|
30
|
+
};
|
|
26
31
|
export {};
|
|
27
32
|
//# sourceMappingURL=post-process-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-process-utils.d.ts","sourceRoot":"","sources":["../../src/layers/post-process-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"post-process-utils.d.ts","sourceRoot":"","sources":["../../src/layers/post-process-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,EAGL,UAAU,EAGX,MAAM,eAAe,CAAC;AAoBvB,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC;AACxE,KAAK,sBAAsB,GAAG,cAAc,GAAG;IAC7C,YAAY,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC;CAC/C,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,CAAC,sBAAsB,CAAC,EAC/E,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,GAAG,GACV,CAAC,CAgGH;AAQD;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;CAKkB,CAAC"}
|
|
@@ -34,6 +34,7 @@ DrawCallbackLayer.layerName = 'DrawCallbackLayer';
|
|
|
34
34
|
*/
|
|
35
35
|
export function RTTModifier(BaseLayer) {
|
|
36
36
|
var _a;
|
|
37
|
+
// @ts-expect-error initializeState is abstract
|
|
37
38
|
return _a = class RTTLayer extends BaseLayer {
|
|
38
39
|
draw(opts) {
|
|
39
40
|
const { moduleParameters } = opts;
|
|
@@ -49,6 +50,7 @@ export function RTTModifier(BaseLayer) {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
},
|
|
53
|
+
// @ts-expect-error typescript doesn't see static property
|
|
52
54
|
_a.layerName = `RTT-${BaseLayer.layerName}`,
|
|
53
55
|
_a;
|
|
54
56
|
}
|
|
@@ -128,7 +130,29 @@ export function PostProcessModifier(BaseLayer, effect) {
|
|
|
128
130
|
});
|
|
129
131
|
this.internalState.renderInProgress = false;
|
|
130
132
|
}
|
|
133
|
+
_finalize() {
|
|
134
|
+
this.internalState.renderBuffers.forEach((fbo) => {
|
|
135
|
+
fbo.destroy();
|
|
136
|
+
});
|
|
137
|
+
this.internalState.renderBuffers = null;
|
|
138
|
+
this.internalState.postProcess.cleanup();
|
|
139
|
+
}
|
|
131
140
|
},
|
|
132
141
|
_a.layerName = `PostProcess${BaseLayer.layerName}`,
|
|
133
142
|
_a;
|
|
134
143
|
}
|
|
144
|
+
const fs = /* glsl */ `\
|
|
145
|
+
vec4 copy_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {
|
|
146
|
+
return color;
|
|
147
|
+
}
|
|
148
|
+
`;
|
|
149
|
+
/**
|
|
150
|
+
* Copy
|
|
151
|
+
* Simple module that just copies input color to output
|
|
152
|
+
*/
|
|
153
|
+
export const copy = {
|
|
154
|
+
name: 'copy',
|
|
155
|
+
fs,
|
|
156
|
+
getUniforms: () => ({}),
|
|
157
|
+
passes: [{ filter: true }]
|
|
158
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const _default: "#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n // Rather than positioning using attribute, layout pixel grid using gl_InstanceID\n vec2
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n // Rather than positioning using attribute, layout pixel grid using gl_InstanceID\n vec2 tileOrigin = offset.xy;\n float scale = offset.z;\n\n int yIndex = - (gl_InstanceID / BLOCK_WIDTH);\n int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);\n\n // Avoid precision issues by applying 0.5 offset here, rather than when laying out vertices\n vec2 cellCenter = scale * vec2(float(xIndex) + 0.5, float(yIndex) - 0.5);\n\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\n\n // if alpha == 0.0 or z < 0.0, do not render element\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\n float cellWidth = coverage * scale;\n\n // Get position directly from quadbin, rather than projecting\n // Important to set geometry.position before using project_ methods below\n // as geometry.worldPosition is not set (we don't know our lat/long)\n geometry.position = vec4(tileOrigin + cellCenter, 0.0, 1.0);\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n geometry.position.xyz -= project_uCommonOrigin;\n }\n\n // calculate elevation, if 3d not enabled set to 0\n // cylindar geometry height are between -1.0 to 1.0, transform it to between 0, 1\n float elevation = 0.0;\n // calculate stroke offset\n float strokeOffsetRatio = 1.0;\n\n if (extruded) {\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n } else if (stroked) {\n float halfOffset = project_pixel_size(widthScale) / cellWidth;\n if (isStroke) {\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\n } else {\n strokeOffsetRatio -= halfOffset;\n }\n }\n\n geometry.pickingColor = instancePickingColors;\n\n // Cell coordinates centered on origin\n vec2 base = positions.xy * scale * strokeOffsetRatio * coverage * shouldRender;\n vec3 cell = vec3(base, project_size(elevation));\n DECKGL_FILTER_SIZE(cell, geometry);\n\n geometry.position.xyz += cell;\n gl_Position = project_common_position_to_clipspace(geometry.position);\n\n geometry.normal = project_normal(normals);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Light calculations\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
2
2
|
export default _default;
|
|
3
3
|
//# sourceMappingURL=raster-layer-vertex.glsl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-layer-vertex.glsl.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer-vertex.glsl.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"raster-layer-vertex.glsl.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer-vertex.glsl.ts"],"names":[],"mappings":";AAAA,wBAmGE"}
|
|
@@ -20,15 +20,15 @@ out vec4 vColor;
|
|
|
20
20
|
out vec4 position_commonspace;
|
|
21
21
|
#endif
|
|
22
22
|
void main(void) {
|
|
23
|
-
vec2
|
|
23
|
+
vec2 tileOrigin = offset.xy;
|
|
24
24
|
float scale = offset.z;
|
|
25
25
|
int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
|
|
26
26
|
int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
|
|
27
|
-
|
|
27
|
+
vec2 cellCenter = scale * vec2(float(xIndex) + 0.5, float(yIndex) - 0.5);
|
|
28
28
|
vec4 color = isStroke ? instanceLineColors : instanceFillColors;
|
|
29
29
|
float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
|
|
30
30
|
float cellWidth = coverage * scale;
|
|
31
|
-
geometry.position = vec4(
|
|
31
|
+
geometry.position = vec4(tileOrigin + cellCenter, 0.0, 1.0);
|
|
32
32
|
if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
|
|
33
33
|
geometry.position.xyz -= project_uCommonOrigin;
|
|
34
34
|
}
|
|
@@ -45,10 +45,10 @@ strokeOffsetRatio -= halfOffset;
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
geometry.pickingColor = instancePickingColors;
|
|
48
|
-
vec2
|
|
49
|
-
vec3
|
|
50
|
-
DECKGL_FILTER_SIZE(
|
|
51
|
-
geometry.position.xyz +=
|
|
48
|
+
vec2 base = positions.xy * scale * strokeOffsetRatio * coverage * shouldRender;
|
|
49
|
+
vec3 cell = vec3(base, project_size(elevation));
|
|
50
|
+
DECKGL_FILTER_SIZE(cell, geometry);
|
|
51
|
+
geometry.position.xyz += cell;
|
|
52
52
|
gl_Position = project_common_position_to_clipspace(geometry.position);
|
|
53
53
|
geometry.normal = project_normal(normals);
|
|
54
54
|
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAc,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAc,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AA2D9D,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IAAI,iBAAiB,GAC/D,gBAAgB,CAAC,KAAK,CAAC,GACvB,mBAAmB,CAAC;AAEtB,uCAAuC;AACvC,KAAK,iBAAiB,GAAG;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACnF,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAC/C;IACC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,YAAY,0CAAgB;IAEnC,KAAK,EAAG;QACN,sBAAsB,EAAE,MAAM,CAAC;QAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IAEF,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;IAuDzC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IAetF,cAAc,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;IAa1B,oBAAoB,CAAC,IAAI,EAAE,WAAW;CAoBvC"}
|
|
@@ -3,6 +3,7 @@ import { ColumnLayer } from '@deck.gl/layers';
|
|
|
3
3
|
import { quadbinToOffset } from "./quadbin-utils.js";
|
|
4
4
|
import vs from "./raster-layer-vertex.glsl.js";
|
|
5
5
|
import { createBinaryProxy } from "../utils.js";
|
|
6
|
+
import { RTTModifier } from "./post-process-utils.js";
|
|
6
7
|
const defaultProps = {
|
|
7
8
|
...ColumnLayer.defaultProps,
|
|
8
9
|
extruded: false,
|
|
@@ -15,7 +16,8 @@ const defaultProps = {
|
|
|
15
16
|
]
|
|
16
17
|
};
|
|
17
18
|
// Modified ColumnLayer with custom vertex shader
|
|
18
|
-
|
|
19
|
+
// Use RTT to avoid inter-tile seams
|
|
20
|
+
class RasterColumnLayer extends RTTModifier(ColumnLayer) {
|
|
19
21
|
getShaders() {
|
|
20
22
|
const shaders = super.getShaders();
|
|
21
23
|
const data = this.props.data;
|
|
@@ -81,7 +83,17 @@ class RasterLayer extends CompositeLayer {
|
|
|
81
83
|
dataComparator: wrappedDataComparator,
|
|
82
84
|
offset,
|
|
83
85
|
highlightedObjectIndex,
|
|
84
|
-
highlightColor
|
|
86
|
+
highlightColor,
|
|
87
|
+
// RTT requires blending otherwise opacity < 1 blends with black
|
|
88
|
+
// render target
|
|
89
|
+
parameters: {
|
|
90
|
+
blendColorSrcFactor: 'one',
|
|
91
|
+
blendAlphaSrcFactor: 'one',
|
|
92
|
+
blendColorDstFactor: 'zero',
|
|
93
|
+
blendAlphaDstFactor: 'zero',
|
|
94
|
+
blendColorOperation: 'add',
|
|
95
|
+
blendAlphaOperation: 'add'
|
|
96
|
+
}
|
|
85
97
|
});
|
|
86
98
|
}
|
|
87
99
|
getSubLayerAccessor(accessor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,YAAY,EAEZ,KAAK,EACL,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,WAAW,EAAE,EAAC,gBAAgB,EAAC,0BAAuB;AAE7D,OAAO,KAAK,EAAC,cAAc,EAAC,4BAAyB;AAGrD,OAAO,EAAY,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAG9D,eAAO,MAAM,eAAe;;SAI3B,CAAC;AAQF,mDAAmD;AACnD,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,GAC9E,mBAAmB,CAAC;AAEtB,2CAA2C;AAC3C,KAAK,qBAAqB,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GACvE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG;IACpC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAYJ,MAAM,CAAC,OAAO,OAAO,eAAe,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,YAAY,8CAAgB;IAEnC,cAAc,IAAI,GAAG;IAOrB,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAoB1C"}
|
|
@@ -4,6 +4,7 @@ import QuadbinTileset2D from "./quadbin-tileset-2d.js";
|
|
|
4
4
|
import { injectAccessToken, TilejsonPropType } from "./utils.js";
|
|
5
5
|
import { DEFAULT_TILE_SIZE } from "../constants.js";
|
|
6
6
|
import { TileLayer } from '@deck.gl/geo-layers';
|
|
7
|
+
import { copy, PostProcessModifier } from "./post-process-utils.js";
|
|
7
8
|
export const renderSubLayers = props => {
|
|
8
9
|
const tileIndex = props.tile?.index?.q;
|
|
9
10
|
if (!tileIndex)
|
|
@@ -12,8 +13,18 @@ export const renderSubLayers = props => {
|
|
|
12
13
|
};
|
|
13
14
|
const defaultProps = {
|
|
14
15
|
data: TilejsonPropType,
|
|
16
|
+
refinementStrategy: 'no-overlap',
|
|
15
17
|
tileSize: DEFAULT_TILE_SIZE
|
|
16
18
|
};
|
|
19
|
+
class PostProcessTileLayer extends PostProcessModifier(TileLayer, copy) {
|
|
20
|
+
filterSubLayer(context) {
|
|
21
|
+
// Handle DrawCallbackLayer
|
|
22
|
+
const { tile } = context.layer.props;
|
|
23
|
+
if (!tile)
|
|
24
|
+
return true;
|
|
25
|
+
return super.filterSubLayer(context);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
class RasterTileLayer extends CompositeLayer {
|
|
18
29
|
getLoadOptions() {
|
|
19
30
|
const loadOptions = super.getLoadOptions() || {};
|
|
@@ -25,8 +36,8 @@ class RasterTileLayer extends CompositeLayer {
|
|
|
25
36
|
const tileJSON = this.props.data;
|
|
26
37
|
if (!tileJSON)
|
|
27
38
|
return null;
|
|
28
|
-
const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;
|
|
29
|
-
const SubLayerClass = this.getSubLayerClass('tile',
|
|
39
|
+
const { tiles: data, minzoom: minZoom, maxzoom: maxZoom, raster_metadata: metadata } = tileJSON;
|
|
40
|
+
const SubLayerClass = this.getSubLayerClass('tile', PostProcessTileLayer);
|
|
30
41
|
return new SubLayerClass(this.props, {
|
|
31
42
|
id: `raster-tile-layer-${this.props.id}`,
|
|
32
43
|
data,
|
|
@@ -35,7 +46,10 @@ class RasterTileLayer extends CompositeLayer {
|
|
|
35
46
|
renderSubLayers,
|
|
36
47
|
minZoom,
|
|
37
48
|
maxZoom,
|
|
38
|
-
loadOptions:
|
|
49
|
+
loadOptions: {
|
|
50
|
+
cartoRasterTile: { metadata },
|
|
51
|
+
...this.getLoadOptions()
|
|
52
|
+
}
|
|
39
53
|
});
|
|
40
54
|
}
|
|
41
55
|
}
|
|
@@ -8,7 +8,7 @@ const CartoPropertiesTileLoader = {
|
|
|
8
8
|
extensions: ['pbf'],
|
|
9
9
|
mimeTypes: ['application/vnd.carto-properties-tile'],
|
|
10
10
|
category: 'geometry',
|
|
11
|
-
worker:
|
|
11
|
+
worker: true,
|
|
12
12
|
parse: async (arrayBuffer, options) => parseCartoPropertiesTile(arrayBuffer, options),
|
|
13
13
|
parseSync: parseCartoPropertiesTile,
|
|
14
14
|
options: {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carto-raster-tile-loader.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAKzE,OAAO,EAAC,YAAY,EAAE,UAAU,EAAC,+BAA4B;
|
|
1
|
+
{"version":3,"file":"carto-raster-tile-loader.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAKzE,OAAO,EAAC,YAAY,EAAE,UAAU,EAAC,+BAA4B;AAmB7D,QAAA,MAAM,qBAAqB,EAAE,gBAa5B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,EAAE,UAAU,EAAE,CAAC;KAC1B,CAAC;CACH,CAAC;AAoBF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { TileReader } from "./carto-raster-tile.js";
|
|
2
2
|
import { parsePbf } from "./tile-loader-utils.js";
|
|
3
3
|
import { getWorkerUrl } from "../../utils.js";
|
|
4
|
-
const VERSION = typeof "9.0.
|
|
4
|
+
const VERSION = typeof "9.0.40" !== 'undefined' ? "9.0.40" : 'latest';
|
|
5
5
|
const id = 'cartoRasterTile';
|
|
6
6
|
const DEFAULT_OPTIONS = {
|
|
7
7
|
cartoRasterTile: {
|
|
8
|
+
metadata: null,
|
|
8
9
|
workerUrl: getWorkerUrl(id, VERSION)
|
|
9
10
|
}
|
|
10
11
|
};
|
|
@@ -22,9 +23,12 @@ const CartoRasterTileLoader = {
|
|
|
22
23
|
options: DEFAULT_OPTIONS
|
|
23
24
|
};
|
|
24
25
|
function parseCartoRasterTile(arrayBuffer, options) {
|
|
25
|
-
|
|
26
|
+
const metadata = options?.cartoRasterTile?.metadata;
|
|
27
|
+
if (!arrayBuffer || !metadata)
|
|
26
28
|
return null;
|
|
27
|
-
|
|
29
|
+
TileReader.compression = metadata.compression;
|
|
30
|
+
const out = parsePbf(arrayBuffer, TileReader);
|
|
31
|
+
const { bands, blockSize } = out;
|
|
28
32
|
const numericProps = {};
|
|
29
33
|
for (let i = 0; i < bands.length; i++) {
|
|
30
34
|
const { name, data } = bands[i];
|
|
@@ -3,6 +3,7 @@ export declare class BandReader {
|
|
|
3
3
|
static _readField(this: void, tag: any, obj: any, pbf: any): void;
|
|
4
4
|
}
|
|
5
5
|
export declare class TileReader {
|
|
6
|
+
static compression: null | 'gzip';
|
|
6
7
|
static read(pbf: any, end: any): any;
|
|
7
8
|
static _readField(this: void, tag: any, obj: any, pbf: any): void;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carto-raster-tile.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/carto-raster-tile.ts"],"names":[],"mappings":"AAiBA,qBAAa,UAAU;IACrB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAA,EAAE,GAAG,CAAC,EAAE,MAAM;IAI7B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA;
|
|
1
|
+
{"version":3,"file":"carto-raster-tile.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/carto-raster-tile.ts"],"names":[],"mappings":"AAiBA,qBAAa,UAAU;IACrB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAA,EAAE,GAAG,CAAC,EAAE,MAAM;IAI7B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA;CAa5C;AAED,qBAAa,UAAU;IACrB,OAAc,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA;IAGpB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA;CAI5C"}
|
|
@@ -27,7 +27,8 @@ export class BandReader {
|
|
|
27
27
|
throw Error(`Invalid data type: ${obj.type}`);
|
|
28
28
|
}
|
|
29
29
|
obj.data = {};
|
|
30
|
-
|
|
30
|
+
const { compression } = TileReader;
|
|
31
|
+
readPackedTypedArray(TypedArray, pbf, obj.data, { compression });
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
}
|
|
@@ -2,7 +2,7 @@ import { TileReader } from "./carto-spatial-tile.js";
|
|
|
2
2
|
import { parsePbf } from "./tile-loader-utils.js";
|
|
3
3
|
import { getWorkerUrl } from "../../utils.js";
|
|
4
4
|
import { binaryToSpatialjson } from "./spatialjson-utils.js";
|
|
5
|
-
const VERSION = typeof "9.0.
|
|
5
|
+
const VERSION = typeof "9.0.40" !== 'undefined' ? "9.0.40" : 'latest';
|
|
6
6
|
const id = 'cartoSpatialTile';
|
|
7
7
|
const DEFAULT_OPTIONS = {
|
|
8
8
|
cartoSpatialTile: {
|
|
@@ -2,7 +2,7 @@ import earcut from 'earcut';
|
|
|
2
2
|
import { TileReader } from "./carto-tile.js";
|
|
3
3
|
import { parsePbf } from "./tile-loader-utils.js";
|
|
4
4
|
import { getWorkerUrl } from "../../utils.js";
|
|
5
|
-
const VERSION = typeof "9.0.
|
|
5
|
+
const VERSION = typeof "9.0.40" !== 'undefined' ? "9.0.40" : 'latest';
|
|
6
6
|
const id = 'cartoVectorTile';
|
|
7
7
|
const DEFAULT_OPTIONS = {
|
|
8
8
|
cartoVectorTile: {
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
type ReadPackedOptions = {
|
|
2
|
+
compression: null | 'gzip';
|
|
3
|
+
};
|
|
4
|
+
export declare function readPackedTypedArray(TypedArray: any, pbf: any, obj: any, options?: ReadPackedOptions): any;
|
|
5
|
+
export {};
|
|
2
6
|
//# sourceMappingURL=fast-pbf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-pbf.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/fast-pbf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fast-pbf.d.ts","sourceRoot":"","sources":["../../../src/layers/schema/fast-pbf.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAAG;IACvB,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;CAC5B,CAAC;AAGF,wBAAgB,oBAAoB,CAAC,UAAU,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,OAAO,CAAC,EAAE,iBAAiB,OAcrF"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import { GZipCompression } from '@loaders.gl/compression';
|
|
1
2
|
// Optimized (100X speed improvement) reading function for binary data
|
|
2
|
-
export function readPackedTypedArray(TypedArray, pbf, obj) {
|
|
3
|
+
export function readPackedTypedArray(TypedArray, pbf, obj, options) {
|
|
3
4
|
const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
|
|
4
|
-
|
|
5
|
+
const data = pbf.buf.buffer.slice(pbf.pos, end);
|
|
6
|
+
if (options?.compression === 'gzip') {
|
|
7
|
+
const compression = new GZipCompression();
|
|
8
|
+
const decompressedData = compression.decompressSync(data);
|
|
9
|
+
obj.value = new TypedArray(decompressedData);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
obj.value = new TypedArray(data);
|
|
13
|
+
}
|
|
5
14
|
pbf.pos = end;
|
|
6
15
|
return obj.value;
|
|
7
16
|
}
|