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

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 (114) hide show
  1. package/README.md +26 -0
  2. package/dist/dist.dev.js +10015 -8172
  3. package/dist/dist.min.js +3 -4
  4. package/dist/index.cjs +1676 -477
  5. package/dist/index.cjs.map +3 -3
  6. package/dist/index.d.ts +10 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/spatial/format-spatial-reference.d.ts +1 -0
  11. package/dist/spatial/format-spatial-reference.d.ts.map +1 -1
  12. package/dist/spatial/format-spatial-reference.js +104 -46
  13. package/dist/spatial/format-spatial-reference.js.map +1 -1
  14. package/dist/spatial/get-spatial-coordinate-frame.d.ts +12 -1
  15. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -1
  16. package/dist/spatial/get-spatial-coordinate-frame.js +105 -24
  17. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -1
  18. package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
  19. package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
  20. package/dist/spatial/normalize-crs-identifier.js +22 -0
  21. package/dist/spatial/normalize-crs-identifier.js.map +1 -0
  22. package/dist/spatial/spatial-coordinate-transformer.d.ts +4 -0
  23. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -1
  24. package/dist/spatial/spatial-coordinate-transformer.js +102 -18
  25. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -1
  26. package/dist/spatial/spatial-resource-registry.js +3 -3
  27. package/dist/spatial/spatial-resource-registry.js.map +1 -1
  28. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
  29. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
  30. package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
  31. package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
  32. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
  33. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
  34. package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
  35. package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
  36. package/dist/tileset-3d/common/tile-3d.d.ts +33 -5
  37. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  38. package/dist/tileset-3d/common/tile-3d.js +179 -29
  39. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  40. package/dist/tileset-3d/common/tileset-3d.d.ts +15 -25
  41. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  42. package/dist/tileset-3d/common/tileset-3d.js +35 -42
  43. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  44. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
  45. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
  46. package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
  47. package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
  48. package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
  49. package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
  50. package/dist/tileset-3d/common/tileset-observability.js +39 -0
  51. package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
  52. package/dist/tileset-3d/common/tileset-source.d.ts +11 -1
  53. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  54. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  55. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  56. package/dist/tileset-3d/common/tileset-traverser.js +4 -3
  57. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  58. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +47 -1
  59. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -1
  60. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +327 -30
  61. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -1
  62. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +34 -0
  63. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  64. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +278 -14
  65. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  66. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +5 -3
  67. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  68. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +7 -4
  69. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  70. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +4 -2
  71. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
  72. package/dist/tileset-3d/format-i3s/i3s-source.js +60 -9
  73. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
  74. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
  75. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +1 -1
  76. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
  77. package/dist/tileset-3d/helpers/bounding-volume.d.ts +7 -3
  78. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
  79. package/dist/tileset-3d/helpers/bounding-volume.js +19 -61
  80. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
  81. package/dist/tileset-3d/helpers/frame-state.d.ts +5 -0
  82. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
  83. package/dist/tileset-3d/helpers/frame-state.js +11 -5
  84. package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
  85. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
  86. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
  87. package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
  88. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
  89. package/dist/types.d.ts +2 -0
  90. package/dist/types.d.ts.map +1 -1
  91. package/package.json +11 -12
  92. package/src/index.ts +18 -1
  93. package/src/spatial/format-spatial-reference.ts +127 -53
  94. package/src/spatial/get-spatial-coordinate-frame.ts +126 -31
  95. package/src/spatial/normalize-crs-identifier.ts +26 -0
  96. package/src/spatial/spatial-coordinate-transformer.ts +124 -24
  97. package/src/spatial/spatial-resource-registry.ts +3 -3
  98. package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
  99. package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
  100. package/src/tileset-3d/common/tile-3d.ts +208 -32
  101. package/src/tileset-3d/common/tileset-3d.ts +37 -61
  102. package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
  103. package/src/tileset-3d/common/tileset-observability.ts +100 -0
  104. package/src/tileset-3d/common/tileset-source.ts +19 -1
  105. package/src/tileset-3d/common/tileset-traverser.ts +4 -3
  106. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +481 -34
  107. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +405 -14
  108. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +7 -4
  109. package/src/tileset-3d/format-i3s/i3s-source.ts +84 -13
  110. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +2 -1
  111. package/src/tileset-3d/helpers/bounding-volume.ts +29 -62
  112. package/src/tileset-3d/helpers/frame-state.ts +15 -7
  113. package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
  114. package/src/types.ts +2 -0
package/dist/index.d.ts CHANGED
@@ -1,11 +1,16 @@
1
1
  export type { Tileset3DProps } from "./tileset-3d/common/tileset-3d.js";
2
2
  export type { FoveatedInterpolationCallback } from "./tileset-3d/helpers/tiles-3d-request-priority.js";
3
3
  export { Tileset3D } from "./tileset-3d/common/tileset-3d.js";
4
+ export { getTileset3DTraversalSnapshot } from "./tileset-3d/common/tileset-observability.js";
5
+ export type { Tileset3DTraversalSnapshot } from "./tileset-3d/common/tileset-observability.js";
6
+ export { traverseTilesetContents } from "./tileset-3d/common/tileset-content-traversal.js";
7
+ export type { TilesetContentTraversalItem, TraverseTilesetContentsOptions } from "./tileset-3d/common/tileset-content-traversal.js";
4
8
  export type { TileContentLoadResult, TileChildrenLoadResult, TilesetContentFormats, TilesetJSON, TilesetSourceInput, TilesetSourceMetadata, TilesetSourceRequest, TilesetSourceResolver, Tileset3DSource, TilesetSourceViewState } from "./tileset-3d/common/tileset-source.js";
5
9
  export { isTileset3DSource } from "./tileset-3d/common/tileset-source.js";
