@deck.gl/geo-layers 9.4.0-alpha.2 → 9.4.0-beta.1

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 (121) hide show
  1. package/dist/dist.dev.js +6375 -5029
  2. package/dist/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  3. package/dist/geo-cell-layer/GeoCellLayer.js +2 -1
  4. package/dist/geo-cell-layer/GeoCellLayer.js.map +1 -1
  5. package/dist/index.cjs +21181 -1889
  6. package/dist/index.cjs.map +3 -4
  7. package/dist/mesh-layer/mesh-layer-uniforms.d.ts +1 -0
  8. package/dist/mesh-layer/mesh-layer-uniforms.d.ts.map +1 -1
  9. package/dist/mesh-layer/mesh-layer-uniforms.js +8 -0
  10. package/dist/mesh-layer/mesh-layer-uniforms.js.map +1 -1
  11. package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
  12. package/dist/mesh-layer/mesh-layer.js +15 -6
  13. package/dist/mesh-layer/mesh-layer.js.map +1 -1
  14. package/dist/mesh-layer/mesh-layer.wgsl.d.ts +3 -0
  15. package/dist/mesh-layer/mesh-layer.wgsl.d.ts.map +1 -0
  16. package/dist/mesh-layer/mesh-layer.wgsl.js +130 -0
  17. package/dist/mesh-layer/mesh-layer.wgsl.js.map +1 -0
  18. package/dist/mesh-layer/mesh-pbr-material.d.ts +252 -0
  19. package/dist/mesh-layer/mesh-pbr-material.d.ts.map +1 -0
  20. package/dist/mesh-layer/mesh-pbr-material.js +27 -0
  21. package/dist/mesh-layer/mesh-pbr-material.js.map +1 -0
  22. package/dist/trips-layer/trips-layer-uniforms.d.ts +1 -0
  23. package/dist/trips-layer/trips-layer-uniforms.d.ts.map +1 -1
  24. package/dist/trips-layer/trips-layer-uniforms.js +14 -3
  25. package/dist/trips-layer/trips-layer-uniforms.js.map +1 -1
  26. package/dist/trips-layer/trips-layer.d.ts +6 -1
  27. package/dist/trips-layer/trips-layer.d.ts.map +1 -1
  28. package/dist/trips-layer/trips-layer.js +57 -24
  29. package/dist/trips-layer/trips-layer.js.map +1 -1
  30. package/dist/trips-layer/trips-layer.wgsl.d.ts +11 -0
  31. package/dist/trips-layer/trips-layer.wgsl.d.ts.map +1 -0
  32. package/dist/trips-layer/trips-layer.wgsl.js +48 -0
  33. package/dist/trips-layer/trips-layer.wgsl.js.map +1 -0
  34. package/dist.min.js +1415 -149
  35. package/dist.webgl-only/a5-layer/a5-layer.js +30 -0
  36. package/dist.webgl-only/a5-layer/a5-layer.js.map +1 -0
  37. package/dist.webgl-only/geo-cell-layer/GeoCellLayer.js +57 -0
  38. package/dist.webgl-only/geo-cell-layer/GeoCellLayer.js.map +1 -0
  39. package/dist.webgl-only/geohash-layer/geohash-layer.js +24 -0
  40. package/dist.webgl-only/geohash-layer/geohash-layer.js.map +1 -0
  41. package/dist.webgl-only/geohash-layer/geohash-utils.js +54 -0
  42. package/dist.webgl-only/geohash-layer/geohash-utils.js.map +1 -0
  43. package/dist.webgl-only/great-circle-layer/great-circle-layer.js +17 -0
  44. package/dist.webgl-only/great-circle-layer/great-circle-layer.js.map +1 -0
  45. package/dist.webgl-only/h3-layers/h3-cluster-layer.js +52 -0
  46. package/dist.webgl-only/h3-layers/h3-cluster-layer.js.map +1 -0
  47. package/dist.webgl-only/h3-layers/h3-hexagon-layer.js +209 -0
  48. package/dist.webgl-only/h3-layers/h3-hexagon-layer.js.map +1 -0
  49. package/dist.webgl-only/h3-layers/h3-utils.js +60 -0
  50. package/dist.webgl-only/h3-layers/h3-utils.js.map +1 -0
  51. package/dist.webgl-only/index.cjs +22542 -0
  52. package/dist.webgl-only/index.cjs.map +6 -0
  53. package/dist.webgl-only/index.js +22 -0
  54. package/dist.webgl-only/index.js.map +1 -0
  55. package/dist.webgl-only/mesh-layer/mesh-layer-fragment.glsl.js +34 -0
  56. package/dist.webgl-only/mesh-layer/mesh-layer-fragment.glsl.js.map +1 -0
  57. package/dist.webgl-only/mesh-layer/mesh-layer-uniforms.js +19 -0
  58. package/dist.webgl-only/mesh-layer/mesh-layer-uniforms.js.map +1 -0
  59. package/dist.webgl-only/mesh-layer/mesh-layer-vertex.glsl.js +64 -0
  60. package/dist.webgl-only/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -0
  61. package/dist.webgl-only/mesh-layer/mesh-layer.js +149 -0
  62. package/dist.webgl-only/mesh-layer/mesh-layer.js.map +1 -0
  63. package/dist.webgl-only/mesh-layer/mesh-layer.wgsl.js +5 -0
  64. package/dist.webgl-only/mesh-layer/mesh-layer.wgsl.js.map +1 -0
  65. package/dist.webgl-only/mesh-layer/mesh-pbr-material.js +27 -0
  66. package/dist.webgl-only/mesh-layer/mesh-pbr-material.js.map +1 -0
  67. package/dist.webgl-only/mvt-layer/coordinate-transform.js +45 -0
  68. package/dist.webgl-only/mvt-layer/coordinate-transform.js.map +1 -0
  69. package/dist.webgl-only/mvt-layer/find-index-binary.js +100 -0
  70. package/dist.webgl-only/mvt-layer/find-index-binary.js.map +1 -0
  71. package/dist.webgl-only/mvt-layer/mvt-layer.js +315 -0
  72. package/dist.webgl-only/mvt-layer/mvt-layer.js.map +1 -0
  73. package/dist.webgl-only/quadkey-layer/quadkey-layer.js +27 -0
  74. package/dist.webgl-only/quadkey-layer/quadkey-layer.js.map +1 -0
  75. package/dist.webgl-only/quadkey-layer/quadkey-utils.js +30 -0
  76. package/dist.webgl-only/quadkey-layer/quadkey-utils.js.map +1 -0
  77. package/dist.webgl-only/s2-layer/s2-geometry.js +127 -0
  78. package/dist.webgl-only/s2-layer/s2-geometry.js.map +1 -0
  79. package/dist.webgl-only/s2-layer/s2-layer.js +24 -0
  80. package/dist.webgl-only/s2-layer/s2-layer.js.map +1 -0
  81. package/dist.webgl-only/s2-layer/s2-utils.js +91 -0
  82. package/dist.webgl-only/s2-layer/s2-utils.js.map +1 -0
  83. package/dist.webgl-only/terrain-layer/terrain-layer.js +260 -0
  84. package/dist.webgl-only/terrain-layer/terrain-layer.js.map +1 -0
  85. package/dist.webgl-only/tile-3d-layer/tile-3d-layer.js +343 -0
  86. package/dist.webgl-only/tile-3d-layer/tile-3d-layer.js.map +1 -0
  87. package/dist.webgl-only/tile-layer/tile-layer.js +233 -0
  88. package/dist.webgl-only/tile-layer/tile-layer.js.map +1 -0
  89. package/dist.webgl-only/tileset-2d/index.js +7 -0
  90. package/dist.webgl-only/tileset-2d/index.js.map +1 -0
  91. package/dist.webgl-only/tileset-2d/memoize.js +45 -0
  92. package/dist.webgl-only/tileset-2d/memoize.js.map +1 -0
  93. package/dist.webgl-only/tileset-2d/tile-2d-header.js +141 -0
  94. package/dist.webgl-only/tileset-2d/tile-2d-header.js.map +1 -0
  95. package/dist.webgl-only/tileset-2d/tile-2d-traversal.js +208 -0
  96. package/dist.webgl-only/tileset-2d/tile-2d-traversal.js.map +1 -0
  97. package/dist.webgl-only/tileset-2d/tileset-2d.js +557 -0
  98. package/dist.webgl-only/tileset-2d/tileset-2d.js.map +1 -0
  99. package/dist.webgl-only/tileset-2d/types.js +5 -0
  100. package/dist.webgl-only/tileset-2d/types.js.map +1 -0
  101. package/dist.webgl-only/tileset-2d/utils.js +246 -0
  102. package/dist.webgl-only/tileset-2d/utils.js.map +1 -0
  103. package/dist.webgl-only/trips-layer/trips-layer-uniforms.js +23 -0
  104. package/dist.webgl-only/trips-layer/trips-layer-uniforms.js.map +1 -0
  105. package/dist.webgl-only/trips-layer/trips-layer.js +97 -0
  106. package/dist.webgl-only/trips-layer/trips-layer.js.map +1 -0
  107. package/dist.webgl-only/trips-layer/trips-layer.wgsl.js +3 -0
  108. package/dist.webgl-only/trips-layer/trips-layer.wgsl.js.map +1 -0
  109. package/dist.webgl-only/wms-layer/utils.js +17 -0
  110. package/dist.webgl-only/wms-layer/utils.js.map +1 -0
  111. package/dist.webgl-only/wms-layer/wms-layer.js +198 -0
  112. package/dist.webgl-only/wms-layer/wms-layer.js.map +1 -0
  113. package/package.json +11 -6
  114. package/src/geo-cell-layer/GeoCellLayer.ts +2 -0
  115. package/src/mesh-layer/mesh-layer-uniforms.ts +9 -0
  116. package/src/mesh-layer/mesh-layer.ts +15 -6
  117. package/src/mesh-layer/mesh-layer.wgsl.ts +130 -0
  118. package/src/mesh-layer/mesh-pbr-material.ts +39 -0
  119. package/src/trips-layer/trips-layer-uniforms.ts +15 -3
  120. package/src/trips-layer/trips-layer.ts +84 -38
  121. package/src/trips-layer/trips-layer.wgsl.ts +63 -0
