@ifc-lite/pointcloud 0.9.0 → 0.11.0
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/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/spatial-wkt.d.ts +14 -0
- package/dist/spatial-wkt.d.ts.map +1 -0
- package/dist/spatial-wkt.js +106 -0
- package/dist/spatial-wkt.js.map +1 -0
- package/dist/streaming/e57-logical-range.d.ts +23 -0
- package/dist/streaming/e57-logical-range.d.ts.map +1 -0
- package/dist/streaming/e57-logical-range.js +54 -0
- package/dist/streaming/e57-logical-range.js.map +1 -0
- package/dist/streaming/e57-metadata.d.ts +8 -0
- package/dist/streaming/e57-metadata.d.ts.map +1 -0
- package/dist/streaming/e57-metadata.js +44 -0
- package/dist/streaming/e57-metadata.js.map +1 -0
- package/dist/streaming/e57-source.d.ts +2 -0
- package/dist/streaming/e57-source.d.ts.map +1 -1
- package/dist/streaming/e57-source.js +21 -34
- package/dist/streaming/e57-source.js.map +1 -1
- package/dist/streaming/inline-worker.js +1 -1
- package/dist/streaming/types.d.ts +10 -0
- package/dist/streaming/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -12,12 +12,13 @@ export { decodePointsArray, decodePointsBase64, type PointsArrayAttribute, type
|
|
|
12
12
|
export { decompressLZF } from './lzf.js';
|
|
13
13
|
export { POINTCLOUD_ATTR, POINTCLOUD_ATTR_KEYS, decodeIfcxPointAttribute, } from './from-ifcx-attributes.js';
|
|
14
14
|
export { parseLasHeader, decodeLasPoints, sampleMaxRgbChannel, type LasHeader, } from './formats/las.js';
|
|
15
|
-
export type { StreamingPointSource, PointSourceInfo, DownsampleHint, } from './streaming/types.js';
|
|
15
|
+
export type { StreamingPointSource, PointSourceInfo, PointSourceSpatialMetadata, DownsampleHint, } from './streaming/types.js';
|
|
16
16
|
export { LasStreamingSource } from './streaming/las-source.js';
|
|
17
17
|
export { LazStreamingSource, probeLazPerfWasmLoad } from './streaming/laz-source.js';
|
|
18
18
|
export { PlyStreamingSource } from './streaming/ply-source.js';
|
|
19
19
|
export { PcdStreamingSource } from './streaming/pcd-source.js';
|
|
20
|
-
export { E57StreamingSource } from './streaming/e57-source.js';
|
|
20
|
+
export { E57StreamingSource, inspectE57SpatialMetadata } from './streaming/e57-source.js';
|
|
21
|
+
export { extractWktCrsIdentifiers, extractWktSpatialMetadata, type WktAxisDirection, type WktCrsIdentifiers, type WktSpatialMetadata, } from './spatial-wkt.js';
|
|
21
22
|
export { AsciiPointsStreamingSource } from './streaming/ascii-points-source.js';
|
|
22
23
|
export { decodeAsciiPoints, decodeAsciiPointsFromText, probeAsciiPointsLayout, type AsciiPointsFormat, type AsciiPointsLayout, } from './formats/ascii-points.js';
|
|
23
24
|
export { parsePlyHeader, decodePly } from './formats/ply.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,IAAI,eAAe,EAC/B,SAAS,EACT,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,8 @@ export { LasStreamingSource } from './streaming/las-source.js';
|
|
|
12
12
|
export { LazStreamingSource, probeLazPerfWasmLoad } from './streaming/laz-source.js';
|
|
13
13
|
export { PlyStreamingSource } from './streaming/ply-source.js';
|
|
14
14
|
export { PcdStreamingSource } from './streaming/pcd-source.js';
|
|
15
|
-
export { E57StreamingSource } from './streaming/e57-source.js';
|
|
15
|
+
export { E57StreamingSource, inspectE57SpatialMetadata } from './streaming/e57-source.js';
|
|
16
|
+
export { extractWktCrsIdentifiers, extractWktSpatialMetadata, } from './spatial-wkt.js';
|
|
16
17
|
export { AsciiPointsStreamingSource } from './streaming/ascii-points-source.js';
|
|
17
18
|
export { decodeAsciiPoints, decodeAsciiPointsFromText, probeAsciiPointsLayout, } from './formats/ascii-points.js';
|
|
18
19
|
export { parsePlyHeader, decodePly } from './formats/ply.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,mCAAmC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,wBAAwB;AACxB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,GAEpB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,mCAAmC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,wBAAwB;AACxB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,GAEpB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,GAGvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,IAAI,eAAe,EAC/B,SAAS,EACT,aAAa,GAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,wBAAwB,GAIzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAE7B,qCAAqC;AACrC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,GAE3B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Explicit CRS identifiers read from WKT1/WKT2 without guessing a CRS. */
|
|
2
|
+
export interface WktCrsIdentifiers {
|
|
3
|
+
horizontalId?: string;
|
|
4
|
+
verticalId?: string;
|
|
5
|
+
}
|
|
6
|
+
export type WktAxisDirection = 'east' | 'west' | 'north' | 'south' | 'up' | 'down';
|
|
7
|
+
export interface WktSpatialMetadata extends WktCrsIdentifiers {
|
|
8
|
+
axes?: readonly [WktAxisDirection, WktAxisDirection, WktAxisDirection];
|
|
9
|
+
horizontalUnitToMetres?: number;
|
|
10
|
+
verticalUnitToMetres?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function extractWktSpatialMetadata(wkt: string): WktSpatialMetadata;
|
|
13
|
+
export declare function extractWktCrsIdentifiers(wkt: string): WktCrsIdentifiers;
|
|
14
|
+
//# sourceMappingURL=spatial-wkt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial-wkt.d.ts","sourceRoot":"","sources":["../src/spatial-wkt.ts"],"names":[],"mappings":"AAIA,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAAG,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACjF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AACnF,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,CAAC,EAAE,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACvE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAsED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAwBzE;AACD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAGvE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** Balanced lexical nodes; metadata is read only from direct owned children. */
|
|
5
|
+
function nodes(text) {
|
|
6
|
+
const result = [];
|
|
7
|
+
for (let index = 0; index < text.length;) {
|
|
8
|
+
const match = /([A-Za-z_][A-Za-z_0-9]*)\s*\[/.exec(text.slice(index));
|
|
9
|
+
if (!match)
|
|
10
|
+
break;
|
|
11
|
+
const start = index + match.index, bodyStart = start + match[0].length;
|
|
12
|
+
let depth = 1, quote = false, cursor = bodyStart;
|
|
13
|
+
for (; cursor < text.length && depth > 0; cursor += 1) {
|
|
14
|
+
const char = text[cursor];
|
|
15
|
+
if (char === '"')
|
|
16
|
+
quote = !quote;
|
|
17
|
+
else if (!quote && char === '[')
|
|
18
|
+
depth += 1;
|
|
19
|
+
else if (!quote && char === ']')
|
|
20
|
+
depth -= 1;
|
|
21
|
+
}
|
|
22
|
+
if (depth !== 0)
|
|
23
|
+
break;
|
|
24
|
+
result.push({ name: match[1].toUpperCase(), body: text.slice(bodyStart, cursor - 1) });
|
|
25
|
+
index = cursor;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
function direct(body, names) {
|
|
30
|
+
const allowed = new Set(names);
|
|
31
|
+
return nodes(body).find((node) => allowed.has(node.name));
|
|
32
|
+
}
|
|
33
|
+
function root(wkt) { return nodes(wkt)[0]; }
|
|
34
|
+
function epsg(node) {
|
|
35
|
+
const owned = node && direct(node.body, ['ID', 'AUTHORITY']);
|
|
36
|
+
const code = owned?.body.match(/^\s*["']EPSG["']\s*,\s*["']?(\d+)/i)?.[1];
|
|
37
|
+
return code ? `EPSG:${code}` : undefined;
|
|
38
|
+
}
|
|
39
|
+
function axes(node) {
|
|
40
|
+
return node ? nodes(node.body).filter((child) => child.name === 'AXIS')
|
|
41
|
+
.map((child) => /^[^,]*,\s*(east|west|north|south|up|down)\b/i.exec(child.body)?.[1]?.toLowerCase())
|
|
42
|
+
.filter((value) => value !== undefined) : [];
|
|
43
|
+
}
|
|
44
|
+
function unitFactor(node) {
|
|
45
|
+
const number = Number(node && /,\s*([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i.exec(node.body)?.[1]);
|
|
46
|
+
return Number.isFinite(number) && number > 0 ? number : undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* WKT2 allows LENGTHUNIT to belong to each AXIS rather than to the CRS. Keep
|
|
50
|
+
* every owned candidate: picking the first silently turns a conflicting CRS
|
|
51
|
+
* declaration into metres (or whichever axis happened to be first).
|
|
52
|
+
*/
|
|
53
|
+
function unit(node) {
|
|
54
|
+
if (!node)
|
|
55
|
+
return undefined;
|
|
56
|
+
// WKT1 GEOGCS owns an angular UNIT. It must never be interpreted as a
|
|
57
|
+
// metres-per-coordinate factor for a point cloud.
|
|
58
|
+
const names = node.name === 'GEOGCS' || node.name === 'GEOGCRS'
|
|
59
|
+
? ['LENGTHUNIT']
|
|
60
|
+
: ['LENGTHUNIT', 'UNIT'];
|
|
61
|
+
const candidates = [
|
|
62
|
+
...nodes(node.body)
|
|
63
|
+
.filter((child) => names.includes(child.name))
|
|
64
|
+
.map(unitFactor),
|
|
65
|
+
...nodes(node.body)
|
|
66
|
+
.filter((child) => child.name === 'AXIS')
|
|
67
|
+
.flatMap((axis) => nodes(axis.body)
|
|
68
|
+
.filter((child) => names.includes(child.name))
|
|
69
|
+
.map(unitFactor)),
|
|
70
|
+
];
|
|
71
|
+
if (candidates.length === 0 || candidates.some((value) => value === undefined))
|
|
72
|
+
return undefined;
|
|
73
|
+
const first = candidates[0];
|
|
74
|
+
return candidates.every((value) => value === first) ? first : undefined;
|
|
75
|
+
}
|
|
76
|
+
export function extractWktSpatialMetadata(wkt) {
|
|
77
|
+
const document = root(wkt);
|
|
78
|
+
if (!document)
|
|
79
|
+
return {};
|
|
80
|
+
const compound = ['COMPOUNDCRS', 'COMPD_CS'].includes(document.name) ? document : undefined;
|
|
81
|
+
const scope = compound?.body ?? wkt;
|
|
82
|
+
// E57 coordinateMetadata commonly stores adjacent top-level PROJCRS and
|
|
83
|
+
// VERTCRS nodes rather than wrapping them in COMPOUNDCRS.
|
|
84
|
+
const horizontal = direct(scope, ['PROJCRS', 'PROJCS', 'GEOGCRS', 'GEOGCS']);
|
|
85
|
+
const vertical = direct(scope, ['VERTCRS', 'VERT_CS']);
|
|
86
|
+
const horizontalAxes = axes(horizontal).filter((value) => value !== 'up' && value !== 'down');
|
|
87
|
+
// LAS has a third Z ordinate; when WKT describes only its horizontal CRS,
|
|
88
|
+
// retain its documented positive-height convention rather than borrowing a
|
|
89
|
+
// nested GEOGCS axis. A declared VERTCRS still owns the direction.
|
|
90
|
+
const verticalAxis = axes(vertical ?? horizontal).find((value) => value === 'up' || value === 'down')
|
|
91
|
+
?? (!vertical ? 'up' : undefined);
|
|
92
|
+
const frame = horizontalAxes.length === 2 && new Set(horizontalAxes).size === 2 && verticalAxis
|
|
93
|
+
? [horizontalAxes[0], horizontalAxes[1], verticalAxis] : undefined;
|
|
94
|
+
const horizontalId = epsg(horizontal), verticalId = epsg(vertical);
|
|
95
|
+
const horizontalUnitToMetres = unit(horizontal), verticalUnitToMetres = unit(vertical);
|
|
96
|
+
return {
|
|
97
|
+
...(horizontalId ? { horizontalId } : {}), ...(verticalId ? { verticalId } : {}),
|
|
98
|
+
...(frame ? { axes: frame } : {}), ...(horizontalUnitToMetres ? { horizontalUnitToMetres } : {}),
|
|
99
|
+
...(verticalUnitToMetres ? { verticalUnitToMetres } : {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function extractWktCrsIdentifiers(wkt) {
|
|
103
|
+
const { horizontalId, verticalId } = extractWktSpatialMetadata(wkt);
|
|
104
|
+
return { ...(horizontalId ? { horizontalId } : {}), ...(verticalId ? { verticalId } : {}) };
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=spatial-wkt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial-wkt.js","sourceRoot":"","sources":["../src/spatial-wkt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BlobByteSource } from './blob-source.js';
|
|
2
|
+
export declare function throwIfAborted(signal?: AbortSignal): void;
|
|
3
|
+
/** Read a bounded logical range from CRC-paged E57 storage.
|
|
4
|
+
*
|
|
5
|
+
* `BlobByteSource.read` silently clamps to the blob's actual size (see its
|
|
6
|
+
* doc comment) — a file whose header/XML declares a longer logical range
|
|
7
|
+
* than the body backs (a truncated download, an interrupted upload) yields
|
|
8
|
+
* a SHORT slice here with no error. Most callers tolerate that: the
|
|
9
|
+
* CompressedVector point-data window in `E57StreamingSource.next()` treats
|
|
10
|
+
* a short/empty window as "no more bytes for this scan" and trims its
|
|
11
|
+
* output instead of fabricating points — the same documented policy as an
|
|
12
|
+
* over-reported `recordCount` (see that class's `next()`). Passing
|
|
13
|
+
* `{ strict: true }` opts a caller OUT of that tolerance: it asserts the
|
|
14
|
+
* full requested range was actually read and throws, naming expected vs.
|
|
15
|
+
* actual byte counts, otherwise. Use it for control-plane reads (the XML
|
|
16
|
+
* metadata section) where a short read must be reported as truncation
|
|
17
|
+
* rather than silently absorbed — see `E57StreamingSource.open()` and
|
|
18
|
+
* `inspectE57SpatialMetadata`, the two callers that pass it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function readE57LogicalRange(src: BlobByteSource, logStart: number, logLength: number, pageSize: number, signal?: AbortSignal, options?: {
|
|
21
|
+
strict?: boolean;
|
|
22
|
+
}): Promise<Uint8Array>;
|
|
23
|
+
//# sourceMappingURL=e57-logical-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e57-logical-range.d.ts","sourceRoot":"","sources":["../../src/streaming/e57-logical-range.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAEzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,UAAU,CAAC,CA4BrB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { stripPageCrc } from '../formats/e57-page.js';
|
|
5
|
+
export function throwIfAborted(signal) {
|
|
6
|
+
if (signal?.aborted)
|
|
7
|
+
throw new DOMException('Aborted', 'AbortError');
|
|
8
|
+
}
|
|
9
|
+
/** Read a bounded logical range from CRC-paged E57 storage.
|
|
10
|
+
*
|
|
11
|
+
* `BlobByteSource.read` silently clamps to the blob's actual size (see its
|
|
12
|
+
* doc comment) — a file whose header/XML declares a longer logical range
|
|
13
|
+
* than the body backs (a truncated download, an interrupted upload) yields
|
|
14
|
+
* a SHORT slice here with no error. Most callers tolerate that: the
|
|
15
|
+
* CompressedVector point-data window in `E57StreamingSource.next()` treats
|
|
16
|
+
* a short/empty window as "no more bytes for this scan" and trims its
|
|
17
|
+
* output instead of fabricating points — the same documented policy as an
|
|
18
|
+
* over-reported `recordCount` (see that class's `next()`). Passing
|
|
19
|
+
* `{ strict: true }` opts a caller OUT of that tolerance: it asserts the
|
|
20
|
+
* full requested range was actually read and throws, naming expected vs.
|
|
21
|
+
* actual byte counts, otherwise. Use it for control-plane reads (the XML
|
|
22
|
+
* metadata section) where a short read must be reported as truncation
|
|
23
|
+
* rather than silently absorbed — see `E57StreamingSource.open()` and
|
|
24
|
+
* `inspectE57SpatialMetadata`, the two callers that pass it.
|
|
25
|
+
*/
|
|
26
|
+
export async function readE57LogicalRange(src, logStart, logLength, pageSize, signal, options) {
|
|
27
|
+
throwIfAborted(signal);
|
|
28
|
+
// A NaN offset or length compares false against every bound below, so it
|
|
29
|
+
// would fall through as a "successful" empty read, even in strict mode.
|
|
30
|
+
if (!Number.isFinite(logStart) || !Number.isFinite(logLength)) {
|
|
31
|
+
throw new Error(`E57: invalid logical range (offset ${logStart}, length ${logLength})`);
|
|
32
|
+
}
|
|
33
|
+
if (logLength <= 0)
|
|
34
|
+
return new Uint8Array(0);
|
|
35
|
+
const payloadPerPage = pageSize - 4;
|
|
36
|
+
const firstPage = Math.floor(logStart / payloadPerPage);
|
|
37
|
+
const logicalPageStart = firstPage * payloadPerPage;
|
|
38
|
+
const physicalStart = firstPage * pageSize;
|
|
39
|
+
const logEnd = logStart + logLength;
|
|
40
|
+
const lastPage = Math.floor((logEnd - 1) / payloadPerPage);
|
|
41
|
+
const physical = await src.read(physicalStart, (lastPage + 1) * pageSize);
|
|
42
|
+
throwIfAborted(signal);
|
|
43
|
+
const logical = physical.length === 0 ? new Uint8Array(0) : stripPageCrc(physical, pageSize);
|
|
44
|
+
const rel = logStart - logicalPageStart;
|
|
45
|
+
const result = rel >= logical.length
|
|
46
|
+
? new Uint8Array(0)
|
|
47
|
+
: logical.subarray(rel, Math.min(rel + logLength, logical.length));
|
|
48
|
+
if (options?.strict && result.length < logLength) {
|
|
49
|
+
throw new Error(`E57: logical range read expects ${logLength} bytes at logical offset ${logStart}, `
|
|
50
|
+
+ `got ${result.length} — file truncated?`);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=e57-logical-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e57-logical-range.js","sourceRoot":"","sources":["../../src/streaming/e57-logical-range.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAmB,EACnB,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,MAAoB,EACpB,OAA8B;IAE9B,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,YAAY,SAAS,GAAG,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAAC;IACpD,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1E,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7F,MAAM,GAAG,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM;QAClC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,mCAAmC,SAAS,4BAA4B,QAAQ,IAAI;cAClF,OAAO,MAAM,CAAC,MAAM,oBAAoB,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PointSourceSpatialMetadata } from './types.js';
|
|
2
|
+
/** XML is control-plane metadata; a larger section is rejected before allocation. */
|
|
3
|
+
export declare const MAX_E57_XML_METADATA_BYTES: number;
|
|
4
|
+
export declare function spatialMetadataFromE57Xml(xml: string): PointSourceSpatialMetadata | undefined;
|
|
5
|
+
/** Read only the header and bounded XML metadata; no point packet is decoded. */
|
|
6
|
+
export declare function inspectE57SpatialMetadata(blob: Blob, signal?: AbortSignal): Promise<PointSourceSpatialMetadata | undefined>;
|
|
7
|
+
export declare function assertE57XmlMetadataBounds(xmlLength: number, logicalSize: number): void;
|
|
8
|
+
//# sourceMappingURL=e57-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e57-metadata.d.ts","sourceRoot":"","sources":["../../src/streaming/e57-metadata.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,0BAA0B,QAAW,CAAC;AAEnD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS,CAI7F;AAWD,iFAAiF;AACjF,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAgBjI;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEvF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { parseE57FileHeader, physicalToLogical } from '../formats/e57-page.js';
|
|
5
|
+
import { extractWktCrsIdentifiers } from '../spatial-wkt.js';
|
|
6
|
+
import { BlobByteSource } from './blob-source.js';
|
|
7
|
+
import { readE57LogicalRange, throwIfAborted } from './e57-logical-range.js';
|
|
8
|
+
/** XML is control-plane metadata; a larger section is rejected before allocation. */
|
|
9
|
+
export const MAX_E57_XML_METADATA_BYTES = 16 << 20;
|
|
10
|
+
export function spatialMetadataFromE57Xml(xml) {
|
|
11
|
+
const text = /<\s*(?:\w+:)?coordinateMetadata\b[^>]*>([\s\S]*?)<\/\s*(?:\w+:)?coordinateMetadata\s*>/i.exec(xml)?.[1];
|
|
12
|
+
if (!text)
|
|
13
|
+
return undefined;
|
|
14
|
+
return { ...extractWktCrsIdentifiers(text), wkt: text, provenance: 'E57 coordinateMetadata' };
|
|
15
|
+
}
|
|
16
|
+
function assertBoundedXml(xmlLength, logicalSize) {
|
|
17
|
+
if (!Number.isSafeInteger(xmlLength) || xmlLength < 0 || xmlLength > MAX_E57_XML_METADATA_BYTES) {
|
|
18
|
+
throw new Error(`E57: XML metadata length ${xmlLength} exceeds ${MAX_E57_XML_METADATA_BYTES} byte safety limit`);
|
|
19
|
+
}
|
|
20
|
+
if (!Number.isSafeInteger(logicalSize) || logicalSize < 0 || xmlLength > logicalSize) {
|
|
21
|
+
throw new Error('E57: XML metadata range exceeds declared logical file size');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Read only the header and bounded XML metadata; no point packet is decoded. */
|
|
25
|
+
export async function inspectE57SpatialMetadata(blob, signal) {
|
|
26
|
+
const bytes = new BlobByteSource(blob);
|
|
27
|
+
throwIfAborted(signal);
|
|
28
|
+
const headerBytes = await bytes.read(0, 64);
|
|
29
|
+
throwIfAborted(signal);
|
|
30
|
+
const header = parseE57FileHeader(headerBytes);
|
|
31
|
+
if (header.pageSize <= 4)
|
|
32
|
+
throw new Error(`E57: invalid pageSize ${header.pageSize}`);
|
|
33
|
+
const logicalSize = header.fileLogicalSize > 0 ? header.fileLogicalSize : physicalToLogical(bytes.size, header.pageSize);
|
|
34
|
+
assertBoundedXml(header.xmlLogicalLength, logicalSize);
|
|
35
|
+
// `strict: true` — a short read here must surface as truncation, not as
|
|
36
|
+
// "no CRS": see the cross-caller doc on `readE57LogicalRange`.
|
|
37
|
+
const xml = await readE57LogicalRange(bytes, header.xmlLogicalOffset, header.xmlLogicalLength, header.pageSize, signal, { strict: true });
|
|
38
|
+
throwIfAborted(signal);
|
|
39
|
+
return spatialMetadataFromE57Xml(new TextDecoder().decode(xml));
|
|
40
|
+
}
|
|
41
|
+
export function assertE57XmlMetadataBounds(xmlLength, logicalSize) {
|
|
42
|
+
assertBoundedXml(xmlLength, logicalSize);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=e57-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e57-metadata.js","sourceRoot":"","sources":["../../src/streaming/e57-metadata.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7E,qFAAqF;AACrF,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,IAAI,EAAE,CAAC;AAEnD,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,MAAM,IAAI,GAAG,yFAAyF,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtH,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB,EAAE,WAAmB;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,0BAA0B,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,YAAY,0BAA0B,oBAAoB,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,WAAW,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU,EAAE,MAAoB;IAC9E,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzH,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACvD,wEAAwE;IACxE,+DAA+D;IAC/D,MAAM,GAAG,GAAG,MAAM,mBAAmB,CACnC,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CACnG,CAAC;IACF,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,yBAAyB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAiB,EAAE,WAAmB;IAC/E,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { DecodedPointChunk } from '../types.js';
|
|
22
22
|
import type { DownsampleHint, PointSourceInfo, StreamingPointSource } from './types.js';
|
|
23
|
+
export { inspectE57SpatialMetadata } from './e57-metadata.js';
|
|
23
24
|
export declare class E57StreamingSource implements StreamingPointSource {
|
|
24
25
|
private bytes;
|
|
25
26
|
private downsample;
|
|
@@ -38,6 +39,7 @@ export declare class E57StreamingSource implements StreamingPointSource {
|
|
|
38
39
|
private hasColor;
|
|
39
40
|
private hasIntensity;
|
|
40
41
|
private hasClassification;
|
|
42
|
+
private spatialMetadata?;
|
|
41
43
|
private scanIdx;
|
|
42
44
|
private logCursor;
|
|
43
45
|
/** Records consumed of the CURRENT scan (resets at each scan boundary). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-source.d.ts","sourceRoot":"","sources":["../../src/streaming/e57-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"e57-source.d.ts","sourceRoot":"","sources":["../../src/streaming/e57-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwBrD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAEf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA6B9D,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,yEAAyE;IACzE,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC;;yDAEqD;IACrD,OAAO,CAAC,YAAY,CAAC,CAAoC;IAEzD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAA6B;IAGrD,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAAK;IAC3B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAK;gBAGzB,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7C;IASF,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAgEpD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA+HtF,KAAK,IAAI,IAAI;IASb;;;;OAIG;YACW,iBAAiB;IAwB/B,wEAAwE;IACxE,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,MAAM;CAkBf"}
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { computeBBox, decodeE57Packet, peekPacketHeader, resolveScanFields, } from '../formats/e57-decode.js';
|
|
5
5
|
import { applyPoseInPlace } from '../formats/e57.js';
|
|
6
|
-
import { parseE57FileHeader, physicalToLogical, readU64LE,
|
|
6
|
+
import { parseE57FileHeader, physicalToLogical, readU64LE, } from '../formats/e57-page.js';
|
|
7
7
|
import { parseE57Xml, } from '../formats/e57-xml.js';
|
|
8
8
|
import { BlobByteSource } from './blob-source.js';
|
|
9
|
+
import { assertE57XmlMetadataBounds, spatialMetadataFromE57Xml } from './e57-metadata.js';
|
|
10
|
+
import { readE57LogicalRange } from './e57-logical-range.js';
|
|
11
|
+
export { inspectE57SpatialMetadata } from './e57-metadata.js';
|
|
9
12
|
/** 1 MiB — always ≥ any single packet (E57 packets are ≤ 64 KiB). */
|
|
10
13
|
const MIN_WINDOW_BYTES = 1 << 20;
|
|
11
14
|
/** 16 MiB — caps peak window memory per `next()`. */
|
|
@@ -28,6 +31,7 @@ export class E57StreamingSource {
|
|
|
28
31
|
hasColor = false;
|
|
29
32
|
hasIntensity = false;
|
|
30
33
|
hasClassification = false;
|
|
34
|
+
spatialMetadata;
|
|
31
35
|
// Streaming cursor.
|
|
32
36
|
scanIdx = 0;
|
|
33
37
|
logCursor = 0;
|
|
@@ -64,9 +68,16 @@ export class E57StreamingSource {
|
|
|
64
68
|
this.fileLogicalSize = header.fileLogicalSize > 0
|
|
65
69
|
? header.fileLogicalSize
|
|
66
70
|
: physicalToLogical(this.bytes.size, header.pageSize);
|
|
67
|
-
|
|
71
|
+
assertE57XmlMetadataBounds(header.xmlLogicalLength, this.fileLogicalSize);
|
|
72
|
+
// `strict: true` — same hazard, same fix, as `inspectE57SpatialMetadata`:
|
|
73
|
+
// a truncated blob must not present as "no CRS". See the cross-caller
|
|
74
|
+
// doc on `readE57LogicalRange`. The point-data reads in `next()` below
|
|
75
|
+
// stay non-strict — they tolerate a short/empty window deliberately,
|
|
76
|
+
// the same documented policy as an over-reported `recordCount`.
|
|
77
|
+
const xmlLogical = await readE57LogicalRange(this.bytes, header.xmlLogicalOffset, header.xmlLogicalLength, header.pageSize, signal, { strict: true });
|
|
68
78
|
abortIfAborted(signal);
|
|
69
79
|
const xmlText = new TextDecoder().decode(xmlLogical);
|
|
80
|
+
this.spatialMetadata = spatialMetadataFromE57Xml(xmlText);
|
|
70
81
|
const entries = parseE57Xml(xmlText);
|
|
71
82
|
if (entries.length === 0) {
|
|
72
83
|
throw new Error('E57: file contains no Data3D scans');
|
|
@@ -139,7 +150,7 @@ export class E57StreamingSource {
|
|
|
139
150
|
this.recordsWritten = scan.recordCount;
|
|
140
151
|
continue;
|
|
141
152
|
}
|
|
142
|
-
let window = await
|
|
153
|
+
let window = await readE57LogicalRange(this.bytes, this.logCursor, windowLen, this.pageSize);
|
|
143
154
|
abortIfAborted(signal);
|
|
144
155
|
if (window.length === 0) {
|
|
145
156
|
this.recordsWritten = scan.recordCount;
|
|
@@ -154,7 +165,7 @@ export class E57StreamingSource {
|
|
|
154
165
|
const peek0 = peekPacketHeader(view, 0);
|
|
155
166
|
const atEof = this.logCursor + window.length >= this.fileLogicalSize;
|
|
156
167
|
if (peek0.packetLength > window.length && !atEof) {
|
|
157
|
-
window = await
|
|
168
|
+
window = await readE57LogicalRange(this.bytes, this.logCursor, peek0.packetLength, this.pageSize);
|
|
158
169
|
abortIfAborted(signal);
|
|
159
170
|
view = new DataView(window.buffer, window.byteOffset, window.byteLength);
|
|
160
171
|
}
|
|
@@ -230,7 +241,7 @@ export class E57StreamingSource {
|
|
|
230
241
|
*/
|
|
231
242
|
async resolveDataOffset(entry, pageSize, signal) {
|
|
232
243
|
const sectionLogical = physicalToLogical(entry.binaryFileOffset, pageSize);
|
|
233
|
-
const headerBytes = await
|
|
244
|
+
const headerBytes = await readE57LogicalRange(this.bytes, sectionLogical, 32, pageSize);
|
|
234
245
|
abortIfAborted(signal);
|
|
235
246
|
if (headerBytes.length < 32) {
|
|
236
247
|
throw new Error(`E57: CompressedVector section header at logical ${sectionLogical} runs past end of file`);
|
|
@@ -272,40 +283,16 @@ export class E57StreamingSource {
|
|
|
272
283
|
hasClassification: this.hasClassification,
|
|
273
284
|
hasIntensity: this.hasIntensity,
|
|
274
285
|
label: this.label,
|
|
286
|
+
...(this.spatialMetadata ? { spatialMetadata: this.spatialMetadata } : {}),
|
|
275
287
|
};
|
|
276
288
|
}
|
|
277
289
|
}
|
|
278
290
|
/**
|
|
279
|
-
* Read
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
* Returns fewer bytes than requested (or empty) near EOF — callers treat
|
|
284
|
-
* a short read as "scan ends here".
|
|
291
|
+
* Read only the E57 file header and CRC-paged XML section to discover declared
|
|
292
|
+
* CRS metadata before a caller chooses a decode origin. This deliberately
|
|
293
|
+
* shares `readLogicalRange` with the streaming source: metadata inspection is
|
|
294
|
+
* not a second decoder and never reads point packets.
|
|
285
295
|
*/
|
|
286
|
-
async function readLogicalRange(src, logStart, logLength, pageSize) {
|
|
287
|
-
if (logLength <= 0)
|
|
288
|
-
return new Uint8Array(0);
|
|
289
|
-
const payloadPerPage = pageSize - 4;
|
|
290
|
-
const firstPage = Math.floor(logStart / payloadPerPage);
|
|
291
|
-
const logicalPageStart = firstPage * payloadPerPage;
|
|
292
|
-
const physicalStart = firstPage * pageSize;
|
|
293
|
-
const logEnd = logStart + logLength;
|
|
294
|
-
// Page containing the last byte we need (inclusive).
|
|
295
|
-
const lastPage = Math.floor((logEnd - 1) / payloadPerPage);
|
|
296
|
-
const physicalEnd = (lastPage + 1) * pageSize; // exclusive; read() clamps to size
|
|
297
|
-
const physical = await src.read(physicalStart, physicalEnd);
|
|
298
|
-
if (physical.length === 0)
|
|
299
|
-
return new Uint8Array(0);
|
|
300
|
-
// `physical` starts on a page boundary, so stripPageCrc treats byte 0
|
|
301
|
-
// as a page start correctly. A clamped (EOF) tail is handled by
|
|
302
|
-
// stripPageCrc's partial-page logic.
|
|
303
|
-
const logical = stripPageCrc(physical, pageSize);
|
|
304
|
-
const rel = logStart - logicalPageStart;
|
|
305
|
-
if (rel >= logical.length)
|
|
306
|
-
return new Uint8Array(0);
|
|
307
|
-
return logical.subarray(rel, Math.min(rel + logLength, logical.length));
|
|
308
|
-
}
|
|
309
296
|
/**
|
|
310
297
|
* Take every `stride`-th record from a decoded packet (phased by the
|
|
311
298
|
* file-global record index `base` — the record's position in the merged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e57-source.js","sourceRoot":"","sources":["../../src/streaming/e57-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"e57-source.js","sourceRoot":"","sources":["../../src/streaming/e57-source.ts"],"names":[],"mappings":"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"}
|