6
10
  export type { IndexedArchiveTilesetSourceOptions } from "./tileset-3d/common/indexed-archive-tileset-source.js";
7
11
  export { IndexedArchiveTilesetSource } from "./tileset-3d/common/indexed-archive-tileset-source.js";
8
12
  export { Tile3D } from "./tileset-3d/common/tile-3d.js";
13
+ export type { Tile3DContent, Tile3DFeatureIdSet, Tile3DMetadataContext, Tile3DBoundingVolume } from "./tileset-3d/common/tile-3d-contracts.js";
9
14
  export type { TileChildrenState } from "./tileset-3d/common/tile-3d.js";
10
15
  export { Tiles3DSource } from "./tileset-3d/format-3d-tiles/tiles-3d-source.js";
11
16
  export type { ImplicitTilingStats } from "./tileset-3d/format-3d-tiles/tiles-3d-source.js";
@@ -28,16 +33,20 @@ export { PointCloudTileset } from "./point-cloud/point-cloud-tileset.js";
28
33
  export { PointCloudTile } from "./point-cloud/point-cloud-tile.js";
29
34
  export { createBoundingVolume } from "./tileset-3d/helpers/bounding-volume.js";
30
35
  export { calculateTransformProps } from "./tileset-3d/helpers/transform-utils.js";
36
+ export { convertS2BoundingVolumeToOBB } from "./tileset-3d/helpers/s2-bounding-volume.js";
37
+ export type { S2VolumeInfo } from "./tileset-3d/helpers/s2-bounding-volume.js";
31
38
  export type { CreateTilesetSpatialReferenceOptions, TilesetCoordinateFrame, TilesetElevationBounds, TilesetElevationMode, TilesetElevationProvider, TilesetElevationRange, TilesetElevationSample, TilesetHeightReference, TilesetOutputCoordinates, TilesetSpatialOptions, TilesetSpatialReference, TilesetSpatialReferenceProvenance, TilesetTargetHeightReference } from "./spatial/spatial-types.js";
32
39
  export { applyTilesetSpatialOptions, createTilesetSpatialReference, markTilesetSpatialReferenceTransformed } from "./spatial/spatial-types.js";
33
40
  export { get3DTilesSpatialReference, getI3SSpatialReference } from "./spatial/format-spatial-reference.js";
34
41
  export { SpatialCoordinateTransformer } from "./spatial/spatial-coordinate-transformer.js";
35
42
  export { getSpatialCoordinateFrame } from "./spatial/spatial-coordinate-transformer.js";
43
+ export { Tiles3DSpatialTransformer } from "./spatial/tiles-3d-spatial-transformer.js";
44
+ export type { Tiles3DSpatialBoundingVolume } from "./spatial/tiles-3d-spatial-transformer.js";
36
45
  export type { I3SSpatialBounds, I3SSpatialObb, I3STransformedPositions } from "./spatial/i3s-spatial-transformer.js";
37
46
  export { I3SSpatialTransformer } from "./spatial/i3s-spatial-transformer.js";
38
47
  export { getGeoidModel, registerGeoidModel, registerGeoidModelFromPgm, registerSpatialCrs, registerSpatialDatumGrid } from "./spatial/spatial-resource-registry.js";
39
48
  export { getFrameState } from "./tileset-3d/helpers/frame-state.js";
40
- export type { GetFrameStateOptions } from "./tileset-3d/helpers/frame-state.js";
49
+ export type { FrameState, GetFrameStateOptions } from "./tileset-3d/helpers/frame-state.js";
41
50
  export { getLodStatus } from "./tileset-3d/helpers/i3s-lod.js";
42
51
  export { TILE_CONTENT_STATE, TILE_REFINEMENT, TILE_TYPE, TILESET_TYPE, LOD_METRIC_TYPE } from "./constants.js";
43
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,cAAc,EAAC,0CAAuC;AACnE,YAAY,EAAC,6BAA6B,EAAC,0DAAuD;AAClG,OAAO,EAAC,SAAS,EAAC,0CAAuC;AACzD,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACvB,8CAA2C;AAC5C,OAAO,EAAC,iBAAiB,EAAC,8CAA2C;AACrE,YAAY,EAAC,kCAAkC,EAAC,8DAA2D;AAC3G,OAAO,EAAC,2BAA2B,EAAC,8DAA2D;AAC/F,OAAO,EAAC,MAAM,EAAC,uCAAoC;AACnD,YAAY,EAAC,iBAAiB,EAAC,uCAAoC;AACnE,OAAO,EAAC,aAAa,EAAC,wDAAqD;AAC3E,YAAY,EAAC,mBAAmB,EAAC,wDAAqD;AACtF,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACtB,wDAAqD;AACtD,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC3B,wDAAqD;AACtD,OAAO,EAAC,SAAS,EAAC,8CAA2C;AAE7D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AACvE,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAE/D,YAAY,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,aAAa,EACb,MAAM,EACP,wBAAqB;AACtB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EAC1B,wBAAqB;AACtB,YAAY,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,mBAAmB,EACpB,wBAAqB;AACtB,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,wBAAqB;AACtB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,uBAAoB;AACrB,OAAO,EAAC,QAAQ,EAAC,uBAAoB;AACrC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC3B,wBAAqB;AACtB,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC3B,+BAA4B;AAC7B,YAAY,EAAC,wBAAwB,EAAC,6CAA0C;AAChF,OAAO,EAAC,iBAAiB,EAAC,6CAA0C;AACpE,OAAO,EAAC,cAAc,EAAC,0CAAuC;AAC9D,OAAO,EAAC,oBAAoB,EAAC,gDAA6C;AAC1E,OAAO,EAAC,uBAAuB,EAAC,gDAA6C;AAE7E,YAAY,EACV,oCAAoC,EACpC,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,EAC7B,mCAAgC;AACjC,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,sCAAsC,EACvC,mCAAgC;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACvB,8CAA2C;AAC5C,OAAO,EAAC,4BAA4B,EAAC,oDAAiD;AACtF,OAAO,EAAC,yBAAyB,EAAC,oDAAiD;AACnF,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACxB,6CAA0C;AAC3C,OAAO,EAAC,qBAAqB,EAAC,6CAA0C;AACxE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACzB,+CAA4C;AAE7C,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAC/D,YAAY,EAAC,oBAAoB,EAAC,4CAAyC;AAC3E,OAAO,EAAC,YAAY,EAAC,wCAAqC;AAE1D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EAChB,uBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  export { Tileset3D } from "./tileset-3d/common/tileset-3d.js";
5
+ export { getTileset3DTraversalSnapshot } from "./tileset-3d/common/tileset-observability.js";
6
+ export { traverseTilesetContents } from "./tileset-3d/common/tileset-content-traversal.js";
5
7
  export { isTileset3DSource } from "./tileset-3d/common/tileset-source.js";
