@developmentseed/deck.gl-raster 0.7.0-beta.1 → 0.8.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 (94) hide show
  1. package/dist/fp64.d.ts +18 -0
  2. package/dist/fp64.d.ts.map +1 -0
  3. package/dist/fp64.js +28 -0
  4. package/dist/fp64.js.map +1 -0
  5. package/dist/globe-grid-mesh.d.ts +30 -0
  6. package/dist/globe-grid-mesh.d.ts.map +1 -0
  7. package/dist/globe-grid-mesh.js +67 -0
  8. package/dist/globe-grid-mesh.js.map +1 -0
  9. package/dist/gpu-modules/cutline-bbox.d.ts +26 -40
  10. package/dist/gpu-modules/cutline-bbox.d.ts.map +1 -1
  11. package/dist/gpu-modules/cutline-bbox.js +24 -53
  12. package/dist/gpu-modules/cutline-bbox.js.map +1 -1
  13. package/dist/gpu-modules/index.d.ts +1 -1
  14. package/dist/gpu-modules/index.d.ts.map +1 -1
  15. package/dist/gpu-modules/index.js +1 -1
  16. package/dist/gpu-modules/index.js.map +1 -1
  17. package/dist/index.d.ts +4 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/layer-utils.d.ts +2 -2
  22. package/dist/layer-utils.d.ts.map +1 -1
  23. package/dist/layer-utils.js.map +1 -1
  24. package/dist/mesh-layer/mesh-layer-fragment.glsl.d.ts +1 -1
  25. package/dist/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  26. package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts +3 -0
  27. package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -0
  28. package/dist/mesh-layer/mesh-layer-vertex.glsl.js +90 -0
  29. package/dist/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -0
  30. package/dist/mesh-layer/mesh-layer.d.ts +31 -5
  31. package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
  32. package/dist/mesh-layer/mesh-layer.js +67 -3
  33. package/dist/mesh-layer/mesh-layer.js.map +1 -1
  34. package/dist/multi-raster-tileset/index.d.ts +2 -2
  35. package/dist/multi-raster-tileset/index.d.ts.map +1 -1
  36. package/dist/multi-raster-tileset/index.js +1 -1
  37. package/dist/multi-raster-tileset/index.js.map +1 -1
  38. package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts +21 -21
  39. package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts.map +1 -1
  40. package/dist/multi-raster-tileset/multi-tileset-descriptor.js +11 -11
  41. package/dist/multi-raster-tileset/multi-tileset-descriptor.js.map +1 -1
  42. package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts +4 -4
  43. package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts.map +1 -1
  44. package/dist/multi-raster-tileset/secondary-tile-resolver.js +2 -2
  45. package/dist/multi-raster-tileset/secondary-tile-resolver.js.map +1 -1
  46. package/dist/raster-layer.d.ts +39 -4
  47. package/dist/raster-layer.d.ts.map +1 -1
  48. package/dist/raster-layer.js +51 -35
  49. package/dist/raster-layer.js.map +1 -1
  50. package/dist/raster-tile-layer/raster-tile-layer.d.ts +6 -6
  51. package/dist/raster-tile-layer/raster-tile-layer.d.ts.map +1 -1
  52. package/dist/raster-tile-layer/raster-tile-layer.js +40 -31
  53. package/dist/raster-tile-layer/raster-tile-layer.js.map +1 -1
  54. package/dist/raster-tileset/affine-tileset-level.d.ts +4 -4
  55. package/dist/raster-tileset/affine-tileset-level.d.ts.map +1 -1
  56. package/dist/raster-tileset/affine-tileset-level.js +2 -2
  57. package/dist/raster-tileset/affine-tileset.d.ts +3 -3
  58. package/dist/raster-tileset/affine-tileset.d.ts.map +1 -1
  59. package/dist/raster-tileset/affine-tileset.js +1 -1
  60. package/dist/raster-tileset/bounding-volume-cache.d.ts +11 -4
  61. package/dist/raster-tileset/bounding-volume-cache.d.ts.map +1 -1
  62. package/dist/raster-tileset/bounding-volume-cache.js +13 -4
  63. package/dist/raster-tileset/bounding-volume-cache.js.map +1 -1
  64. package/dist/raster-tileset/index.d.ts +3 -2
  65. package/dist/raster-tileset/index.d.ts.map +1 -1
  66. package/dist/raster-tileset/index.js +1 -0
  67. package/dist/raster-tileset/index.js.map +1 -1
  68. package/dist/raster-tileset/raster-tile-traversal.d.ts +68 -13
  69. package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
  70. package/dist/raster-tileset/raster-tile-traversal.js +240 -35
  71. package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
  72. package/dist/raster-tileset/raster-tileset-2d.d.ts +64 -6
  73. package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
  74. package/dist/raster-tileset/raster-tileset-2d.js +75 -2
  75. package/dist/raster-tileset/raster-tileset-2d.js.map +1 -1
  76. package/dist/raster-tileset/sort-by-distance.d.ts +41 -0
  77. package/dist/raster-tileset/sort-by-distance.d.ts.map +1 -0
  78. package/dist/raster-tileset/sort-by-distance.js +72 -0
  79. package/dist/raster-tileset/sort-by-distance.js.map +1 -0
  80. package/dist/raster-tileset/tile-matrix-set.d.ts +4 -4
  81. package/dist/raster-tileset/tile-matrix-set.d.ts.map +1 -1
  82. package/dist/raster-tileset/tile-matrix-set.js +1 -1
  83. package/dist/raster-tileset/tile-matrix-set.js.map +1 -1
  84. package/dist/raster-tileset/tileset-interface.d.ts +3 -3
  85. package/dist/raster-tileset/tileset-interface.d.ts.map +1 -1
  86. package/dist/raster-tileset/web-mercator-clamp.d.ts +29 -0
  87. package/dist/raster-tileset/web-mercator-clamp.d.ts.map +1 -0
  88. package/dist/raster-tileset/web-mercator-clamp.js +54 -0
  89. package/dist/raster-tileset/web-mercator-clamp.js.map +1 -0
  90. package/package.json +7 -7
  91. package/dist/raster-tile-layer/constants.d.ts +0 -11
  92. package/dist/raster-tile-layer/constants.d.ts.map +0 -1
  93. package/dist/raster-tile-layer/constants.js +0 -11
  94. package/dist/raster-tile-layer/constants.js.map +0 -1
