@loaders.gl/tiles 5.0.0-alpha.1 → 5.0.0-alpha.3

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 (161) hide show
  1. package/LICENSE +14 -3
  2. package/dist/dist.dev.js +17482 -3685
  3. package/dist/dist.min.js +4 -1
  4. package/dist/index.cjs +4594 -422
  5. package/dist/index.cjs.map +3 -4
  6. package/dist/index.d.ts +16 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -1
  11. package/dist/point-cloud/point-cloud-tile.js +3 -0
  12. package/dist/point-cloud/point-cloud-tile.js.map +1 -1
  13. package/dist/point-cloud/point-cloud-tileset.d.ts +4 -0
  14. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -1
  15. package/dist/point-cloud/point-cloud-tileset.js +54 -12
  16. package/dist/point-cloud/point-cloud-tileset.js.map +1 -1
  17. package/dist/point-cloud/types.d.ts +17 -0
  18. package/dist/point-cloud/types.d.ts.map +1 -1
  19. package/dist/point-cloud/types.js +3 -0
  20. package/dist/point-cloud/types.js.map +1 -1
  21. package/dist/raster-set.d.ts +37 -29
  22. package/dist/raster-set.d.ts.map +1 -1
  23. package/dist/raster-set.js +25 -2
  24. package/dist/raster-set.js.map +1 -1
  25. package/dist/spatial/format-spatial-reference.d.ts +67 -0
  26. package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
  27. package/dist/spatial/format-spatial-reference.js +233 -0
  28. package/dist/spatial/format-spatial-reference.js.map +1 -0
  29. package/dist/spatial/get-spatial-coordinate-frame.d.ts +9 -0
  30. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
  31. package/dist/spatial/get-spatial-coordinate-frame.js +58 -0
  32. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
  33. package/dist/spatial/i3s-elevation.d.ts +20 -0
  34. package/dist/spatial/i3s-elevation.d.ts.map +1 -0
  35. package/dist/spatial/i3s-elevation.js +90 -0
  36. package/dist/spatial/i3s-elevation.js.map +1 -0
  37. package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
  38. package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
  39. package/dist/spatial/i3s-spatial-transformer.js +686 -0
  40. package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
  41. package/dist/spatial/spatial-coordinate-transformer.d.ts +48 -0
  42. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
  43. package/dist/spatial/spatial-coordinate-transformer.js +211 -0
  44. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
  45. package/dist/spatial/spatial-resource-registry.d.ts +44 -0
  46. package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
  47. package/dist/spatial/spatial-resource-registry.js +67 -0
  48. package/dist/spatial/spatial-resource-registry.js.map +1 -0
  49. package/dist/spatial/spatial-types.d.ts +190 -0
  50. package/dist/spatial/spatial-types.d.ts.map +1 -0
  51. package/dist/spatial/spatial-types.js +192 -0
  52. package/dist/spatial/spatial-types.js.map +1 -0
  53. package/dist/tileset-3d/common/tile-3d.d.ts +147 -4
  54. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  55. package/dist/tileset-3d/common/tile-3d.js +358 -76
  56. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  57. package/dist/tileset-3d/common/tileset-3d.d.ts +168 -3
  58. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  59. package/dist/tileset-3d/common/tileset-3d.js +306 -23
  60. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  61. package/dist/tileset-3d/common/tileset-cache.d.ts +11 -1
  62. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -1
  63. package/dist/tileset-3d/common/tileset-cache.js +11 -3
  64. package/dist/tileset-3d/common/tileset-cache.js.map +1 -1
  65. package/dist/tileset-3d/common/tileset-source.d.ts +32 -0
  66. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  67. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  68. package/dist/tileset-3d/common/tileset-traverser.d.ts +19 -1
  69. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  70. package/dist/tileset-3d/common/tileset-traverser.js +39 -7
  71. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  72. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +136 -0
  73. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  74. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +384 -0
  75. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  76. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +86 -3
  77. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  78. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +196 -21
  79. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  80. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +36 -0
  81. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  82. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +66 -0
  83. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  84. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -1
  85. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +3 -0
  86. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  87. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +14 -1
  88. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
  89. package/dist/tileset-3d/format-i3s/i3s-source.js +107 -17
  90. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
  91. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -1
  92. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +3 -0
  93. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -1
  94. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
  95. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +3 -0
  96. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
  97. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -1
  98. package/dist/tileset-3d/helpers/3d-tiles-options.js +3 -0
  99. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -1
  100. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
  101. package/dist/tileset-3d/helpers/bounding-volume.js +4 -33
  102. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
  103. package/dist/tileset-3d/helpers/frame-state.d.ts +62 -2
  104. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
  105. package/dist/tileset-3d/helpers/frame-state.js +85 -9
  106. package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
  107. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -1
  108. package/dist/tileset-3d/helpers/i3s-lod.js +20 -8
  109. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -1
  110. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +61 -9
  111. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -1
  112. package/dist/tileset-3d/helpers/tiles-3d-lod.js +198 -93
  113. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -1
  114. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  115. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  116. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  117. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  118. package/dist/types.d.ts +5 -0
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/types.js +3 -0
  121. package/dist/types.js.map +1 -1
  122. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  123. package/dist/utils/doubly-linked-list.js +1 -0
  124. package/dist/utils/doubly-linked-list.js.map +1 -1
  125. package/dist/utils/managed-array.d.ts.map +1 -1
  126. package/dist/utils/managed-array.js +1 -0
  127. package/dist/utils/managed-array.js.map +1 -1
  128. package/package.json +12 -9
  129. package/src/index.ts +61 -1
  130. package/src/point-cloud/point-cloud-tile.ts +4 -0
  131. package/src/point-cloud/point-cloud-tileset.ts +70 -12
  132. package/src/point-cloud/types.ts +21 -0
  133. package/src/raster-set.ts +118 -45
  134. package/src/spatial/format-spatial-reference.ts +311 -0
  135. package/src/spatial/get-spatial-coordinate-frame.ts +74 -0
  136. package/src/spatial/i3s-elevation.ts +96 -0
  137. package/src/spatial/i3s-spatial-transformer.ts +957 -0
  138. package/src/spatial/spatial-coordinate-transformer.ts +276 -0
  139. package/src/spatial/spatial-resource-registry.ts +79 -0
  140. package/src/spatial/spatial-types.ts +422 -0
  141. package/src/tileset-3d/common/tile-3d.ts +435 -84
  142. package/src/tileset-3d/common/tileset-3d.ts +445 -23
  143. package/src/tileset-3d/common/tileset-cache.ts +15 -7
  144. package/src/tileset-3d/common/tileset-source.ts +36 -0
  145. package/src/tileset-3d/common/tileset-traverser.ts +40 -7
  146. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +612 -0
  147. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +254 -21
  148. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +77 -0
  149. package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +4 -0
  150. package/src/tileset-3d/format-i3s/i3s-source.ts +119 -18
  151. package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +4 -0
  152. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +4 -0
  153. package/src/tileset-3d/helpers/3d-tiles-options.ts +4 -0
  154. package/src/tileset-3d/helpers/bounding-volume.ts +5 -55
  155. package/src/tileset-3d/helpers/frame-state.ts +142 -11
  156. package/src/tileset-3d/helpers/i3s-lod.ts +22 -8
  157. package/src/tileset-3d/helpers/tiles-3d-lod.ts +291 -112
  158. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  159. package/src/types.ts +9 -0
  160. package/src/utils/doubly-linked-list.ts +2 -0
  161. package/src/utils/managed-array.ts +2 -0
