@loaders.gl/tiles 5.0.0-alpha.6 → 5.0.0-alpha.7

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 (96) hide show
  1. package/dist/dist.dev.js +5160 -2896
  2. package/dist/dist.min.js +4 -2
  3. package/dist/index.cjs +1509 -454
  4. package/dist/index.cjs.map +3 -3
  5. package/dist/index.d.ts +8 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/spatial/format-spatial-reference.d.ts +1 -0
  10. package/dist/spatial/format-spatial-reference.d.ts.map +1 -1
  11. package/dist/spatial/format-spatial-reference.js +104 -46
  12. package/dist/spatial/format-spatial-reference.js.map +1 -1
  13. package/dist/spatial/get-spatial-coordinate-frame.d.ts +12 -1
  14. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -1
  15. package/dist/spatial/get-spatial-coordinate-frame.js +105 -24
  16. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -1
  17. package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
  18. package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
  19. package/dist/spatial/normalize-crs-identifier.js +22 -0
  20. package/dist/spatial/normalize-crs-identifier.js.map +1 -0
  21. package/dist/spatial/spatial-coordinate-transformer.d.ts +4 -0
  22. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -1
  23. package/dist/spatial/spatial-coordinate-transformer.js +89 -12
  24. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -1
  25. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
  26. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
  27. package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
  28. package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
  29. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
  30. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
  31. package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
  32. package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
  33. package/dist/tileset-3d/common/tile-3d.d.ts +29 -5
  34. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  35. package/dist/tileset-3d/common/tile-3d.js +147 -18
  36. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  37. package/dist/tileset-3d/common/tileset-3d.d.ts +14 -0
  38. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  39. package/dist/tileset-3d/common/tileset-3d.js +27 -1
  40. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  41. package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
  42. package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
  43. package/dist/tileset-3d/common/tileset-observability.js +39 -0
  44. package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
  45. package/dist/tileset-3d/common/tileset-source.d.ts +3 -0
  46. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  47. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  48. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  49. package/dist/tileset-3d/common/tileset-traverser.js +4 -3
  50. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  51. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +47 -1
  52. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -1
  53. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +327 -30
  54. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -1
  55. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +32 -0
  56. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  57. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +265 -14
  58. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  59. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +5 -3
  60. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  61. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +7 -4
  62. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  63. package/dist/tileset-3d/helpers/bounding-volume.d.ts +7 -3
  64. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
  65. package/dist/tileset-3d/helpers/bounding-volume.js +19 -61
  66. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
  67. package/dist/tileset-3d/helpers/frame-state.d.ts +4 -0
  68. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
  69. package/dist/tileset-3d/helpers/frame-state.js +6 -1
  70. package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
  71. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
  72. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
  73. package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
  74. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
  75. package/dist/types.d.ts +2 -0
  76. package/dist/types.d.ts.map +1 -1
  77. package/package.json +13 -12
  78. package/src/index.ts +13 -1
  79. package/src/spatial/format-spatial-reference.ts +127 -53
  80. package/src/spatial/get-spatial-coordinate-frame.ts +126 -31
  81. package/src/spatial/normalize-crs-identifier.ts +26 -0
  82. package/src/spatial/spatial-coordinate-transformer.ts +106 -15
  83. package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
  84. package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
  85. package/src/tileset-3d/common/tile-3d.ts +172 -18
  86. package/src/tileset-3d/common/tileset-3d.ts +29 -1
  87. package/src/tileset-3d/common/tileset-observability.ts +100 -0
  88. package/src/tileset-3d/common/tileset-source.ts +3 -0
  89. package/src/tileset-3d/common/tileset-traverser.ts +4 -3
  90. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +481 -34
  91. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +387 -14
  92. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +7 -4
  93. package/src/tileset-3d/helpers/bounding-volume.ts +29 -62
  94. package/src/tileset-3d/helpers/frame-state.ts +6 -1
  95. package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
  96. package/src/types.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAiBrE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,KAAA,EAAE,SAAS,KAAA,EAAE,MAAM,CAAC,KAAA,OAiB5E;AAED,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,KAAA,EACpB,cAAc,EAAE,mBAAmB,GAAG,cAAc,GACnD,kBAAkB,CAuBpB"}