@@ -0,0 +1,246 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { getOSMTileIndices } from "./tile-2d-traversal.js";
5
+ const TILE_SIZE = 512;
6
+ const DEFAULT_EXTENT = [-Infinity, -Infinity, Infinity, Infinity];
7
+ export const urlType = {
8
+ type: 'object',
9
+ value: null,
10
+ validate: (value, propType) => (propType.optional && value === null) ||
11
+ typeof value === 'string' ||
12
+ (Array.isArray(value) && value.every(url => typeof url === 'string')),
13
+ equal: (value1, value2) => {
14
+ if (value1 === value2) {
15
+ return true;
16
+ }
17
+ if (!Array.isArray(value1) || !Array.isArray(value2)) {
18
+ return false;
19
+ }
20
+ const len = value1.length;
21
+ if (len !== value2.length) {
22
+ return false;
23
+ }
24
+ for (let i = 0; i < len; i++) {
25
+ if (value1[i] !== value2[i]) {
26
+ return false;
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+ };
32
+ export function transformBox(bbox, modelMatrix) {
33
+ const transformedCoords = [
34
+ // top-left
35
+ modelMatrix.transformAsPoint([bbox[0], bbox[1]]),
36
+ // top-right
37
+ modelMatrix.transformAsPoint([bbox[2], bbox[1]]),
38
+ // bottom-left
39
+ modelMatrix.transformAsPoint([bbox[0], bbox[3]]),
40
+ // bottom-right
41
+ modelMatrix.transformAsPoint([bbox[2], bbox[3]])
42
+ ];
43
+ const transformedBox = [
44
+ // Minimum x coord
45
+ Math.min(...transformedCoords.map(i => i[0])),
46
+ // Minimum y coord
47
+ Math.min(...transformedCoords.map(i => i[1])),
48
+ // Max x coord
49
+ Math.max(...transformedCoords.map(i => i[0])),
50
+ // Max y coord
51
+ Math.max(...transformedCoords.map(i => i[1]))
52
+ ];
53
+ return transformedBox;
54
+ }
55
+ function stringHash(s) {
56
+ return Math.abs(s.split('').reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0));
57
+ }
58
+ export function getURLFromTemplate(template, tile) {
59
+ if (!template || !template.length) {
60
+ return null;
61
+ }
62
+ const { index, id } = tile;
63
+ if (Array.isArray(template)) {
64
+ const i = stringHash(id) % template.length;
65
+ template = template[i];
66
+ }
67
+ let url = template;
68
+ for (const key of Object.keys(index)) {
69
+ const regex = new RegExp(`{${key}}`, 'g');
70
+ url = url.replace(regex, String(index[key]));
71
+ }
72
+ // Back-compatible support for {-y}
73
+ if (Number.isInteger(index.y) && Number.isInteger(index.z)) {
74
+ url = url.replace(/\{-y\}/g, String(Math.pow(2, index.z) - index.y - 1));
75
+ }
76
+ return url;
77
+ }
78
+ /**
79
+ * gets the bounding box of a viewport
80
+ */
81
+ function getBoundingBox(viewport, zRange, extent) {
82
+ let bounds;
83
+ if (zRange && zRange.length === 2) {
84
+ const [minZ, maxZ] = zRange;
85
+ const bounds0 = viewport.getBounds({ z: minZ });
86
+ const bounds1 = viewport.getBounds({ z: maxZ });
87
+ bounds = [
88
+ Math.min(bounds0[0], bounds1[0]),
89
+ Math.min(bounds0[1], bounds1[1]),
90
+ Math.max(bounds0[2], bounds1[2]),
91
+ Math.max(bounds0[3], bounds1[3])
92
+ ];
93
+ }
94
+ else {
95
+ bounds = viewport.getBounds();
96
+ }
97
+ if (!viewport.isGeospatial) {
98
+ return [
99
+ // Top corner should not be more then bottom corner in either direction
100
+ Math.max(Math.min(bounds[0], extent[2]), extent[0]),
101
+ Math.max(Math.min(bounds[1], extent[3]), extent[1]),
102
+ // Bottom corner should not be less then top corner in either direction
103
+ Math.min(Math.max(bounds[2], extent[0]), extent[2]),
104
+ Math.min(Math.max(bounds[3], extent[1]), extent[3])
105
+ ];
106
+ }
107
+ return [
108
+ Math.max(bounds[0], extent[0]),
109
+ Math.max(bounds[1], extent[1]),
110
+ Math.min(bounds[2], extent[2]),
111
+ Math.min(bounds[3], extent[3])
112
+ ];
113
+ }
114
+ /** Get culling bounds in world space */
115
+ export function getCullBounds({ viewport, z, cullRect }) {
116
+ const subViewports = viewport.subViewports || [viewport];
117
+ return subViewports.map(v => getCullBoundsInViewport(v, z || 0, cullRect));
118
+ }
119
+ function getCullBoundsInViewport(
120
+ /** Current viewport */
121
+ viewport,
122
+ /** At altitude */
123
+ z,
124
+ /** Culling rectangle in screen space */
125
+ cullRect) {
126
+ if (!Array.isArray(z)) {
127
+ const x = cullRect.x - viewport.x;
128
+ const y = cullRect.y - viewport.y;
129
+ const { width, height } = cullRect;
130
+ const unprojectOption = { targetZ: z };
131
+ const topLeft = viewport.unproject([x, y], unprojectOption);
132
+ const topRight = viewport.unproject([x + width, y], unprojectOption);
133
+ const bottomLeft = viewport.unproject([x, y + height], unprojectOption);
134
+ const bottomRight = viewport.unproject([x + width, y + height], unprojectOption);
135
+ return [
136
+ Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),
137
+ Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),
138
+ Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),
139
+ Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])
140
+ ];
141
+ }
142
+ const bounds0 = getCullBoundsInViewport(viewport, z[0], cullRect);
143
+ const bounds1 = getCullBoundsInViewport(viewport, z[1], cullRect);
144
+ return [
145
+ Math.min(bounds0[0], bounds1[0]),
146
+ Math.min(bounds0[1], bounds1[1]),
147
+ Math.max(bounds0[2], bounds1[2]),
148
+ Math.max(bounds0[3], bounds1[3])
149
+ ];
150
+ }
151
+ function getIndexingCoords(bbox, scale, modelMatrixInverse) {
152
+ if (modelMatrixInverse) {
153
+ const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(i => (i * scale) / TILE_SIZE);
154
+ return transformedTileIndex;
155
+ }
156
+ return bbox.map(i => (i * scale) / TILE_SIZE);
157
+ }
158
+ function getScale(z, tileSize) {
159
+ return (Math.pow(2, z) * TILE_SIZE) / tileSize;
160
+ }
161
+ // https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2
162
+ export function osmTile2lngLat(x, y, z) {
163
+ const scale = getScale(z, TILE_SIZE);
164
+ const lng = (x / scale) * 360 - 180;
165
+ const n = Math.PI - (2 * Math.PI * y) / scale;
166
+ const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));
167
+ return [lng, lat];
168
+ }
169
+ function tile2XY(x, y, z, tileSize) {
170
+ const scale = getScale(z, tileSize);
171
+ return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];
172
+ }
173
+ export function tileToBoundingBox(viewport, x, y, z, tileSize = TILE_SIZE) {
174
+ if (viewport.isGeospatial) {
175
+ const [west, north] = osmTile2lngLat(x, y, z);
176
+ const [east, south] = osmTile2lngLat(x + 1, y + 1, z);
177
+ return { west, north, east, south };
178
+ }
179
+ const [left, top] = tile2XY(x, y, z, tileSize);
180
+ const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);
181
+ return { left, top, right, bottom };
182
+ }
183
+ function getIdentityTileIndices(viewport, z, tileSize, extent, modelMatrixInverse) {
184
+ const bbox = getBoundingBox(viewport, null, extent);
185
+ const scale = getScale(z, tileSize);
186
+ const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);
187
+ const indices = [];
188
+ /*
189
+ | TILE | TILE | TILE |
190
+ |(minX) |(maxX)
191
+ */
192
+ for (let x = Math.floor(minX); x < maxX; x++) {
193
+ for (let y = Math.floor(minY); y < maxY; y++) {
194
+ indices.push({ x, y, z });
195
+ }
196
+ }
197
+ return indices;
198
+ }
199
+ /**
200
+ * Returns all tile indices in the current viewport. If the current zoom level is smaller
201
+ * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,
202
+ * return tiles that are on maxZoom.
203
+ */
204
+ // eslint-disable-next-line complexity
205
+ export function getTileIndices({ viewport, maxZoom, minZoom, zRange, extent, tileSize = TILE_SIZE, modelMatrix, modelMatrixInverse, zoomOffset = 0, visibleMinZoom, visibleMaxZoom }) {
206
+ // This round/ceil operation ensures that tiles are rendered in the same way as Google Maps, Map Libre, etc.
207
+ // eg. at viewport.zoom = 9.5, you should fetch tiles at z = 10, not z = 9.
208
+ let z = viewport.isGeospatial
209
+ ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize) + zoomOffset)
210
+ : Math.ceil(viewport.zoom + zoomOffset);
211
+ if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
212
+ if (!extent) {
213
+ return [];
214
+ }
215
+ z = minZoom;
216
+ }
217
+ if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
218
+ z = maxZoom;
219
+ }
220
+ if (visibleMinZoom != null && viewport.zoom < visibleMinZoom) {
221
+ return [];
222
+ }
223
+ if (visibleMaxZoom != null && viewport.zoom > visibleMaxZoom) {
224
+ return [];
225
+ }
226
+ let transformedExtent = extent;
227
+ if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {
228
+ transformedExtent = transformBox(extent, modelMatrix);
229
+ }
230
+ return viewport.isGeospatial
231
+ ? getOSMTileIndices(viewport, z, zRange, extent)
232
+ : getIdentityTileIndices(viewport, z, tileSize, transformedExtent || DEFAULT_EXTENT, modelMatrixInverse);
233
+ }
234
+ /**
235
+ * Returns true if s is a valid URL template
236
+ */
237
+ export function isURLTemplate(s) {
238
+ return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);
239
+ }
240
+ export function isGeoBoundingBox(v) {
241
+ return (Number.isFinite(v.west) &&
242
+ Number.isFinite(v.north) &&
243
+ Number.isFinite(v.east) &&
244
+ Number.isFinite(v.south));
245
+ }
246
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tileset-2d/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ const uniformBlockWGSL = null;
5
+ const uniformBlockGLSL = `\
6
+ layout(std140) uniform tripsUniforms {
7
+ bool fadeTrail;
8
+ float trailLength;
9
+ float currentTime;
10
+ } trips;
11
+ `;
12
+ export const tripsUniforms = {
13
+ name: 'trips',
14
+ source: uniformBlockWGSL,
15
+ vs: uniformBlockGLSL,
16
+ fs: uniformBlockGLSL,
17
+ uniformTypes: {
18
+ fadeTrail: 'f32',
19
+ trailLength: 'f32',
20
+ currentTime: 'f32'
21
+ }
22
+ };
23
+ //# sourceMappingURL=trips-layer-uniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trips-layer-uniforms.js","sourceRoot":"","sources":["../../src/trips-layer/trips-layer-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,MAAM,gBAAgB,QASpB;AAEF,MAAM,gBAAgB,GAAG;;;;;;CAMxB,CAAC;AAQF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,gBAAgB;IACxB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,gBAAgB;IACpB,YAAY,EAAE;QACZ,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;KACnB;CAC0C,CAAC"}
@@ -0,0 +1,97 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { createIterable } from '@deck.gl/core';
5
+ import { PathLayer } from '@deck.gl/layers';
6
+ import { tripsUniforms } from "./trips-layer-uniforms.js";
7
+ import { packTripTimestamps, tripsShaderInjectionsWGSL } from "./trips-layer.wgsl.js";
8
+ const defaultProps = {
9
+ fadeTrail: true,
10
+ trailLength: { type: 'number', value: 120, min: 0 },
11
+ currentTime: { type: 'number', value: 0, min: 0 },
12
+ getTimestamps: { type: 'accessor', value: (d) => d.timestamps }
13
+ };
14
+ const tripsShaderInjectionsGLSL = {
15
+ 'vs:#decl': `\
16
+ in float instanceTimestamps;
17
+ in float instanceNextTimestamps;
18
+ out float vTime;
19
+ `,
20
+ // Timestamp of the vertex
21
+ 'vs:#main-end': `\
22
+ vTime = instanceTimestamps + (instanceNextTimestamps - instanceTimestamps) * vPathPosition.y / vPathLength;
23
+ `,
24
+ 'fs:#decl': `\
25
+ in float vTime;
26
+ `,
27
+ // Drop segments only after PathLayer evaluates analytic-coverage derivatives, then
28
+ // fade the color (currentTime - 100%, end of trail - 0%).
29
+ 'fs:DECKGL_FILTER_COLOR': `\
30
+ if(vTime > trips.currentTime || (trips.fadeTrail && (vTime < trips.currentTime - trips.trailLength))) {
31
+ discard;
32
+ }
33
+ if(trips.fadeTrail) {
34
+ color.a *= 1.0 - (trips.currentTime - vTime) / trips.trailLength;
35
+ }
36
+ `
37
+ };
38
+ /** Render animated paths that represent vehicle trips. */
39
+ class TripsLayer extends PathLayer {
40
+ getShaders() {
41
+ const shaders = super.getShaders();
42
+ shaders.inject =
43
+ tripsShaderInjectionsGLSL;
44
+ shaders.modules = [...shaders.modules, tripsUniforms];
45
+ return shaders;
46
+ }
47
+ initializeState() {
48
+ super.initializeState();
49
+ const attributeManager = this.getAttributeManager();
50
+ attributeManager.addInstanced({
51
+ ...({
52
+ timestamps: {
53
+ size: 1,
54
+ accessor: 'getTimestamps',
55
+ shaderAttributes: {
56
+ instanceTimestamps: {
57
+ vertexOffset: 0
58
+ },
59
+ instanceNextTimestamps: {
60
+ vertexOffset: 1
61
+ }
62
+ }
63
+ }
64
+ })
65
+ });
66
+ }
67
+ /** Materialize timestamps in the same per-path instance layout as the path tessellator. */
68
+ calculateWebGPUTimestamps(attribute, { data, props }) {
69
+ const { pathTesselator } = this.state;
70
+ const { instanceCount, vertexStarts } = pathTesselator;
71
+ const packedTimestamps = new Float32Array(instanceCount * 2);
72
+ const { iterable, objectInfo } = createIterable(data);
73
+ for (const object of iterable) {
74
+ objectInfo.index++;
75
+ const vertexStart = vertexStarts[objectInfo.index];
76
+ const vertexEnd = vertexStarts[objectInfo.index + 1] ?? instanceCount;
77
+ if (vertexEnd <= vertexStart) {
78
+ continue;
79
+ }
80
+ const timestamps = props.getTimestamps?.(object, objectInfo) ?? [];
81
+ packedTimestamps.set(packTripTimestamps(timestamps, vertexEnd - vertexStart, props._pathType === 'loop'), vertexStart * 2);
82
+ }
83
+ attribute.startIndices = vertexStarts;
84
+ attribute.value = packedTimestamps;
85
+ }
86
+ draw(params) {
87
+ const { fadeTrail, trailLength, currentTime } = this.props;
88
+ const tripsProps = { fadeTrail, trailLength, currentTime };
89
+ const model = this.state.model;
90
+ model.shaderInputs.setProps({ trips: tripsProps });
91
+ super.draw(params);
92
+ }
93
+ }
94
+ TripsLayer.layerName = 'TripsLayer';
95
+ TripsLayer.defaultProps = defaultProps;
96
+ export default TripsLayer;
97
+ //# sourceMappingURL=trips-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trips-layer.js","sourceRoot":"","sources":["../../src/trips-layer/trips-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export const packTripTimestamps = () => null;
2
+ export const tripsShaderInjectionsWGSL = null;
3
+ //# sourceMappingURL=trips-layer.wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trips-layer.wgsl.js","sourceRoot":"","sources":["../../src/trips-layer/trips-layer.wgsl.ts"],"names":[],"mappings":"aAOgB,kBAAkB;aA4BrB,yBAAyB"}
@@ -0,0 +1,17 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { lngLatToWorld } from '@math.gl/web-mercator';
5
+ // https://epsg.io/3857
6
+ // +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crs
7
+ const HALF_EARTH_CIRCUMFERENCE = 6378137 * Math.PI;
8
+ /** Projects EPSG:4326 to EPSG:3857
9
+ * This is a lightweight replacement of proj4. Use tests to ensure conformance.
10
+ */
11
+ export function WGS84ToPseudoMercator(coord) {
12
+ const mercator = lngLatToWorld(coord);
13
+ mercator[0] = (mercator[0] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;
14
+ mercator[1] = (mercator[1] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;
15
+ return mercator;
16
+ }
17
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/wms-layer/utils.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,uBAAuB;AACvB,6HAA6H;AAC7H,MAAM,wBAAwB,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAuB;IAC3D,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,wBAAwB,CAAC;IACjE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,wBAAwB,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,198 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // deck.gl, MIT license
5
+ // Attributions:
6
+ // Copyright 2022 Foursquare Labs, Inc.
7
+ /* eslint-disable camelcase */ // Some WMS parameters are not in camel case
8
+ /* global setTimeout, clearTimeout */
9
+ import { CompositeLayer, COORDINATE_SYSTEM, _deepEqual as deepEqual } from '@deck.gl/core';
10
+ import { BitmapLayer } from '@deck.gl/layers';
11
+ import { createDataSource } from '@loaders.gl/core';
12
+ import { ImageSource, WMSSource } from '@loaders.gl/wms';
13
+ import { WGS84ToPseudoMercator } from "./utils.js";
14
+ const defaultProps = {
15
+ id: 'imagery-layer',
16
+ data: '',
17
+ serviceType: 'auto',
18
+ srs: 'auto',
19
+ layers: { type: 'array', compare: true, value: [] },
20
+ onMetadataLoad: { type: 'function', value: () => { } },
21
+ // eslint-disable-next-line
22
+ onMetadataLoadError: { type: 'function', value: console.error },
23
+ onImageLoadStart: { type: 'function', value: () => { } },
24
+ onImageLoad: { type: 'function', value: () => { } },
25
+ onImageLoadError: {
26
+ type: 'function',
27
+ compare: false,
28
+ // eslint-disable-next-line
29
+ value: (requestId, error) => console.error(error, requestId)
30
+ }
31
+ };
32
+ /**
33
+ * The layer is used in Hex Tile layer in order to properly discard invisible elements during animation
34
+ */
35
+ export class WMSLayer extends CompositeLayer {
36
+ /** Returns true if all async resources are loaded */
37
+ get isLoaded() {
38
+ // Track the explicit loading done by this layer
39
+ return this.state?.loadCounter === 0 && super.isLoaded;
40
+ }
41
+ /** Lets deck.gl know that we want viewport change events */
42
+ shouldUpdateState() {
43
+ return true;
44
+ }
45
+ initializeState() {
46
+ // intentionally empty, initialization is done in updateState
47
+ this.state._nextRequestId = 0;
48
+ this.state.lastRequestId = -1;
49
+ this.state.loadCounter = 0;
50
+ }
51
+ updateState({ changeFlags, props, oldProps }) {
52
+ const { viewport } = this.context;
53
+ // Check if data source has changed
54
+ if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {
55
+ this.state.imageSource = this._createImageSource(props);
56
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
57
+ this._loadMetadata();
58
+ this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);
59
+ }
60
+ else if (!deepEqual(props.layers, oldProps.layers, 1)) {
61
+ this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);
62
+ }
63
+ else if (changeFlags.viewportChanged) {
64
+ this.debounce(() => this.loadImage(viewport, 'viewport changed'));
65
+ }
66
+ }
67
+ finalizeState() {
68
+ // TODO - we could cancel outstanding requests
69
+ }
70
+ renderLayers() {
71
+ // TODO - which bitmap layer is rendered should depend on the current viewport
72
+ // Currently Studio only uses one viewport
73
+ const { bounds, image, lastRequestParameters } = this.state;
74
+ return (image &&
75
+ new BitmapLayer({
76
+ ...this.getSubLayerProps({ id: 'bitmap' }),
77
+ _imageCoordinateSystem: lastRequestParameters.srs === 'EPSG:4326'
78
+ ? COORDINATE_SYSTEM.LNGLAT
79
+ : COORDINATE_SYSTEM.CARTESIAN,
80
+ bounds,
81
+ image
82
+ }));
83
+ }
84
+ async getFeatureInfoText(x, y) {
85
+ const { lastRequestParameters } = this.state;
86
+ if (lastRequestParameters) {
87
+ // @ts-expect-error Undocumented method
88
+ const featureInfo = await this.state.imageSource.getFeatureInfoText?.({
89
+ ...lastRequestParameters,
90
+ query_layers: lastRequestParameters.layers,
91
+ x,
92
+ y,
93
+ info_format: 'application/vnd.ogc.gml'
94
+ });
95
+ return featureInfo;
96
+ }
97
+ return '';
98
+ }
99
+ _createImageSource(props) {
100
+ if (props.data instanceof ImageSource) {
101
+ return props.data;
102
+ }
103
+ if (typeof props.data === 'string') {
104
+ return createDataSource(props.data, [WMSSource], {
105
+ core: {
106
+ type: props.serviceType,
107
+ loadOptions: props.loadOptions
108
+ }
109
+ });
110
+ }
111
+ throw new Error('invalid image source in props.data');
112
+ }
113
+ /** Run a getMetadata on the image service */
114
+ async _loadMetadata() {
115
+ const { imageSource } = this.state;
116
+ try {
117
+ this.state.loadCounter++;
118
+ const metadata = await imageSource.getMetadata();
119
+ // If a request takes a long time, it may no longer be expected
120
+ if (this.state.imageSource === imageSource) {
121
+ this.getCurrentLayer()?.props.onMetadataLoad(metadata);
122
+ }
123
+ }
124
+ catch (error) {
125
+ this.getCurrentLayer()?.props.onMetadataLoadError(error);
126
+ }
127
+ finally {
128
+ this.state.loadCounter--;
129
+ }
130
+ }
131
+ /** Load an image */
132
+ async loadImage(viewport, reason) {
133
+ const { layers, serviceType } = this.props;
134
+ // TODO - move to ImageSource?
135
+ if (serviceType === 'wms' && layers.length === 0) {
136
+ return;
137
+ }
138
+ const bounds = viewport.getBounds();
139
+ const { width, height } = viewport;
140
+ const requestId = this.getRequestId();
141
+ let { srs } = this.props;
142
+ if (srs === 'auto') {
143
+ // BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)
144
+ srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';
145
+ }
146
+ const requestParams = {
147
+ width,
148
+ height,
149
+ boundingBox: [
150
+ [bounds[0], bounds[1]],
151
+ [bounds[2], bounds[3]]
152
+ ],
153
+ layers,
154
+ crs: srs
155
+ };
156
+ if (srs === 'EPSG:3857') {
157
+ const min = WGS84ToPseudoMercator([bounds[0], bounds[1]]);
158
+ const max = WGS84ToPseudoMercator([bounds[2], bounds[3]]);
159
+ requestParams.boundingBox = [min, max];
160
+ }
161
+ try {
162
+ this.state.loadCounter++;
163
+ this.props.onImageLoadStart(requestId);
164
+ const image = await this.state.imageSource.getImage(requestParams);
165
+ // If a request takes a long time, later requests may have already loaded.
166
+ if (this.state.lastRequestId < requestId) {
167
+ this.getCurrentLayer()?.props.onImageLoad(requestId);
168
+ // Not type safe...
169
+ this.setState({
170
+ image,
171
+ bounds,
172
+ lastRequestParameters: requestParams,
173
+ lastRequestId: requestId
174
+ });
175
+ }
176
+ }
177
+ catch (error) {
178
+ this.raiseError(error, 'Load image');
179
+ this.getCurrentLayer()?.props.onImageLoadError(requestId, error);
180
+ }
181
+ finally {
182
+ this.state.loadCounter--;
183
+ }
184
+ }
185
+ // HELPERS
186
+ /** Global counter for issuing unique request ids */
187
+ getRequestId() {
188
+ return this.state._nextRequestId++;
189
+ }
190
+ /** Runs an action in the future, cancels it if the new action is issued before it executes */
191
+ debounce(fn, ms = 500) {
192
+ clearTimeout(this.state._timeoutId);
193
+ this.state._timeoutId = setTimeout(() => fn(), ms);
194
+ }
195
+ }
196
+ WMSLayer.layerName = 'WMSLayer';
197
+ WMSLayer.defaultProps = defaultProps;
198
+ //# sourceMappingURL=wms-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wms-layer.js","sourceRoot":"","sources":["../../src/wms-layer/wms-layer.ts"],"names":[],"mappings":"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"}