@@ -0,0 +1,74 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {ReadonlyCRSDefinition, SpatialReferenceCoordinateFrame} from '@math.gl/crs';
6
+
7
+ const GEOGRAPHIC_CRS = 'EPSG:4326';
8
+ const GEOCENTRIC_CRS = 'EPSG:4978';
9
+
10
+ /** Normalize common OGC URL and URN CRS spellings to authority identifiers. */
11
+ function normalizeCrsIdentifier(identifier: string): string {
12
+ const normalizedIdentifier = identifier.trim().toUpperCase();
13
+ const ogcMatch = normalizedIdentifier.match(
14
+ /(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/
15
+ );
16
+ return ogcMatch ? `${ogcMatch[1]}:${ogcMatch[2]}` : normalizedIdentifier;
17
+ }
18
+
19
+ /**
20
+ * Classify a CRS definition into the broad coordinate frame used by 3D format adapters.
21
+ *
22
+ * @param definition - CRS definition to classify.
23
+ * @returns The broad geographic, geocentric, projected, local, or unknown frame.
24
+ */
25
+ export function getSpatialCoordinateFrame(
26
+ definition: ReadonlyCRSDefinition
27
+ ): SpatialReferenceCoordinateFrame {
28
+ if (typeof definition === 'string') {
29
+ const normalized = normalizeCrsIdentifier(definition);
30
+ if (normalized === GEOCENTRIC_CRS || /^GEOCCS\s*[\[(]/.test(normalized)) {
31
+ return 'geocentric';
32
+ }
33
+ if (
34
+ normalized === GEOGRAPHIC_CRS ||
35
+ normalized === 'EPSG:4490' ||
36
+ normalized === 'EPSG:4979' ||
37
+ normalized === 'OGC:CRS84' ||
38
+ normalized.includes('+PROJ=LONGLAT') ||
39
+ normalized.includes('+PROJ=LATLONG') ||
40
+ /^(?:GEOGCS|GEOGCRS|GEOGRAPHICCRS|GEOGRAPHIC2DCRS|GEOGRAPHIC3DCRS)\s*[\[(]/.test(normalized)
41
+ ) {
42
+ return 'geographic';
43
+ }
44
+ if (/^(?:GEODCRS|GEODETICCRS)\s*[\[(]/.test(normalized)) {
45
+ return /CS\s*[\[(]\s*CARTESIAN/.test(normalized) ? 'geocentric' : 'geographic';
46
+ }
47
+ return 'projected';
48
+ }
49
+
50
+ const projJsonDefinition = definition as {
51
+ type?: string;
52
+ source_crs?: ReadonlyCRSDefinition;
53
+ components?: readonly ReadonlyCRSDefinition[];
54
+ coordinate_system?: {subtype?: string};
55
+ };
56
+ if (projJsonDefinition.type === 'BoundCRS' && projJsonDefinition.source_crs) {
57
+ return getSpatialCoordinateFrame(projJsonDefinition.source_crs);
58
+ }
59
+ if (projJsonDefinition.type === 'CompoundCRS' && projJsonDefinition.components?.[0]) {
60
+ return getSpatialCoordinateFrame(projJsonDefinition.components[0]);
61
+ }
62
+ if (String(projJsonDefinition.type).includes('Projected')) {
63
+ return 'projected';
64
+ }
65
+ if (String(projJsonDefinition.type).includes('Geographic')) {
66
+ return 'geographic';
67
+ }
68
+ if (String(projJsonDefinition.type).includes('Geodetic')) {
69
+ return projJsonDefinition.coordinate_system?.subtype === 'Cartesian'
70
+ ? 'geocentric'
71
+ : 'geographic';
72
+ }
73
+ return 'projected';
74
+ }
@@ -0,0 +1,96 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ const LINEAR_UNIT_TO_METERS: Readonly<Record<string, number>> = Object.freeze({
6
+ meter: 1,
7
+ millimeter: 0.001,
8
+ centimeter: 0.01,
9
+ decimeter: 0.1,
10
+ kilometer: 1000,
11
+ foot: 0.3048,
12
+ yard: 0.9144,
13
+ mile: 1609.344,
14
+ 'us-foot': 1200 / 3937,
15
+ 'us-inch': 0.0254000508001016,
16
+ 'us-yard': 3600 / 3937,
17
+ 'us-mile': 6336000 / 3937,
18
+ 'clarke-foot': 0.3047972654,
19
+ 'clarke-yard': 0.9143917962,
20
+ 'clarke-link': 0.201166195164,
21
+ 'sears-yard': 0.914398414616,
22
+ 'sears-foot': 0.304799471539,
23
+ 'sears-chain': 20.1167651216,
24
+ 'sears-1922-truncated-chain': 20.116756,
25
+ 'benoit-1895-b-chain': 20.1167824944,
26
+ 'indian-yard': 0.914398530744,
27
+ 'indian-1937-yard': 0.91439523,
28
+ 'gold-coast-foot': 0.304799710181
29
+ });
30
+
31
+ const LINEAR_UNIT_ALIASES: Readonly<Record<string, string>> = Object.freeze({
32
+ m: 'meter',
33
+ metre: 'meter',
34
+ meters: 'meter',
35
+ metres: 'meter',
36
+ mm: 'millimeter',
37
+ millimetre: 'millimeter',
38
+ millimeters: 'millimeter',
39
+ millimetres: 'millimeter',
40
+ cm: 'centimeter',
41
+ centimetre: 'centimeter',
42
+ centimeters: 'centimeter',
43
+ centimetres: 'centimeter',
44
+ dm: 'decimeter',
45
+ decimetre: 'decimeter',
46
+ decimeters: 'decimeter',
47
+ decimetres: 'decimeter',
48
+ km: 'kilometer',
49
+ kilometre: 'kilometer',
50
+ kilometers: 'kilometer',
51
+ kilometres: 'kilometer',
52
+ ft: 'foot',
53
+ feet: 'foot',
54
+ 'us-survey-foot': 'us-foot',
55
+ 'us-survey-feet': 'us-foot',
56
+ yd: 'yard',
57
+ yards: 'yard',
58
+ mi: 'mile',
59
+ miles: 'mile'
60
+ });
61
+
62
+ /**
63
+ * Resolves an ArcGIS/I3S linear unit to meters.
64
+ *
65
+ * @param unit - I3S `heightUnit`, `elevationInfo.unit`, or provider unit.
66
+ * @returns Meters per unit, or `undefined` when the declaration is unsupported.
67
+ */
68
+ export function getI3SLinearUnitScale(unit: string | undefined): number | undefined {
69
+ if (!unit) {
70
+ return undefined;
71
+ }
72
+ const normalized = unit.trim().toLowerCase().replaceAll('_', '-');
73
+ const canonical = LINEAR_UNIT_ALIASES[normalized] || normalized;
74
+ return LINEAR_UNIT_TO_METERS[canonical];
75
+ }
76
+
77
+ /**
78
+ * Resolves the source-Z conversion declared by an I3S layer.
79
+ *
80
+ * Legacy `ZFactor` is an explicit conversion to meters and takes precedence over the descriptive
81
+ * `heightUnit`. This avoids applying the same feet-to-meters conversion twice on layers that
82
+ * publish both fields.
83
+ *
84
+ * @param heightUnit - Unit declared by `heightModelInfo.heightUnit`.
85
+ * @param zFactor - Legacy layer conversion factor.
86
+ * @returns Meters per stored Z unit, or `undefined` for an invalid declaration.
87
+ */
88
+ export function getI3SVerticalUnitScale(
89
+ heightUnit: string | undefined,
90
+ zFactor: number | undefined
91
+ ): number | undefined {
92
+ if (zFactor !== undefined) {
93
+ return Number.isFinite(zFactor) && zFactor > 0 ? zFactor : undefined;
94
+ }
95
+ return heightUnit ? getI3SLinearUnitScale(heightUnit) : 1;
96
+ }