@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.
- package/LICENSE +14 -3
- package/dist/dist.dev.js +17482 -3685
- package/dist/dist.min.js +4 -1
- package/dist/index.cjs +4594 -422
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -1
- package/dist/point-cloud/point-cloud-tile.js +3 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -1
- package/dist/point-cloud/point-cloud-tileset.d.ts +4 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -1
- package/dist/point-cloud/point-cloud-tileset.js +54 -12
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -1
- package/dist/point-cloud/types.d.ts +17 -0
- package/dist/point-cloud/types.d.ts.map +1 -1
- package/dist/point-cloud/types.js +3 -0
- package/dist/point-cloud/types.js.map +1 -1
- package/dist/raster-set.d.ts +37 -29
- package/dist/raster-set.d.ts.map +1 -1
- package/dist/raster-set.js +25 -2
- package/dist/raster-set.js.map +1 -1
- package/dist/spatial/format-spatial-reference.d.ts +67 -0
- package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
- package/dist/spatial/format-spatial-reference.js +233 -0
- package/dist/spatial/format-spatial-reference.js.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +9 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.js +58 -0
- package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
- package/dist/spatial/i3s-elevation.d.ts +20 -0
- package/dist/spatial/i3s-elevation.d.ts.map +1 -0
- package/dist/spatial/i3s-elevation.js +90 -0
- package/dist/spatial/i3s-elevation.js.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.js +686 -0
- package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts +48 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.js +211 -0
- package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
- package/dist/spatial/spatial-resource-registry.d.ts +44 -0
- package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
- package/dist/spatial/spatial-resource-registry.js +67 -0
- package/dist/spatial/spatial-resource-registry.js.map +1 -0
- package/dist/spatial/spatial-types.d.ts +190 -0
- package/dist/spatial/spatial-types.d.ts.map +1 -0
- package/dist/spatial/spatial-types.js +192 -0
- package/dist/spatial/spatial-types.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d.d.ts +147 -4
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tile-3d.js +358 -76
- package/dist/tileset-3d/common/tile-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.d.ts +168 -3
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-3d.js +306 -23
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts +11 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-cache.js +11 -3
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -1
- package/dist/tileset-3d/common/tileset-source.d.ts +32 -0
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-source.js.map +1 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts +19 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/common/tileset-traverser.js +39 -7
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +136 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +384 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +86 -3
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +196 -21
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +36 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +66 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +14 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-source.js +107 -17
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.js +3 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -1
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/bounding-volume.js +4 -33
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts +62 -2
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/frame-state.js +85 -9
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.js +20 -8
- package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +61 -9
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +198 -93
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -1
- package/package.json +12 -9
- package/src/index.ts +61 -1
- package/src/point-cloud/point-cloud-tile.ts +4 -0
- package/src/point-cloud/point-cloud-tileset.ts +70 -12
- package/src/point-cloud/types.ts +21 -0
- package/src/raster-set.ts +118 -45
- package/src/spatial/format-spatial-reference.ts +311 -0
- package/src/spatial/get-spatial-coordinate-frame.ts +74 -0
- package/src/spatial/i3s-elevation.ts +96 -0
- package/src/spatial/i3s-spatial-transformer.ts +957 -0
- package/src/spatial/spatial-coordinate-transformer.ts +276 -0
- package/src/spatial/spatial-resource-registry.ts +79 -0
- package/src/spatial/spatial-types.ts +422 -0
- package/src/tileset-3d/common/tile-3d.ts +435 -84
- package/src/tileset-3d/common/tileset-3d.ts +445 -23
- package/src/tileset-3d/common/tileset-cache.ts +15 -7
- package/src/tileset-3d/common/tileset-source.ts +36 -0
- package/src/tileset-3d/common/tileset-traverser.ts +40 -7
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +612 -0
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +254 -21
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +77 -0
- package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-source.ts +119 -18
- package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +4 -0
- package/src/tileset-3d/helpers/3d-tiles-options.ts +4 -0
- package/src/tileset-3d/helpers/bounding-volume.ts +5 -55
- package/src/tileset-3d/helpers/frame-state.ts +142 -11
- package/src/tileset-3d/helpers/i3s-lod.ts +22 -8
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +291 -112
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
- package/src/types.ts +9 -0
- package/src/utils/doubly-linked-list.ts +2 -0
- 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
|
+
}
|