6
8
  export { IndexedArchiveTilesetSource } from "./tileset-3d/common/indexed-archive-tileset-source.js";
7
9
  export { Tile3D } from "./tileset-3d/common/tile-3d.js";
@@ -17,10 +19,12 @@ export { PointCloudTileset } from "./point-cloud/point-cloud-tileset.js";
17
19
  export { PointCloudTile } from "./point-cloud/point-cloud-tile.js";
18
20
  export { createBoundingVolume } from "./tileset-3d/helpers/bounding-volume.js";
19
21
  export { calculateTransformProps } from "./tileset-3d/helpers/transform-utils.js";
22
+ export { convertS2BoundingVolumeToOBB } from "./tileset-3d/helpers/s2-bounding-volume.js";
20
23
  export { applyTilesetSpatialOptions, createTilesetSpatialReference, markTilesetSpatialReferenceTransformed } from "./spatial/spatial-types.js";
21
24
  export { get3DTilesSpatialReference, getI3SSpatialReference } from "./spatial/format-spatial-reference.js";
22
25
  export { SpatialCoordinateTransformer } from "./spatial/spatial-coordinate-transformer.js";
23
26
  export { getSpatialCoordinateFrame } from "./spatial/spatial-coordinate-transformer.js";
27
+ export { Tiles3DSpatialTransformer } from "./spatial/tiles-3d-spatial-transformer.js";
24
28
  export { I3SSpatialTransformer } from "./spatial/i3s-spatial-transformer.js";
25
29
  export { getGeoidModel, registerGeoidModel, registerGeoidModelFromPgm, registerSpatialCrs, registerSpatialDatumGrid } from "./spatial/spatial-resource-registry.js";
26
30
  export { getFrameState } from "./tileset-3d/helpers/frame-state.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,SAAS,EAAC,0CAAuC;AAazD,OAAO,EAAC,iBAAiB,EAAC,8CAA2C;AAErE,OAAO,EAAC,2BAA2B,EAAC,8DAA2D;AAC/F,OAAO,EAAC,MAAM,EAAC,uCAAoC;AAEnD,OAAO,EAAC,aAAa,EAAC,wDAAqD;AAW3E,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC3B,wDAAqD;AACtD,OAAO,EAAC,SAAS,EAAC,8CAA2C;AAE7D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AACvE,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAwB/D,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,wBAAqB;AAOtB,OAAO,EAAC,QAAQ,EAAC,uBAAoB;AAQrC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAWvC,OAAO,EAAC,iBAAiB,EAAC,6CAA0C;AACpE,OAAO,EAAC,cAAc,EAAC,0CAAuC;AAC9D,OAAO,EAAC,oBAAoB,EAAC,gDAA6C;AAC1E,OAAO,EAAC,uBAAuB,EAAC,gDAA6C;AAiB7E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,sCAAsC,EACvC,mCAAgC;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACvB,8CAA2C;AAC5C,OAAO,EAAC,4BAA4B,EAAC,oDAAiD;AACtF,OAAO,EAAC,yBAAyB,EAAC,oDAAiD;AAMnF,OAAO,EAAC,qBAAqB,EAAC,6CAA0C;AACxE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACzB,+CAA4C;AAE7C,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAE/D,OAAO,EAAC,YAAY,EAAC,wCAAqC;AAE1D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EAChB,uBAAoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,SAAS,EAAC,0CAAuC;AACzD,OAAO,EAAC,6BAA6B,EAAC,qDAAkD;AAExF,OAAO,EAAC,uBAAuB,EAAC,yDAAsD;AAiBtF,OAAO,EAAC,iBAAiB,EAAC,8CAA2C;AAErE,OAAO,EAAC,2BAA2B,EAAC,8DAA2D;AAC/F,OAAO,EAAC,MAAM,EAAC,uCAAoC;AAQnD,OAAO,EAAC,aAAa,EAAC,wDAAqD;AAW3E,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC3B,wDAAqD;AACtD,OAAO,EAAC,SAAS,EAAC,8CAA2C;AAE7D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AACvE,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAwB/D,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,wBAAqB;AAOtB,OAAO,EAAC,QAAQ,EAAC,uBAAoB;AAQrC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAWvC,OAAO,EAAC,iBAAiB,EAAC,6CAA0C;AACpE,OAAO,EAAC,cAAc,EAAC,0CAAuC;AAC9D,OAAO,EAAC,oBAAoB,EAAC,gDAA6C;AAC1E,OAAO,EAAC,uBAAuB,EAAC,gDAA6C;AAC7E,OAAO,EAAC,4BAA4B,EAAC,mDAAgD;AAkBrF,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,sCAAsC,EACvC,mCAAgC;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACvB,8CAA2C;AAC5C,OAAO,EAAC,4BAA4B,EAAC,oDAAiD;AACtF,OAAO,EAAC,yBAAyB,EAAC,oDAAiD;AACnF,OAAO,EAAC,yBAAyB,EAAC,kDAA+C;AAOjF,OAAO,EAAC,qBAAqB,EAAC,6CAA0C;AACxE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACzB,+CAA4C;AAE7C,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAE/D,OAAO,EAAC,YAAY,EAAC,wCAAqC;AAE1D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EAChB,uBAAoB"}