@@ -0,0 +1,54 @@
1
+ import { triangulateRectangle } from "@developmentseed/raster-reproject";
2
+ /** Maximum latitude representable in Web Mercator (EPSG:3857), in degrees. */
3
+ const MAX_WEB_MERCATOR_LAT = 85.05112877980659;
4
+ /** Tolerance for the north-up check and degenerate-band guard, in degrees. */
5
+ const LAT_EPSILON = 1e-6;
6
+ /**
7
+ * Compute a {@link InitialTriangulation} that clamps a tile's reprojection mesh
8
+ * to the latitude band representable in Web Mercator (±85.051°), or `undefined`
9
+ * if no clamp is needed or possible.
10
+ *
11
+ * Beyond ±85.051°, `makeClampedForwardTo3857` collapses every polar vertex onto
12
+ * the same clamped Y, so the reprojector emits degenerate near-pole triangles
13
+ * that never converge (see #182 / #351). Seeding the reprojector with the
14
+ * clamped band avoids meshing those rows entirely.
15
+ *
16
+ * Only **north-up geographic** tiles are handled — where latitude is constant
17
+ * across each row, so the valid band is an axis-aligned rectangle. Rotated or
18
+ * projected tiles return `undefined` (the caller falls back to the full mesh).
19
+ *
20
+ * @param cornerLats WGS84 latitudes of the tile's four corners.
21
+ * @param maxLat Web Mercator latitude limit. Defaults to ±85.051°.
22
+ */
23
+ export function createInitialWebMercatorTriangulation(cornerLats, maxLat = MAX_WEB_MERCATOR_LAT) {
24
+ const { topLeft, topRight, bottomLeft, bottomRight } = cornerLats;
25
+ // North-up means latitude is constant across each row, so the clamp band is
26
+ // an axis-aligned rectangle. Otherwise fall back to the full mesh.
27
+ const northUp = Math.abs(topLeft - topRight) < LAT_EPSILON &&
28
+ Math.abs(bottomLeft - bottomRight) < LAT_EPSILON;
29
+ if (!northUp) {
30
+ return undefined;
31
+ }
32
+ const north = topLeft;
33
+ const south = bottomLeft;
34
+ // Degenerate or south-up tile: leave it to the default full mesh.
35
+ if (north - south <= LAT_EPSILON) {
36
+ return undefined;
37
+ }
38
+ // Nothing to clamp if the whole tile is already within bounds.
39
+ if (north <= maxLat && south >= -maxLat) {
40
+ return undefined;
41
+ }
42
+ // v runs 0 (north) → 1 (south); lat(v) = north - v * (north - south).
43
+ const clamp01 = (t) => Math.max(0, Math.min(1, t));
44
+ const vTop = clamp01((north - maxLat) / (north - south));
45
+ const vBottom = clamp01((north - -maxLat) / (north - south));
46
+ // Fully-polar tile (entirely outside ±maxLat): empty band, nothing to render.
47
+ // Such tiles are normally excluded by the dataset-bounds clamp; guard anyway
48
+ // so we never emit a degenerate seed.
49
+ if (vBottom - vTop < LAT_EPSILON) {
50
+ return undefined;
51
+ }
52
+ return triangulateRectangle(0, vTop, 1, vBottom);
53
+ }
54
+ //# sourceMappingURL=web-mercator-clamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-mercator-clamp.js","sourceRoot":"","sources":["../../src/raster-tileset/web-mercator-clamp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,8EAA8E;AAC9E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,WAAW,GAAG,IAAI,CAAC;AAYzB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qCAAqC,CACnD,UAA2B,EAC3B,SAAiB,oBAAoB;IAErC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAElE,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,OAAO,GACX,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,WAAW;QAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC;IACtB,MAAM,KAAK,GAAG,UAAU,CAAC;IACzB,kEAAkE;IAClE,IAAI,KAAK,GAAG,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,+DAA+D;IAC/D,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sEAAsE;IACtE,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAE7D,8EAA8E;IAC9E,6EAA6E;IAC7E,sCAAsC;IACtC,IAAI,OAAO,GAAG,IAAI,GAAG,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@developmentseed/deck.gl-raster",
3
- "version": "0.7.0-beta.1",
3
+ "version": "0.8.0-beta.1",
4
4
  "description": "Georeferenced image data visualization in deck.gl",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,10 +40,10 @@