1
+ {"version":3,"file":"bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"AAMA,OAAO,EAA+B,OAAO,EAAU,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAkBrE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,oBAAoB,KAAA,EACpB,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,KAAA,EACP,gBAAgB,GAAE,OAAmB,OA8BtC;AAED,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,KAAA,EACpB,cAAc,EAAE,mBAAmB,GAAG,cAAc,EACpD,mBAAmB,UAAQ,GAC1B,kBAAkB,CAuBpB"}
@@ -2,7 +2,7 @@
2
2
  // This file is derived from the Cesium code base under Apache 2 license
3
3
  // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
4
4
  /* eslint-disable */
5
- import { Quaternion, Vector3, Matrix3, degrees } from '@math.gl/core';
5
+ import { Quaternion, Vector3, Matrix3, Matrix4, degrees } from '@math.gl/core';
6
6
  import { BoundingSphere, OrientedBoundingBox } from '@math.gl/culling';
7
7
  import { Ellipsoid, makeOBBFromRegion } from '@math.gl/geospatial';
8
8
  import { assert } from '@loaders.gl/loader-utils';
@@ -13,25 +13,36 @@ function defined(x) {
13
13
  // const scratchMatrix = new Matrix3();
14
14
  const scratchPoint = new Vector3();
15
15
  const scratchScale = new Vector3();
16
+ const identityTransform = new Matrix4();
16
17
  // const scratchRectangle = new Rectangle();
17
18
  // const scratchOrientedBoundingBox = new OrientedBoundingBox();
18
19
  // const scratchTransform = new Matrix4();
19
20
  /**
20
21
  * Create a bounding volume from the tile's bounding volume header.
21
22
  * @param {Object} boundingVolumeHeader The tile's bounding volume header.
22
- * @param {Matrix4} transform The transform to apply to the bounding volume.
23
+ * @param {Matrix4} transform The current computed tile transform, including application transforms.
23
24
  * @param [result] The object onto which to store the result.
25
+ * @param initialTransform The accumulated JSON tile transform, excluded from region transforms.
26
+ * Defaults to transform so callers without application transforms keep geospatial regions fixed.
24
27
  * @returns The modified result parameter or a new TileBoundingVolume instance if none was provided.
25
28
  */
26
- export function createBoundingVolume(boundingVolumeHeader, transform, result) {
29
+ export function createBoundingVolume(boundingVolumeHeader, transform, result, initialTransform = transform) {
27
30
  assert(boundingVolumeHeader, '3D Tile: boundingVolume must be defined');
28
31
  // boundingVolume schema:
29
32
  // https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/specification/schema/boundingVolume.schema.json
30
33
  if (boundingVolumeHeader.box) {
31
- return createBox(boundingVolumeHeader.box, transform, result);
34
+ // S2 cells and regions are geospatially anchored. Their conservative ECEF boxes are already
35
+ // world-space volumes and must not receive the tile/node transform a second time.
36
+ const boxTransform = boundingVolumeHeader.s2VolumeInfo ? identityTransform : transform;
37
+ return createBox(boundingVolumeHeader.box, boxTransform, result);
32
38
  }
33
39
  if (boundingVolumeHeader.region) {
34
- return makeOBBFromRegion(boundingVolumeHeader.region);
40
+ const boundingVolume = makeOBBFromRegion(boundingVolumeHeader.region);
41
+ // Regions are already in world coordinates. Apply only the change from the JSON transform.
42
+ const regionTransform = transform.equals(initialTransform)
43
+ ? identityTransform
44
+ : transform.clone().multiplyRight(initialTransform.clone().invert());
45
+ return createBox([...boundingVolume.center, ...boundingVolume.halfAxes], regionTransform, result);
35
46
  }
36
47
  if (boundingVolumeHeader.sphere) {
37
48
  return createSphere(boundingVolumeHeader.sphere, transform, result);
@@ -42,12 +53,13 @@ export function createBoundingVolume(boundingVolumeHeader, transform, result) {
42
53
  * Calculate the cartographic bounding box the tile's bounding volume.
43
54
  * @param {Object} boundingVolumeHeader The tile's bounding volume header.
44
55
  * @param {BoundingVolume} boundingVolume The bounding volume.
56
+ * @param isRegionTransformed Whether application transforms moved the region from its JSON bounds.
45
57
  * @returns {CartographicBounds}
46
58
  */
47
- export function getCartographicBounds(boundingVolumeHeader, boundingVolume) {
59
+ export function getCartographicBounds(boundingVolumeHeader, boundingVolume, isRegionTransformed = false) {
48
60
  // boundingVolume schema:
49
61
  // https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/specification/schema/boundingVolume.schema.json
50
- if (boundingVolumeHeader.box) {
62
+ if (boundingVolumeHeader.box || (boundingVolumeHeader.region && isRegionTransformed)) {
51
63
  return orientedBoundingBoxToCartographicBounds(boundingVolume);
52
64
  }
53
65
  if (boundingVolumeHeader.region) {
@@ -120,60 +132,6 @@ function createBox(box, transform, result) {
120
132
  }
121
133
  return new OrientedBoundingBox(center, halfAxes);
122
134
  }
123
- /*
124
- function createBoxFromTransformedRegion(region, transform, initialTransform, result) {
125
- const rectangle = Rectangle.unpack(region, 0, scratchRectangle);
126
- const minimumHeight = region[4];
127
- const maximumHeight = region[5];
128
-
129
- const orientedBoundingBox = OrientedBoundingBox.fromRectangle(
130
- rectangle,
131
- minimumHeight,
132
- maximumHeight,
133
- Ellipsoid.WGS84,
134
- scratchOrientedBoundingBox
135
- );
136
- const center = orientedBoundingBox.center;
137
- const halfAxes = orientedBoundingBox.halfAxes;
138
-
139
- // A region bounding volume is not transformed by the transform in the tileset JSON,
140
- // but may be transformed by additional transforms applied in Cesium.
141
- // This is why the transform is calculated as the difference between the initial transform and the current transform.
142
- transform = Matrix4.multiplyTransformation(
143
- transform,
144
- Matrix4.inverseTransformation(initialTransform, scratchTransform),
145
- scratchTransform
146
- );
147
- center = Matrix4.multiplyByPoint(transform, center, center);
148
- const rotationScale = Matrix4.getRotation(transform, scratchMatrix);
149
- halfAxes = Matrix3.multiply(rotationScale, halfAxes, halfAxes);
150
-
151
- if (defined(result) && result instanceof TileOrientedBoundingBox) {
152
- result.update(center, halfAxes);
153
- return result;
154
- }
155
-
156
- return new TileOrientedBoundingBox(center, halfAxes);
157
- }
158
-
159
- function createRegion(region, transform, initialTransform, result) {
160
- if (!Matrix4.equalsEpsilon(transform, initialTransform, CesiumMath.EPSILON8)) {
161
- return createBoxFromTransformedRegion(region, transform, initialTransform, result);
162
- }
163
-
164
- if (defined(result)) {
165
- return result;
166
- }
167
-
168
- const rectangleRegion = Rectangle.unpack(region, 0, scratchRectangle);
169
-
170
- return new TileBoundingRegion({
171
- rectangle: rectangleRegion,
172
- minimumHeight: region[4],
173
- maximumHeight: region[5]
174
- });
175
- }
176
- */
177
135
  function createSphere(sphere, transform, result) {
178
136
  // Find the transformed center
179
137
  const center = new Vector3(sphere[0], sphere[1], sphere[2]);
@@ -1 +1 @@
1
- {"version":3,"file":"bounding-volume.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"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C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"bounding-volume.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,10 @@ export type CameraMotionUpdate = {
52
52
  /**
53
53
  * Extracts a frame state appropriate for tile culling from a structural deck.gl viewport.
54
54
  *
55
+ * The viewport must describe the render camera, including its elevation. Geographic heights
56
+ * returned by `unprojectPosition` are used directly; adding a terrain offset only to traversal
57
+ * would make visibility, camera distances, and screen-space error disagree with rendering.
58
+ *
55
59
  * `options.timeSinceCameraMovement` can be supplied by a caller that retains camera pose across
56
60
  * calls. It defaults to a stationary camera so standalone callers do not defer requests.
57
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"frame-state.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,aAAa,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAC,kBAAkB,EAAW,uBAAoB;AAEzD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QACN,iDAAiD;QACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,kEAAkE;QAClE,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qEAAqE;QACrE,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,iFAAiF;QACjF,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,qDAAqD;QACrD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,uEAAuE;QACvE,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,8BAA8B,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,oBAAoB,GAAG;IACjC,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAeF;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,UAAU,CAkFZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAC5B,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,EAC7B,WAAW,EAAE,MAAM,GAClB,kBAAkB,CA6BpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,MAAM,GAC3B,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAyBtB"}
1
+ {"version":3,"file":"frame-state.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,aAAa,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAC,kBAAkB,EAAW,uBAAoB;AAEzD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QACN,iDAAiD;QACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,kEAAkE;QAClE,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qEAAqE;QACrE,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,iFAAiF;QACjF,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,qDAAqD;QACrD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,uEAAuE;QACvE,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,8BAA8B,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,oBAAoB,GAAG;IACjC,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAeF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,UAAU,CAmFZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAC5B,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,EAC7B,WAAW,EAAE,MAAM,GAClB,kBAAkB,CA6BpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,MAAM,GAC3B,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAyBtB"}
@@ -19,6 +19,10 @@ const cullingVolume = new CullingVolume([
19
19
  /**
20
20
  * Extracts a frame state appropriate for tile culling from a structural deck.gl viewport.
21
21
  *
22
+ * The viewport must describe the render camera, including its elevation. Geographic heights
23
+ * returned by `unprojectPosition` are used directly; adding a terrain offset only to traversal
24
+ * would make visibility, camera distances, and screen-space error disagree with rendering.
25
+ *
22
26
  * `options.timeSinceCameraMovement` can be supplied by a caller that retains camera pose across
23
27
  * calls. It defaults to a stationary camera so standalone callers do not defer requests.
24
28
  *
@@ -65,7 +69,7 @@ export function getFrameState(viewport, frameNumber, options = {}) {
65
69
  enuToFixedTransform.transformAsVector(new Vector3(cameraUp).scale(metersPerUnit))).normalize();
66
70
  commonSpacePlanesToWGS84(viewport);
67
71
  const ViewportClass = viewport.constructor;
68
- const { longitude, latitude, width, bearing, zoom } = viewport;
72
+ const { longitude, latitude, width, bearing, zoom, position } = viewport;
69
73
  // @ts-ignore
70
74
  const topDownViewport = new ViewportClass({
71
75
  longitude,
@@ -74,6 +78,7 @@ export function getFrameState(viewport, frameNumber, options = {}) {
74
78
  width,
75
79
  bearing,
76
80
  zoom,
81
+ position,
77
82
  pitch: 0
78
83
  });
79
84
  // TODO: make a file/class for frameState and document what needs to be attached to this so that traversal can function
@@ -1 +1 @@
1
- {"version":3,"file":"frame-state.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-state.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Serialized S2 cell metadata used by 3D Tiles bounding-volume extensions. */
2
+ export type S2VolumeInfo = {
3
+ /** S2 key or token. */
4
+ token: string;
5
+ /** Minimum height in meters. */
6
+ minimumHeight: number;
7
+ /** Maximum height in meters. */
8
+ maximumHeight: number;
9
+ };
10
+ /**
11
+ * Converts an S2 cell and its vertical range to the runtime oriented-box representation.
12
+ *
13
+ * @param s2VolumeInfo - S2 cell token and height range.
14
+ * @returns A twelve-component center/half-axis oriented bounding box.
15
+ */
16
+ export declare function convertS2BoundingVolumeToOBB(s2VolumeInfo: S2VolumeInfo): number[];
17
+ //# sourceMappingURL=s2-bounding-volume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/s2-bounding-volume.ts"],"names":[],"mappings":"AAUA,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG;IACzB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAQjF"}
@@ -0,0 +1,20 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+ // TypeScript's legacy `node` resolution does not inspect package `exports`, but this public
5
+ // subpath is resolved by the package at runtime and avoids loading unrelated DGGS decoders.
6
+ // @ts-expect-error Conditional package subpath exports require a modern module resolver.
7
+ import { getS2Bounds } from '@math.gl/dggs/s2';
8
+ import { Ellipsoid, makeOBBFromRegion } from '@math.gl/geospatial';
9
+ /**
10
+ * Converts an S2 cell and its vertical range to the runtime oriented-box representation.
11
+ *
12
+ * @param s2VolumeInfo - S2 cell token and height range.
13
+ * @returns A twelve-component center/half-axis oriented bounding box.
14
+ */
15
+ export function convertS2BoundingVolumeToOBB(s2VolumeInfo) {
16
+ const [[west, south], [east, north]] = getS2Bounds(s2VolumeInfo.token);
17
+ const orientedBoundingBox = makeOBBFromRegion([west, south, east, north, s2VolumeInfo.minimumHeight, s2VolumeInfo.maximumHeight], Ellipsoid.WGS84, { units: 'degrees' });
18
+ return [...orientedBoundingBox.center, ...orientedBoundingBox.halfAxes];
19
+ }
20
+ //# sourceMappingURL=s2-bounding-volume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-bounding-volume.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/s2-bounding-volume.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAEhC,4FAA4F;AAC5F,4FAA4F;AAC5F,yFAAyF;AACzF,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAYjE;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,YAA0B;IACrE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,mBAAmB,GAAG,iBAAiB,CAC3C,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC,EAClF,SAAS,CAAC,KAAK,EACf,EAAC,KAAK,EAAE,SAAS,EAAC,CACnB,CAAC;IACF,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC"}
package/dist/types.d.ts CHANGED
@@ -39,6 +39,8 @@ export type GeospatialViewport = Viewport & {
39
39
  cameraDirection: [number, number, number];
40
40
  /** @todo This field is not represented in Deck.gl viewports. Can be removed in the next version */
41
41
  cameraUp: [number, number, number];
42
+ /** Camera target offset in meters from longitude/latitude, including elevation. */
43
+ position?: number[];
42
44
  longitude: number;
43
45
  latitude: number;
44
46
  bearing: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;iEACiE;AACjE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG;IAC1C,mGAAmG;IACnG,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mGAAmG;IACnG,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;iEACiE;AACjE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG;IAC1C,mGAAmG;IACnG,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mGAAmG;IACnG,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tiles",
3
- "version": "5.0.0-alpha.6",
3
+ "version": "5.0.0-alpha.7",
4
4
  "description": "Common components for different tiles loaders.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -42,16 +42,17 @@
42
42
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
43
43
  },
44
44
  "dependencies": {
45
- "@loaders.gl/loader-utils": "5.0.0-alpha.6",
46
- "@loaders.gl/schema": "5.0.0-alpha.6",
47
- "@math.gl/core": "5.0.0-alpha.5",
48
- "@math.gl/crs": "5.0.0-alpha.5",
49
- "@math.gl/culling": "5.0.0-alpha.5",
50
- "@math.gl/geoid": "5.0.0-alpha.5",
51
- "@math.gl/geometry-utils": "5.0.0-alpha.5",
52
- "@math.gl/geospatial": "5.0.0-alpha.5",
53
- "@math.gl/proj4": "5.0.0-alpha.5",
54
- "@math.gl/web-mercator": "5.0.0-alpha.5",
45
+ "@loaders.gl/loader-utils": "5.0.0-alpha.7",
46
+ "@loaders.gl/schema": "5.0.0-alpha.7",
47
+ "@math.gl/core": "5.0.0-alpha.9",
48
+ "@math.gl/crs": "5.0.0-alpha.9",
49
+ "@math.gl/culling": "5.0.0-alpha.9",
50
+ "@math.gl/dggs": "5.0.0-alpha.9",
51
+ "@math.gl/geoid": "5.0.0-alpha.9",
52
+ "@math.gl/geometry-utils": "5.0.0-alpha.9",
53
+ "@math.gl/geospatial": "5.0.0-alpha.9",
54
+ "@math.gl/proj4": "5.0.0-alpha.9",
55
+ "@math.gl/web-mercator": "5.0.0-alpha.9",
55
56
  "@probe.gl/stats": "^4.1.1"
56
57
  },
57
58
  "devDependencies": {
@@ -60,5 +61,5 @@
60
61
  "peerDependencies": {
61
62
  "@loaders.gl/core": "~5.0.0-alpha.0"
62
63
  },
63
- "gitHead": "9b9ea7738e0fe63e55c19c136283705f99e0b9bf"
64
+ "gitHead": "e1e6174f9e66f4f3e695e8778f769429508342f1"
64
65
  }
package/src/index.ts CHANGED
@@ -5,6 +5,8 @@
5
5
  export type {Tileset3DProps} from './tileset-3d/common/tileset-3d';
6
6
  export type {FoveatedInterpolationCallback} from './tileset-3d/helpers/tiles-3d-request-priority';
7
7
  export {Tileset3D} from './tileset-3d/common/tileset-3d';
8
+ export {getTileset3DTraversalSnapshot} from './tileset-3d/common/tileset-observability';
9
+ export type {Tileset3DTraversalSnapshot} from './tileset-3d/common/tileset-observability';
8
10
  export type {
9
11
  TileContentLoadResult,
10
12
  TileChildrenLoadResult,
@@ -21,6 +23,12 @@ export {isTileset3DSource} from './tileset-3d/common/tileset-source';
21
23
  export type {IndexedArchiveTilesetSourceOptions} from './tileset-3d/common/indexed-archive-tileset-source';
22
24
  export {IndexedArchiveTilesetSource} from './tileset-3d/common/indexed-archive-tileset-source';
23
25
  export {Tile3D} from './tileset-3d/common/tile-3d';
26
+ export type {
27
+ Tile3DContent,
28
+ Tile3DFeatureIdSet,
29
+ Tile3DMetadataContext,
30
+ Tile3DBoundingVolume
31
+ } from './tileset-3d/common/tile-3d-contracts';
24
32
  export type {TileChildrenState} from './tileset-3d/common/tile-3d';
25
33
  export {Tiles3DSource} from './tileset-3d/format-3d-tiles/tiles-3d-source';
26
34
  export type {ImplicitTilingStats} from './tileset-3d/format-3d-tiles/tiles-3d-source';
@@ -101,6 +109,8 @@ export {PointCloudTileset} from './point-cloud/point-cloud-tileset';
101
109
  export {PointCloudTile} from './point-cloud/point-cloud-tile';
102
110
  export {createBoundingVolume} from './tileset-3d/helpers/bounding-volume';
103
111
  export {calculateTransformProps} from './tileset-3d/helpers/transform-utils';
112
+ export {convertS2BoundingVolumeToOBB} from './tileset-3d/helpers/s2-bounding-volume';
113
+ export type {S2VolumeInfo} from './tileset-3d/helpers/s2-bounding-volume';
104
114
 
105
115
  export type {
106
116
  CreateTilesetSpatialReferenceOptions,
@@ -128,6 +138,8 @@ export {
128
138
  } from './spatial/format-spatial-reference';
129
139
  export {SpatialCoordinateTransformer} from './spatial/spatial-coordinate-transformer';
130
140
  export {getSpatialCoordinateFrame} from './spatial/spatial-coordinate-transformer';
141
+ export {Tiles3DSpatialTransformer} from './spatial/tiles-3d-spatial-transformer';
142
+ export type {Tiles3DSpatialBoundingVolume} from './spatial/tiles-3d-spatial-transformer';
131
143
  export type {
132
144
  I3SSpatialBounds,
133
145
  I3SSpatialObb,
@@ -143,7 +155,7 @@ export {
143
155
  } from './spatial/spatial-resource-registry';
144
156
 
145
157
  export {getFrameState} from './tileset-3d/helpers/frame-state';
146
- export type {GetFrameStateOptions} from './tileset-3d/helpers/frame-state';
158
+ export type {FrameState, GetFrameStateOptions} from './tileset-3d/helpers/frame-state';
147
159
  export {getLodStatus} from './tileset-3d/helpers/i3s-lod';
148
160
 
149
161
  export {
@@ -4,6 +4,10 @@
4
4
 
5
5
  import type {ReadonlyCRSDefinition} from '@math.gl/crs';
6
6
  import {getI3SLinearUnitScale, getI3SVerticalUnitScale} from './i3s-elevation';
7
+ import {
8
+ getKnownCrsIdentifierCoordinateFrame,
9
+ getSpatialCoordinateFrame
10
+ } from './get-spatial-coordinate-frame';
7
11
  import {createTilesetSpatialReference} from './spatial-types';
8
12
  import type {TilesetElevationMode, TilesetSpatialReference} from './spatial-types';
9
13
 
@@ -40,6 +44,7 @@ type Tiles3DLike = {
40
44
  schemaUri?: string;
41
45
  metadata?: {class?: string; properties?: Record<string, unknown>};
42
46
  root?: {boundingVolume?: {region?: unknown}};
47
+ extensions?: Record<string, unknown>;
43
48
  };
44
49
 
45
50
  /**
@@ -68,8 +73,10 @@ export function getI3SSpatialReference(layer: I3SLayerLike): TilesetSpatialRefer
68
73
  const sourceIdentifier = getCrsIdentifier(spatialReference);
69
74
  const coordinateFrame =
70
75
  sourceIdentifier === undefined
71
- ? getWktCoordinateFrame(spatialReference?.wkt)
72
- : getIdentifierCoordinateFrame(sourceIdentifier);
76
+ ? sourceCrs
77
+ ? getSpatialCoordinateFrame(sourceCrs)
78
+ : 'unknown'
79
+ : getSpatialCoordinateFrame(`EPSG:${sourceIdentifier}`);
73
80
  const units = getI3SCoordinateUnits(coordinateFrame, verticalUnit, layer.ZFactor);
74
81
  const warnings: string[] = [];
75
82
  const elevationMode = getI3SElevationMode(layer.elevationInfo?.mode);
@@ -159,6 +166,10 @@ function getI3SElevationMode(mode: string | undefined): TilesetElevationMode | u
159
166
  * @returns Normalized source spatial metadata.
160
167
  */
161
168
  export function get3DTilesSpatialReference(tileset: Tiles3DLike): TilesetSpatialReference {
169
+ const draftSpatialReference = getDraft3DTilesSpatialReference(tileset);
170
+ if (draftSpatialReference) {
171
+ return draftSpatialReference;
172
+ }
162
173
  const geocentricCrs = getTilesetSemanticValue(tileset, 'TILESET_CRS_GEOCENTRIC');
163
174
  const coordinateEpoch = getTilesetSemanticValue(tileset, 'TILESET_CRS_COORDINATE_EPOCH');
164
175
  const warnings: string[] = [];
@@ -202,6 +213,120 @@ export function get3DTilesSpatialReference(tileset: Tiles3DLike): TilesetSpatial
202
213
  });
203
214
  }
204
215
 
216
+ /** Resolves the draft glTF EXT_geospatial_crs WKID or WKT2 declaration. */
217
+ function getDraft3DTilesSpatialReference(
218
+ tileset: Tiles3DLike
219
+ ): TilesetSpatialReference | undefined {
220
+ const extension = tileset.extensions?.EXT_geospatial_crs as
221
+ | {format?: unknown; extensions?: Record<string, unknown>}
222
+ | undefined;
223
+ if (!extension) {
224
+ return undefined;
225
+ }
226
+ const warnings: string[] = [];
227
+ let sourceCrs: ReadonlyCRSDefinition | undefined;
228
+ let verticalCrs: ReadonlyCRSDefinition | undefined;
229
+ let epoch: number | undefined;
230
+ let representation: 'identifier' | 'wkt' | undefined;
231
+ if (extension.format === 'wkid') {
232
+ const wkidExtension = extension.extensions?.EXT_geospatial_crs_wkid as
233
+ | {authority?: unknown; wkid?: unknown; vcsWkid?: unknown; epoch?: unknown}
234
+ | undefined;
235
+ if (typeof wkidExtension?.authority === 'string' && Number.isInteger(wkidExtension.wkid)) {
236
+ sourceCrs = `${wkidExtension.authority}:${wkidExtension.wkid}`;
237
+ representation = 'identifier';
238
+ if (Number.isInteger(wkidExtension.vcsWkid)) {
239
+ verticalCrs = `${wkidExtension.authority}:${wkidExtension.vcsWkid}`;
240
+ }
241
+ epoch = parseCoordinateEpoch(wkidExtension.epoch);
242
+ if (wkidExtension.epoch !== undefined && epoch === undefined) {
243
+ warnings.push('EXT_geospatial_crs_wkid epoch is not a finite decimal year');
244
+ }
245
+ } else {
246
+ warnings.push('EXT_geospatial_crs_wkid requires string authority and integer wkid');
247
+ }
248
+ } else if (extension.format === 'wkt2') {
249
+ const wktExtension = extension.extensions?.EXT_geospatial_crs_wkt2 as
250
+ | {wkt2?: unknown}
251
+ | undefined;
252
+ if (typeof wktExtension?.wkt2 === 'string' && wktExtension.wkt2.trim()) {
253
+ sourceCrs = wktExtension.wkt2;
254
+ representation = 'wkt';
255
+ } else {
256
+ warnings.push('EXT_geospatial_crs_wkt2 requires a nonempty wkt2 string');
257
+ }
258
+ } else {
259
+ warnings.push(`Unsupported EXT_geospatial_crs format ${String(extension.format)}`);
260
+ }
261
+ const coordinateFrame =
262
+ representation === 'wkt'
263
+ ? getSpatialCoordinateFrame(sourceCrs as string)
264
+ : getKnownCrsIdentifierCoordinateFrame(sourceCrs) || 'unknown';
265
+ const verticalSemantics = getDraftVerticalCrsSemantics(verticalCrs);
266
+ if (verticalCrs && !verticalSemantics) {
267
+ warnings.push(
268
+ `Unsupported vertical CRS ${String(verticalCrs)}; vertical unit and height reference are unknown`
269
+ );
270
+ }
271
+ const verticalUnit = verticalCrs ? verticalSemantics?.unit : 'meter';
272
+ return createTilesetSpatialReference({
273
+ sourceCrs,
274
+ sourceCrsState: sourceCrs ? 'explicit' : 'unknown',
275
+ sourceCrsRepresentation: representation,
276
+ verticalCrs,
277
+ coordinateEpoch: epoch,
278
+ units:
279
+ coordinateFrame === 'geocentric'
280
+ ? ['meter', 'meter', 'meter']
281
+ : coordinateFrame === 'geographic' && verticalUnit
282
+ ? ['degree', 'degree', verticalUnit]
283
+ : undefined,
284
+ verticalUnitScale: verticalCrs ? (verticalSemantics?.verticalUnitScale ?? Number.NaN) : 1,
285
+ heightReference: verticalCrs
286
+ ? (verticalSemantics?.heightReference ?? 'unknown')
287
+ : sourceCrs
288
+ ? 'ellipsoidal'
289
+ : 'unknown',
290
+ coordinateFrame,
291
+ axisOrder: sourceCrs ? 'xyz' : 'unknown',
292
+ provenance: 'metadata',
293
+ warnings
294
+ });
295
+ }
296
+
297
+ /** Known vertical CRS semantics needed to interpret draft 3D Tiles height values. */
298
+ type DraftVerticalCrsSemantics = {
299
+ unit: string;
300
+ verticalUnitScale: number;
301
+ heightReference: 'orthometric';
302
+ };
303
+
304
+ /** Resolves vertical units and height interpretation for known EPSG vertical CRSs. */
305
+ function getDraftVerticalCrsSemantics(
306
+ verticalCrs: ReadonlyCRSDefinition | undefined
307
+ ): DraftVerticalCrsSemantics | undefined {
308
+ if (typeof verticalCrs !== 'string') {
309
+ return undefined;
310
+ }
311
+ const epsgMatch = /^EPSG:(\d+)$/i.exec(verticalCrs);
312
+ if (!epsgMatch) {
313
+ return undefined;
314
+ }
315
+ switch (Number(epsgMatch[1])) {
316
+ case 5702: // NGVD29 height (ftUS)
317
+ case 6360: // NAVD88 height (ftUS)
318
+ return {
319
+ unit: 'us-foot',
320
+ verticalUnitScale: 1200 / 3937,
321
+ heightReference: 'orthometric'
322
+ };
323
+ case 5703: // NAVD88 height
324
+ return {unit: 'meter', verticalUnitScale: 1, heightReference: 'orthometric'};
325
+ default:
326
+ return undefined;
327
+ }
328
+ }
329
+
205
330
  /** Parse the 3D Tiles decimal-year string while tolerating legacy numeric producer output. */
206
331
  function parseCoordinateEpoch(value: unknown): number | undefined {
207
332
  if (typeof value !== 'string' && typeof value !== 'number') {
@@ -238,57 +363,6 @@ function getCrsIdentifier(spatialReference?: I3SSpatialReferenceLike): number |
238
363
  return spatialReference?.latestWkid ?? spatialReference?.wkid;
239
364
  }
240
365
 
241
- /** Classify common EPSG identifiers used by I3S into their coordinate frames. */
242
- function getIdentifierCoordinateFrame(
243
- identifier: number
244
- ): TilesetSpatialReference['coordinateFrame'] {
245
- if (identifier === 4978) {
246
- return 'geocentric';
247
- }
248
- if (identifier === 4326 || identifier === 4490 || identifier === 4979) {
249
- return 'geographic';
250
- }
251
- return 'projected';
252
- }
253
-
254
- /**
255
- * Classify a WKT root coordinate system without guessing when the declaration is ambiguous.
256
- *
257
- * WKT2 uses `GEODCRS` for both geographic and geocentric systems, so its `CS` declaration is
258
- * inspected before assigning a frame.
259
- */
260
- function getWktCoordinateFrame(wkt?: string): TilesetSpatialReference['coordinateFrame'] {
261
- if (!wkt) {
262
- return 'unknown';
263
- }
264
-
265
- const normalizedWkt = wkt.trim().toUpperCase();
266
- const rootKeyword = normalizedWkt.match(/^([A-Z][A-Z0-9_]*)\s*[\[(]/)?.[1];
267
- if (rootKeyword === 'GEOCCS') {
268
- return 'geocentric';
269
- }
270
- if (
271
- rootKeyword === 'GEOGCS' ||
272
- rootKeyword === 'GEOGRAPHICCRS' ||
273
- rootKeyword === 'GEOGRAPHIC2DCRS' ||
274
- rootKeyword === 'GEOGRAPHIC3DCRS'
275
- ) {
276
- return 'geographic';
277
- }
278
- if (rootKeyword === 'PROJCS' || rootKeyword === 'PROJCRS' || rootKeyword === 'PROJECTEDCRS') {
279
- return 'projected';
280
- }
281
- if (rootKeyword === 'GEODCRS' || rootKeyword === 'GEODETICCRS') {
282
- if (/\bCS\s*[\[(]\s*CARTESIAN\s*,\s*3\b/.test(normalizedWkt)) {
283
- return 'geocentric';
284
- }
285
- if (/\bCS\s*[\[(]\s*ELLIPSOIDAL\s*,\s*[23]\b/.test(normalizedWkt)) {
286
- return 'geographic';
287
- }
288
- }
289
- return 'unknown';
290
- }
291
-
292
366
  /** Resolve a tileset-wide structured metadata property by its standard semantic. */
293
367
  function getTilesetSemanticValue(tileset: Tiles3DLike, semantic: string): unknown {
294
368
  const classIdentifier = tileset.metadata?.class;