@@ -41,6 +41,7 @@ type Tiles3DLike = {
41
41
  region?: unknown;
42
42
  };
43
43
  };
44
+ extensions?: Record<string, unknown>;
44
45
  };
45
46
  /**
46
47
  * Discovers normalized spatial metadata from an I3S scene-layer document.
@@ -1 +1 @@
1
- {"version":3,"file":"format-spatial-reference.d.ts","sourceRoot":"","sources":["../../src/spatial/format-spatial-reference.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,KAAK,EAAuB,uBAAuB,EAAC,2BAAwB;AAEnF,qFAAqF;AACrF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8DAA8D;AAC9D,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,UAAU,CAAC,EAAE;QAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;KAAC,CAAC;IAC1D,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACjE,CAAC;AAKF,kEAAkE;AAClE,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAC,CAAC;IAClE,IAAI,CAAC,EAAE;QAAC,cAAc,CAAC,EAAE;YAAC,MAAM,CAAC,EAAE,OAAO,CAAA;SAAC,CAAA;KAAC,CAAC;CAC9C,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,uBAAuB,CAmEnF;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,uBAAuB,CA0CxF"}
1
+ {"version":3,"file":"format-spatial-reference.d.ts","sourceRoot":"","sources":["../../src/spatial/format-spatial-reference.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAOxD,OAAO,KAAK,EAAuB,uBAAuB,EAAC,2BAAwB;AAEnF,qFAAqF;AACrF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8DAA8D;AAC9D,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,UAAU,CAAC,EAAE;QAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;KAAC,CAAC;IAC1D,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACjE,CAAC;AAKF,kEAAkE;AAClE,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAC,CAAC;IAClE,IAAI,CAAC,EAAE;QAAC,cAAc,CAAC,EAAE;YAAC,MAAM,CAAC,EAAE,OAAO,CAAA;SAAC,CAAA;KAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,uBAAuB,CAqEnF;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,uBAAuB,CA8CxF"}
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { getI3SLinearUnitScale, getI3SVerticalUnitScale } from "./i3s-elevation.js";
5
+ import { getKnownCrsIdentifierCoordinateFrame, getSpatialCoordinateFrame } from "./get-spatial-coordinate-frame.js";
5
6
  import { createTilesetSpatialReference } from "./spatial-types.js";
6
7
  /**
7
8
  * Discovers normalized spatial metadata from an I3S scene-layer document.
@@ -26,8 +27,10 @@ export function getI3SSpatialReference(layer) {
26
27
  : 'unknown';
27
28
  const sourceIdentifier = getCrsIdentifier(spatialReference);
28
29
  const coordinateFrame = sourceIdentifier === undefined
29
- ? getWktCoordinateFrame(spatialReference?.wkt)
30
- : getIdentifierCoordinateFrame(sourceIdentifier);
30
+ ? sourceCrs
31
+ ? getSpatialCoordinateFrame(sourceCrs)
32
+ : 'unknown'
33
+ : getSpatialCoordinateFrame(`EPSG:${sourceIdentifier}`);
31
34
  const units = getI3SCoordinateUnits(coordinateFrame, verticalUnit, layer.ZFactor);
32
35
  const warnings = [];
33
36
  const elevationMode = getI3SElevationMode(layer.elevationInfo?.mode);
@@ -102,6 +105,10 @@ function getI3SElevationMode(mode) {
102
105
  * @returns Normalized source spatial metadata.
103
106
  */
104
107
  export function get3DTilesSpatialReference(tileset) {
108
+ const draftSpatialReference = getDraft3DTilesSpatialReference(tileset);
109
+ if (draftSpatialReference) {
110
+ return draftSpatialReference;
111
+ }
105
112
  const geocentricCrs = getTilesetSemanticValue(tileset, 'TILESET_CRS_GEOCENTRIC');
106
113
  const coordinateEpoch = getTilesetSemanticValue(tileset, 'TILESET_CRS_COORDINATE_EPOCH');
107
114
  const warnings = [];
@@ -142,6 +149,101 @@ export function get3DTilesSpatialReference(tileset) {
142
149
  warnings
143
150
  });
144
151
  }