40
40
  "devDependencies": {
41
41
  "@luma.gl/core": "^9.3.2",
42
42
  "@luma.gl/shadertools": "^9.3.2",
43
- "@types/node": "^25.6.0",
43
+ "@types/node": "^25.9.1",
44
44
  "jsdom": "^29.1.1",
45
45
  "typescript": "^6.0.3",
46
- "vitest": "^4.1.5"
46
+ "vitest": "^4.1.7"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@deck.gl/core": "^9.3.0",
@@ -52,15 +52,15 @@
52
52
  "@deck.gl/mesh-layers": "^9.3.0",
53
53
  "@luma.gl/core": "^9.3.2",
54
54
  "@luma.gl/shadertools": "^9.3.2",
55
- "@developmentseed/morecantile": "^0.7.0-beta.1"
55
+ "@developmentseed/morecantile": "^0.8.0-beta.1"
56
56
  },
57
57
  "dependencies": {
58
58
  "@math.gl/core": "^4.1.0",
59
59
  "@math.gl/culling": "^4.1.0",
60
60
  "@math.gl/web-mercator": "^4.1.0",
61
- "@developmentseed/affine": "^0.7.0-beta.1",
62
- "@developmentseed/proj": "^0.7.0-beta.1",
63
- "@developmentseed/raster-reproject": "^0.7.0-beta.1"
61
+ "@developmentseed/affine": "^0.8.0-beta.1",
62
+ "@developmentseed/proj": "^0.8.0-beta.1",
63
+ "@developmentseed/raster-reproject": "^0.8.0-beta.1"
64
64
  },
65
65
  "volta": {
66
66
  "extends": "../../package.json"
@@ -1,11 +0,0 @@
1
- /** Size of deck.gl's common coordinate space in world units.
2
- *
3
- * At zoom 0, one tile covers the whole world (512×512 units); at zoom z, each
4
- * tile is 512/2^z units.
5
- */
6
- export declare const TILE_SIZE = 512;
7
- /** Size of the globe in web mercator meters. */
8
- export declare const WEB_MERCATOR_METER_CIRCUMFERENCE = 40075016.686;
9
- /** Scale factor for converting EPSG:3857 meters into deck.gl world units (512×512). */
10
- export declare const WEB_MERCATOR_TO_WORLD_SCALE: number;
11
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,gDAAgD;AAChD,eAAO,MAAM,gCAAgC,eAAe,CAAC;AAE7D,uFAAuF;AACvF,eAAO,MAAM,2BAA2B,QACM,CAAC"}
@@ -1,11 +0,0 @@
1
- /** Size of deck.gl's common coordinate space in world units.
2
- *
3
- * At zoom 0, one tile covers the whole world (512×512 units); at zoom z, each
4
- * tile is 512/2^z units.
5
- */
6
- export const TILE_SIZE = 512;
7
- /** Size of the globe in web mercator meters. */
8
- export const WEB_MERCATOR_METER_CIRCUMFERENCE = 40075016.686;
9
- /** Scale factor for converting EPSG:3857 meters into deck.gl world units (512×512). */
10
- export const WEB_MERCATOR_TO_WORLD_SCALE = TILE_SIZE / WEB_MERCATOR_METER_CIRCUMFERENCE;
11
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/raster-tile-layer/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,gDAAgD;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAY,CAAC;AAE7D,uFAAuF;AACvF,MAAM,CAAC,MAAM,2BAA2B,GACtC,SAAS,GAAG,gCAAgC,CAAC"}