152
+ /** Resolves the draft glTF EXT_geospatial_crs WKID or WKT2 declaration. */
153
+ function getDraft3DTilesSpatialReference(tileset) {
154
+ const extension = tileset.extensions?.EXT_geospatial_crs;
155
+ if (!extension) {
156
+ return undefined;
157
+ }
158
+ const warnings = [];
159
+ let sourceCrs;
160
+ let verticalCrs;
161
+ let epoch;
162
+ let representation;
163
+ if (extension.format === 'wkid') {
164
+ const wkidExtension = extension.extensions?.EXT_geospatial_crs_wkid;
165
+ if (typeof wkidExtension?.authority === 'string' && Number.isInteger(wkidExtension.wkid)) {
166
+ sourceCrs = `${wkidExtension.authority}:${wkidExtension.wkid}`;
167
+ representation = 'identifier';
168
+ if (Number.isInteger(wkidExtension.vcsWkid)) {
169
+ verticalCrs = `${wkidExtension.authority}:${wkidExtension.vcsWkid}`;
170
+ }
171
+ epoch = parseCoordinateEpoch(wkidExtension.epoch);
172
+ if (wkidExtension.epoch !== undefined && epoch === undefined) {
173
+ warnings.push('EXT_geospatial_crs_wkid epoch is not a finite decimal year');
174
+ }
175
+ }
176
+ else {
177
+ warnings.push('EXT_geospatial_crs_wkid requires string authority and integer wkid');
178
+ }
179
+ }
180
+ else if (extension.format === 'wkt2') {
181
+ const wktExtension = extension.extensions?.EXT_geospatial_crs_wkt2;
182
+ if (typeof wktExtension?.wkt2 === 'string' && wktExtension.wkt2.trim()) {
183
+ sourceCrs = wktExtension.wkt2;
184
+ representation = 'wkt';
185
+ }
186
+ else {
187
+ warnings.push('EXT_geospatial_crs_wkt2 requires a nonempty wkt2 string');
188
+ }
189
+ }
190
+ else {
191
+ warnings.push(`Unsupported EXT_geospatial_crs format ${String(extension.format)}`);
192
+ }
193
+ const coordinateFrame = representation === 'wkt'
194
+ ? getSpatialCoordinateFrame(sourceCrs)
195
+ : getKnownCrsIdentifierCoordinateFrame(sourceCrs) || 'unknown';
196
+ const verticalSemantics = getDraftVerticalCrsSemantics(verticalCrs);
197
+ if (verticalCrs && !verticalSemantics) {
198
+ warnings.push(`Unsupported vertical CRS ${String(verticalCrs)}; vertical unit and height reference are unknown`);
199
+ }
200
+ const verticalUnit = verticalCrs ? verticalSemantics?.unit : 'meter';
201
+ return createTilesetSpatialReference({
202
+ sourceCrs,
203
+ sourceCrsState: sourceCrs ? 'explicit' : 'unknown',
204
+ sourceCrsRepresentation: representation,
205
+ verticalCrs,
206
+ coordinateEpoch: epoch,
207
+ units: coordinateFrame === 'geocentric'
208
+ ? ['meter', 'meter', 'meter']
209
+ : coordinateFrame === 'geographic' && verticalUnit
210
+ ? ['degree', 'degree', verticalUnit]
211
+ : undefined,
212
+ verticalUnitScale: verticalCrs ? (verticalSemantics?.verticalUnitScale ?? Number.NaN) : 1,
213
+ heightReference: verticalCrs
214
+ ? (verticalSemantics?.heightReference ?? 'unknown')
215
+ : sourceCrs
216
+ ? 'ellipsoidal'
217
+ : 'unknown',
218
+ coordinateFrame,
219
+ axisOrder: sourceCrs ? 'xyz' : 'unknown',
220
+ provenance: 'metadata',
221
+ warnings
222
+ });
223
+ }
224
+ /** Resolves vertical units and height interpretation for known EPSG vertical CRSs. */
225
+ function getDraftVerticalCrsSemantics(verticalCrs) {
226
+ if (typeof verticalCrs !== 'string') {
227
+ return undefined;
228
+ }
229
+ const epsgMatch = /^EPSG:(\d+)$/i.exec(verticalCrs);
230
+ if (!epsgMatch) {
231
+ return undefined;
232
+ }
233
+ switch (Number(epsgMatch[1])) {
234
+ case 5702: // NGVD29 height (ftUS)
235
+ case 6360: // NAVD88 height (ftUS)
236
+ return {
237
+ unit: 'us-foot',
238
+ verticalUnitScale: 1200 / 3937,
239
+ heightReference: 'orthometric'
240
+ };
241
+ case 5703: // NAVD88 height
242
+ return { unit: 'meter', verticalUnitScale: 1, heightReference: 'orthometric' };
243
+ default:
244
+ return undefined;
245
+ }
246
+ }
145
247
  /** Parse the 3D Tiles decimal-year string while tolerating legacy numeric producer output. */
146
248
  function parseCoordinateEpoch(value) {
147
249
  if (typeof value !== 'string' && typeof value !== 'number') {
@@ -170,50 +272,6 @@ function getI3SVerticalCrsDefinition(spatialReference) {
170
272
  function getCrsIdentifier(spatialReference) {
171
273
  return spatialReference?.latestWkid ?? spatialReference?.wkid;
172
274
  }
173
- /** Classify common EPSG identifiers used by I3S into their coordinate frames. */
174
- function getIdentifierCoordinateFrame(identifier) {
175
- if (identifier === 4978) {
176
- return 'geocentric';
177
- }
178
- if (identifier === 4326 || identifier === 4490 || identifier === 4979) {
179
- return 'geographic';
180
- }
181
- return 'projected';
182
- }
183
- /**
184
- * Classify a WKT root coordinate system without guessing when the declaration is ambiguous.
185
- *
186
- * WKT2 uses `GEODCRS` for both geographic and geocentric systems, so its `CS` declaration is
187
- * inspected before assigning a frame.
188
- */
189
- function getWktCoordinateFrame(wkt) {
190
- if (!wkt) {
191
- return 'unknown';
192
- }
193
- const normalizedWkt = wkt.trim().toUpperCase();
194
- const rootKeyword = normalizedWkt.match(/^([A-Z][A-Z0-9_]*)\s*[\[(]/)?.[1];
195
- if (rootKeyword === 'GEOCCS') {
196
- return 'geocentric';
197
- }
198
- if (rootKeyword === 'GEOGCS' ||
199
- rootKeyword === 'GEOGRAPHICCRS' ||
200
- rootKeyword === 'GEOGRAPHIC2DCRS' ||
201
- rootKeyword === 'GEOGRAPHIC3DCRS') {
202
- return 'geographic';
203
- }
204
- if (rootKeyword === 'PROJCS' || rootKeyword === 'PROJCRS' || rootKeyword === 'PROJECTEDCRS') {
205
- return 'projected';
206
- }
207
- if (rootKeyword === 'GEODCRS' || rootKeyword === 'GEODETICCRS') {
208
- if (/\bCS\s*[\[(]\s*CARTESIAN\s*,\s*3\b/.test(normalizedWkt)) {
209
- return 'geocentric';
210
- }
211
- if (/\bCS\s*[\[(]\s*ELLIPSOIDAL\s*,\s*[23]\b/.test(normalizedWkt)) {
212
- return 'geographic';
213
- }
214
- }
215
- return 'unknown';
216
- }
217
275
  /** Resolve a tileset-wide structured metadata property by its standard semantic. */
218
276
  function getTilesetSemanticValue(tileset, semantic) {
219
277
  const classIdentifier = tileset.metadata?.class;
@@ -1 +1 @@
1
- {"version":3,"file":"format-spatial-reference.js","sourceRoot":"","sources":["../../src/spatial/format-spatial-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-spatial-reference.js","sourceRoot":"","sources":["../../src/spatial/format-spatial-reference.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ReadonlyCRSDefinition, SpatialReferenceCoordinateFrame } from '@math.gl/crs';
1
+ import { type ReadonlyCRSDefinition, type SpatialReferenceCoordinateFrame } from '@math.gl/crs';
2
2
  /**
3
3
  * Classify a CRS definition into the broad coordinate frame used by 3D format adapters.
4
4
  *
@@ -6,4 +6,15 @@ import type { ReadonlyCRSDefinition, SpatialReferenceCoordinateFrame } from '@ma
6
6
  * @returns The broad geographic, geocentric, projected, local, or unknown frame.
7
7
  */
8
8
  export declare function getSpatialCoordinateFrame(definition: ReadonlyCRSDefinition): SpatialReferenceCoordinateFrame;
9
+ /**
10
+ * Classifies authority identifiers for which the tiles runtime has explicit frame knowledge.
11
+ *
12
+ * Unlike {@link getSpatialCoordinateFrame}, this function does not assume that an unrecognized
13
+ * authority identifier is projected. Draft formats use this strict result to avoid inventing
14
+ * semantics for unknown authorities or registry codes.
15
+ *
16
+ * @param definition - Serialized CRS identifier.
17
+ * @returns A known frame, or `undefined` when registry semantics are unavailable.
18
+ */
19
+ export declare function getKnownCrsIdentifierCoordinateFrame(definition: ReadonlyCRSDefinition | undefined): SpatialReferenceCoordinateFrame | undefined;
9
20
  //# sourceMappingURL=get-spatial-coordinate-frame.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-spatial-coordinate-frame.d.ts","sourceRoot":"","sources":["../../src/spatial/get-spatial-coordinate-frame.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,qBAAqB,EAAE,+BAA+B,EAAC,MAAM,cAAc,CAAC;AAczF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,qBAAqB,GAChC,+BAA+B,CA+CjC"}
1
+ {"version":3,"file":"get-spatial-coordinate-frame.d.ts","sourceRoot":"","sources":["../../src/spatial/get-spatial-coordinate-frame.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EAErC,MAAM,cAAc,CAAC;AAOtB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,qBAAqB,GAChC,+BAA+B,CAoCjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,qBAAqB,GAAG,SAAS,GAC5C,+BAA+B,GAAG,SAAS,CA8B7C"}
@@ -1,14 +1,8 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- const GEOGRAPHIC_CRS = 'EPSG:4326';
5
- const GEOCENTRIC_CRS = 'EPSG:4978';
6
- /** Normalize common OGC URL and URN CRS spellings to authority identifiers. */
7
- function normalizeCrsIdentifier(identifier) {
8
- const normalizedIdentifier = identifier.trim().toUpperCase();
9
- const ogcMatch = normalizedIdentifier.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);
10
- return ogcMatch ? `${ogcMatch[1]}:${ogcMatch[2]}` : normalizedIdentifier;
11
- }
4
+ import { inferCRSRepresentation, parsePROJString, parseWKTCRS } from '@math.gl/crs';
5
+ import { normalizeCrsIdentifier, WGS84_GEOCENTRIC_CRS, WGS84_GEOGRAPHIC_CRS } from "./normalize-crs-identifier.js";
12
6
  /**
13
7
  * Classify a CRS definition into the broad coordinate frame used by 3D format adapters.
14
8
  *
@@ -17,23 +11,14 @@ function normalizeCrsIdentifier(identifier) {
17
11
  */
18
12
  export function getSpatialCoordinateFrame(definition) {
19
13
  if (typeof definition === 'string') {
20
- const normalized = normalizeCrsIdentifier(definition);
21
- if (normalized === GEOCENTRIC_CRS || /^GEOCCS\s*[\[(]/.test(normalized)) {
22
- return 'geocentric';
23
- }
24
- if (normalized === GEOGRAPHIC_CRS ||
25
- normalized === 'EPSG:4490' ||
26
- normalized === 'EPSG:4979' ||
27
- normalized === 'OGC:CRS84' ||
28
- normalized.includes('+PROJ=LONGLAT') ||
29
- normalized.includes('+PROJ=LATLONG') ||
30
- /^(?:GEOGCS|GEOGCRS|GEOGRAPHICCRS|GEOGRAPHIC2DCRS|GEOGRAPHIC3DCRS)\s*[\[(]/.test(normalized)) {
31
- return 'geographic';
14
+ const representation = inferCRSRepresentation(definition);
15
+ if (representation === 'wkt') {
16
+ return getWktCoordinateFrame(definition);
32
17
  }
33
- if (/^(?:GEODCRS|GEODETICCRS)\s*[\[(]/.test(normalized)) {
34
- return /CS\s*[\[(]\s*CARTESIAN/.test(normalized) ? 'geocentric' : 'geographic';
18
+ if (representation === 'proj-string') {
19
+ return getProjStringCoordinateFrame(definition);
35
20
  }
36
- return 'projected';
21
+ return getKnownCrsIdentifierCoordinateFrame(definition) || 'projected';
37
22
  }
38
23
  const projJsonDefinition = definition;
39
24
  if (projJsonDefinition.type === 'BoundCRS' && projJsonDefinition.source_crs) {
@@ -53,6 +38,102 @@ export function getSpatialCoordinateFrame(definition) {
53
38
  ? 'geocentric'
54
39
  : 'geographic';
55
40
  }
56
- return 'projected';
41
+ return 'unknown';
42
+ }
43
+ /**
44
+ * Classifies authority identifiers for which the tiles runtime has explicit frame knowledge.
45
+ *
46
+ * Unlike {@link getSpatialCoordinateFrame}, this function does not assume that an unrecognized
47
+ * authority identifier is projected. Draft formats use this strict result to avoid inventing
48
+ * semantics for unknown authorities or registry codes.
49
+ *
50
+ * @param definition - Serialized CRS identifier.
51
+ * @returns A known frame, or `undefined` when registry semantics are unavailable.
52
+ */
53
+ export function getKnownCrsIdentifierCoordinateFrame(definition) {
54
+ if (typeof definition !== 'string') {
55
+ return undefined;
56
+ }
57
+ const normalized = normalizeCrsIdentifier(definition);
58
+ if (normalized === WGS84_GEOCENTRIC_CRS) {
59
+ return 'geocentric';
60
+ }
61
+ if (normalized === WGS84_GEOGRAPHIC_CRS || normalized === 'OGC:CRS84') {
62
+ return 'geographic';
63
+ }
64
+ const epsgMatch = /^EPSG:(\d+)$/.exec(normalized);
65
+ if (!epsgMatch) {
66
+ return undefined;
67
+ }
68
+ const identifier = Number(epsgMatch[1]);
69
+ if (identifier === 7789) {
70
+ return 'geocentric';
71
+ }
72
+ if (identifier === 4490 || identifier === 4979) {
73
+ return 'geographic';
74
+ }
75
+ if (identifier === 3857 ||
76
+ (identifier >= 32601 && identifier <= 32660) ||
77
+ (identifier >= 32701 && identifier <= 32760)) {
78
+ return 'projected';
79
+ }
80
+ return undefined;
81
+ }
82
+ /** Classifies a WKT definition using the syntax tree parsed by `@math.gl/crs`. */
83
+ function getWktCoordinateFrame(definition) {
84
+ let root;
85
+ try {
86
+ root = parseWKTCRS(definition).root;
87
+ }
88
+ catch {
89
+ return 'unknown';
90
+ }
91
+ switch (root.keyword.toUpperCase()) {
92
+ case 'GEOCCS':
93
+ return 'geocentric';
94
+ case 'GEOGCS':
95
+ case 'GEOGCRS':
96
+ case 'GEOGRAPHICCRS':
97
+ case 'GEOGRAPHIC2DCRS':
98
+ case 'GEOGRAPHIC3DCRS':
99
+ return 'geographic';
100
+ case 'PROJCS':
101
+ case 'PROJCRS':
102
+ case 'PROJECTEDCRS':
103
+ return 'projected';
104
+ case 'GEODCRS':
105
+ case 'GEODETICCRS': {
106
+ const coordinateSystem = root.values.find((value) => value.type === 'node' && value.keyword.toUpperCase() === 'CS');
107
+ const subtype = coordinateSystem?.values[0];
108
+ if (subtype?.type !== 'enumeration' && subtype?.type !== 'string') {
109
+ return 'unknown';
110
+ }
111
+ return subtype.value.toUpperCase() === 'CARTESIAN'
112
+ ? 'geocentric'
113
+ : subtype.value.toUpperCase() === 'ELLIPSOIDAL'
114
+ ? 'geographic'
115
+ : 'unknown';
116
+ }
117
+ default:
118
+ return 'unknown';
119
+ }
120
+ }
121
+ /** Classifies a PROJ string using the syntax tree parsed by `@math.gl/crs`. */
122
+ function getProjStringCoordinateFrame(definition) {
123
+ try {
124
+ const projection = parsePROJString(definition).parameters.find(parameter => parameter.name.toLowerCase() === 'proj')?.value;
125
+ switch (projection?.toLowerCase()) {
126
+ case 'longlat':
127
+ case 'latlong':
128
+ return 'geographic';
129
+ case 'geocent':
130
+ return 'geocentric';
131
+ default:
132
+ return projection ? 'projected' : 'unknown';
133
+ }
134
+ }
135
+ catch {
136
+ return 'unknown';
137
+ }
57
138
  }
58
139
  //# sourceMappingURL=get-spatial-coordinate-frame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-spatial-coordinate-frame.js","sourceRoot":"","sources":["../../src/spatial/get-spatial-coordinate-frame.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,+EAA+E;AAC/E,SAAS,sBAAsB,CAAC,UAAkB;IAChD,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CACzC,uFAAuF,CACxF,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAiC;IAEjC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxE,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IACE,UAAU,KAAK,cAAc;YAC7B,UAAU,KAAK,WAAW;YAC1B,UAAU,KAAK,WAAW;YAC1B,UAAU,KAAK,WAAW;YAC1B,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;YACpC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;YACpC,2EAA2E,CAAC,IAAI,CAAC,UAAU,CAAC,EAC5F,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,OAAO,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;QACjF,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,kBAAkB,GAAG,UAK1B,CAAC;IACF,IAAI,kBAAkB,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAC5E,OAAO,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,KAAK,aAAa,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,OAAO,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,KAAK,WAAW;YAClE,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC;IACnB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"get-spatial-coordinate-frame.js","sourceRoot":"","sources":["../../src/spatial/get-spatial-coordinate-frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Compact identifier for conventional WGS84 longitude/latitude coordinates. */
2
+ export declare const WGS84_GEOGRAPHIC_CRS = "EPSG:4326";
3
+ /** Compact identifier for WGS84 Earth-centered, Earth-fixed coordinates. */
4
+ export declare const WGS84_GEOCENTRIC_CRS = "EPSG:4978";
5
+ /**
6
+ * Normalizes common OGC URL and URN CRS spellings to compact authority identifiers.
7
+ *
8
+ * This intentionally performs syntax normalization only. Authority lookup and semantic
9
+ * equivalence remain outside the scope of `@math.gl/crs` and the tiles runtime.
10
+ *
11
+ * @param identifier - Serialized CRS identifier.
12
+ * @returns Uppercase compact identifier when an OGC spelling is recognized.
13
+ */
14
+ export declare function normalizeCrsIdentifier(identifier: string): string;
15
+ //# sourceMappingURL=normalize-crs-identifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-crs-identifier.d.ts","sourceRoot":"","sources":["../../src/spatial/normalize-crs-identifier.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMjE"}
@@ -0,0 +1,22 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Compact identifier for conventional WGS84 longitude/latitude coordinates. */
5
+ export const WGS84_GEOGRAPHIC_CRS = 'EPSG:4326';
6
+ /** Compact identifier for WGS84 Earth-centered, Earth-fixed coordinates. */
7
+ export const WGS84_GEOCENTRIC_CRS = 'EPSG:4978';
8
+ /**
9
+ * Normalizes common OGC URL and URN CRS spellings to compact authority identifiers.
10
+ *
11
+ * This intentionally performs syntax normalization only. Authority lookup and semantic
12
+ * equivalence remain outside the scope of `@math.gl/crs` and the tiles runtime.
13
+ *
14
+ * @param identifier - Serialized CRS identifier.
15
+ * @returns Uppercase compact identifier when an OGC spelling is recognized.
16
+ */
17
+ export function normalizeCrsIdentifier(identifier) {
18
+ const normalizedIdentifier = identifier.trim().toUpperCase();
19
+ const ogcMatch = normalizedIdentifier.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);
20
+ return ogcMatch ? `${ogcMatch[1]}:${ogcMatch[2]}` : normalizedIdentifier;
21
+ }
22
+ //# sourceMappingURL=normalize-crs-identifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-crs-identifier.js","sourceRoot":"","sources":["../../src/spatial/normalize-crs-identifier.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEhD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CACzC,uFAAuF,CACxF,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC3E,CAAC"}
@@ -40,6 +40,10 @@ export declare class SpatialCoordinateTransformer {
40
40
  * @returns A new transformed coordinate array.
41
41
  */
42
42
  transformPosition(coordinate: readonly number[]): number[];
43
+ /** Transform a packed sequence of xyz positions, preserving the input array type only when safe. */
44
+ transformPositions(positions: ArrayLike<number>): Float64Array;
45
+ /** Transform packed xyz normals using a local finite-difference tangent approximation. */
46
+ transformNormals(normals: ArrayLike<number>, positions: ArrayLike<number>): Float32Array;
43
47
  /** Convert one source coordinate to conventional WGS84 longitude, latitude, and height. */
44
48
  private toGeographic;
45
49
  /** Convert one conventional WGS84 geographic coordinate to the selected output CRS. */
@@ -1 +1 @@
1
- {"version":3,"file":"spatial-coordinate-transformer.d.ts","sourceRoot":"","sources":["../../src/spatial/spatial-coordinate-transformer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,qBAAqB,EACrB,uBAAuB,EAExB,2BAAwB;AACzB,OAAO,EAAC,yBAAyB,EAAC,0CAAuC;AAKzE;;;;;;GAMG;AACH,qBAAa,4BAA4B;IACvC,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IAEnD,sFAAsF;IACtF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAkB;IAExD,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAkB;IAExD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAkB;IAE1D,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAQ;IAE/B;;;;;OAKG;gBACS,gBAAgB,EAAE,uBAAuB,EAAE,OAAO,GAAE,qBAA0B;IAuD1F;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE;IAoC1D,2FAA2F;IAC3F,OAAO,CAAC,YAAY;IAUpB,uFAAuF;IACvF,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"spatial-coordinate-transformer.d.ts","sourceRoot":"","sources":["../../src/spatial/spatial-coordinate-transformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAEV,qBAAqB,EACrB,uBAAuB,EAExB,2BAAwB;AACzB,OAAO,EAAC,yBAAyB,EAAC,0CAAuC;AAEzE;;;;;;GAMG;AACH,qBAAa,4BAA4B;IACvC,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IAEnD,sFAAsF;IACtF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAa;IAEnD,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAa;IAEnD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAa;IAErD,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAQ;IAE/B;;;;;OAKG;gBACS,gBAAgB,EAAE,uBAAuB,EAAE,OAAO,GAAE,qBAA0B;IAuD1F;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE;IAoC1D,oGAAoG;IACpG,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY;IAkB9D,0FAA0F;IAC1F,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY;IAiCxF,2FAA2F;IAC3F,OAAO,CAAC,YAAY;IAUpB,uFAAuF;IACvF,OAAO,CAAC,cAAc;CASvB"}