@loaders.gl/pointclouds 0.0.0-stage → 5.0.0-beta.10
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/LAS-README.md +12 -0
- package/LICENSE +24 -0
- package/PCD-README.md +12 -0
- package/PLY-README.md +38 -0
- package/README.md +11 -2
- package/THIRD-PARTY-NOTICES.md +27 -0
- package/dist/dist.dev.js +31514 -0
- package/dist/dist.min.js +54 -0
- package/dist/index.cjs +55 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/las/bundled.cjs +69 -0
- package/dist/las/bundled.cjs.map +7 -0
- package/dist/las/bundled.d.ts +11 -0
- package/dist/las/bundled.d.ts.map +1 -0
- package/dist/las/bundled.js +11 -0
- package/dist/las/bundled.js.map +1 -0
- package/dist/las/index.cjs +75 -0
- package/dist/las/index.cjs.map +7 -0
- package/dist/las/index.d.ts +15 -0
- package/dist/las/index.d.ts.map +1 -0
- package/dist/las/index.js +12 -0
- package/dist/las/index.js.map +1 -0
- package/dist/las/las-copc-loader-types.cjs +49 -0
- package/dist/las/las-copc-loader-types.cjs.map +7 -0
- package/dist/las/las-copc-loader-types.d.ts +67 -0
- package/dist/las/las-copc-loader-types.d.ts.map +1 -0
- package/dist/las/las-copc-loader-types.js +14 -0
- package/dist/las/las-copc-loader-types.js.map +1 -0
- package/dist/las/las-copc-loader.cjs +60 -0
- package/dist/las/las-copc-loader.cjs.map +7 -0
- package/dist/las/las-copc-loader.d.ts +39 -0
- package/dist/las/las-copc-loader.d.ts.map +1 -0
- package/dist/las/las-copc-loader.js +45 -0
- package/dist/las/las-copc-loader.js.map +1 -0
- package/dist/las/las-format.cjs +44 -0
- package/dist/las/las-format.cjs.map +7 -0
- package/dist/las/las-format.d.ts +16 -0
- package/dist/las/las-format.d.ts.map +1 -0
- package/dist/las/las-format.js +19 -0
- package/dist/las/las-format.js.map +1 -0
- package/dist/las/las-loader-shared.cjs +84 -0
- package/dist/las/las-loader-shared.cjs.map +7 -0
- package/dist/las/las-loader-shared.d.ts +68 -0
- package/dist/las/las-loader-shared.d.ts.map +1 -0
- package/dist/las/las-loader-shared.js +60 -0
- package/dist/las/las-loader-shared.js.map +1 -0
- package/dist/las/las-loader-types.cjs +51 -0
- package/dist/las/las-loader-types.cjs.map +7 -0
- package/dist/las/las-loader-types.d.ts +77 -0
- package/dist/las/las-loader-types.d.ts.map +1 -0
- package/dist/las/las-loader-types.js +17 -0
- package/dist/las/las-loader-types.js.map +1 -0
- package/dist/las/las-loader.cjs +128 -0
- package/dist/las/las-loader.cjs.map +7 -0
- package/dist/las/las-loader.d.ts +91 -0
- package/dist/las/las-loader.d.ts.map +1 -0
- package/dist/las/las-loader.js +108 -0
- package/dist/las/las-loader.js.map +1 -0
- package/dist/las/las-writer.cjs +1054 -0
- package/dist/las/las-writer.cjs.map +7 -0
- package/dist/las/las-writer.d.ts +70 -0
- package/dist/las/las-writer.d.ts.map +1 -0
- package/dist/las/las-writer.js +992 -0
- package/dist/las/las-writer.js.map +1 -0
- package/dist/las/laz-rs-loader-types.cjs +49 -0
- package/dist/las/laz-rs-loader-types.cjs.map +7 -0
- package/dist/las/laz-rs-loader-types.d.ts +69 -0
- package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
- package/dist/las/laz-rs-loader-types.js +16 -0
- package/dist/las/laz-rs-loader-types.js.map +1 -0
- package/dist/las/laz-rs-loader.cjs +275 -0
- package/dist/las/laz-rs-loader.cjs.map +7 -0
- package/dist/las/laz-rs-loader.d.ts +39 -0
- package/dist/las/laz-rs-loader.d.ts.map +1 -0
- package/dist/las/laz-rs-loader.js +43 -0
- package/dist/las/laz-rs-loader.js.map +1 -0
- package/dist/las/lazperf-loader-types.cjs +49 -0
- package/dist/las/lazperf-loader-types.cjs.map +7 -0
- package/dist/las/lazperf-loader-types.d.ts +71 -0
- package/dist/las/lazperf-loader-types.d.ts.map +1 -0
- package/dist/las/lazperf-loader-types.js +17 -0
- package/dist/las/lazperf-loader-types.js.map +1 -0
- package/dist/las/lazperf-loader.cjs +63 -0
- package/dist/las/lazperf-loader.cjs.map +7 -0
- package/dist/las/lazperf-loader.d.ts +41 -0
- package/dist/las/lazperf-loader.d.ts.map +1 -0
- package/dist/las/lazperf-loader.js +49 -0
- package/dist/las/lazperf-loader.js.map +1 -0
- package/dist/las/lib/copc/parse-las.cjs +177 -0
- package/dist/las/lib/copc/parse-las.cjs.map +7 -0
- package/dist/las/lib/copc/parse-las.d.ts +17 -0
- package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
- package/dist/las/lib/copc/parse-las.js +215 -0
- package/dist/las/lib/copc/parse-las.js.map +1 -0
- package/dist/las/lib/get-las-schema.cjs +67 -0
- package/dist/las/lib/get-las-schema.cjs.map +7 -0
- package/dist/las/lib/get-las-schema.d.ts +16 -0
- package/dist/las/lib/get-las-schema.d.ts.map +1 -0
- package/dist/las/lib/get-las-schema.js +52 -0
- package/dist/las/lib/get-las-schema.js.map +1 -0
- package/dist/las/lib/las-compatibility.cjs +110 -0
- package/dist/las/lib/las-compatibility.cjs.map +7 -0
- package/dist/las/lib/las-compatibility.d.ts +40 -0
- package/dist/las/lib/las-compatibility.d.ts.map +1 -0
- package/dist/las/lib/las-compatibility.js +115 -0
- package/dist/las/lib/las-compatibility.js.map +1 -0
- package/dist/las/lib/las-extra-bytes.cjs +228 -0
- package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
- package/dist/las/lib/las-extra-bytes.d.ts +35 -0
- package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
- package/dist/las/lib/las-extra-bytes.js +197 -0
- package/dist/las/lib/las-extra-bytes.js.map +1 -0
- package/dist/las/lib/las-types.cjs +19 -0
- package/dist/las/lib/las-types.cjs.map +7 -0
- package/dist/las/lib/las-types.d.ts +194 -0
- package/dist/las/lib/las-types.d.ts.map +1 -0
- package/dist/las/lib/las-types.js +5 -0
- package/dist/las/lib/las-types.js.map +1 -0
- package/dist/las/lib/las-waveform.cjs +196 -0
- package/dist/las/lib/las-waveform.cjs.map +7 -0
- package/dist/las/lib/las-waveform.d.ts +89 -0
- package/dist/las/lib/las-waveform.d.ts.map +1 -0
- package/dist/las/lib/las-waveform.js +193 -0
- package/dist/las/lib/las-waveform.js.map +1 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
- package/dist/las/lib/laz-perf/parse-las.cjs +271 -0
- package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
- package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
- package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
- package/dist/las/lib/laz-perf/parse-las.js +308 -0
- package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.cjs +271 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.js +308 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
- package/dist/las/lib/typescript/parse-las.cjs +2889 -0
- package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
- package/dist/las/lib/typescript/parse-las.d.ts +39 -0
- package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
- package/dist/las/lib/typescript/parse-las.js +2703 -0
- package/dist/las/lib/typescript/parse-las.js.map +1 -0
- package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
- package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
- package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
- package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
- package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
- package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
- package/dist/las/unbundled.cjs +69 -0
- package/dist/las/unbundled.cjs.map +7 -0
- package/dist/las/unbundled.d.ts +11 -0
- package/dist/las/unbundled.d.ts.map +1 -0
- package/dist/las/unbundled.js +11 -0
- package/dist/las/unbundled.js.map +1 -0
- package/dist/las/workers/las-worker.cjs +23 -0
- package/dist/las/workers/las-worker.cjs.map +7 -0
- package/dist/las/workers/las-worker.d.ts +2 -0
- package/dist/las/workers/las-worker.d.ts.map +1 -0
- package/dist/las/workers/las-worker.js +23 -0
- package/dist/las/workers/las-worker.js.map +1 -0
- package/dist/las-copc-loader-types.cjs +51 -0
- package/dist/las-copc-loader-types.cjs.map +7 -0
- package/dist/las-copc-loader-types.d.ts +2 -0
- package/dist/las-copc-loader-types.d.ts.map +1 -0
- package/dist/las-copc-loader-types.js +2 -0
- package/dist/las-copc-loader-types.js.map +1 -0
- package/dist/las-copc-loader.cjs +62 -0
- package/dist/las-copc-loader.cjs.map +7 -0
- package/dist/las-copc-loader.d.ts +2 -0
- package/dist/las-copc-loader.d.ts.map +1 -0
- package/dist/las-copc-loader.js +2 -0
- package/dist/las-copc-loader.js.map +1 -0
- package/dist/las-loader-types.cjs +53 -0
- package/dist/las-loader-types.cjs.map +7 -0
- package/dist/las-loader-types.d.ts +2 -0
- package/dist/las-loader-types.d.ts.map +1 -0
- package/dist/las-loader-types.js +2 -0
- package/dist/las-loader-types.js.map +1 -0
- package/dist/las-loader.cjs +130 -0
- package/dist/las-loader.cjs.map +7 -0
- package/dist/las-loader.d.ts +2 -0
- package/dist/las-loader.d.ts.map +1 -0
- package/dist/las-loader.js +2 -0
- package/dist/las-loader.js.map +1 -0
- package/dist/las-worker.js +24024 -0
- package/dist/las-writer.cjs +1056 -0
- package/dist/las-writer.cjs.map +7 -0
- package/dist/las-writer.d.ts +2 -0
- package/dist/las-writer.d.ts.map +1 -0
- package/dist/las-writer.js +2 -0
- package/dist/las-writer.js.map +1 -0
- package/dist/laz-rs-loader-types.cjs +51 -0
- package/dist/laz-rs-loader-types.cjs.map +7 -0
- package/dist/laz-rs-loader-types.d.ts +2 -0
- package/dist/laz-rs-loader-types.d.ts.map +1 -0
- package/dist/laz-rs-loader-types.js +2 -0
- package/dist/laz-rs-loader-types.js.map +1 -0
- package/dist/laz-rs-loader.cjs +277 -0
- package/dist/laz-rs-loader.cjs.map +7 -0
- package/dist/laz-rs-loader.d.ts +2 -0
- package/dist/laz-rs-loader.d.ts.map +1 -0
- package/dist/laz-rs-loader.js +2 -0
- package/dist/laz-rs-loader.js.map +1 -0
- package/dist/lazperf-loader-types.cjs +51 -0
- package/dist/lazperf-loader-types.cjs.map +7 -0
- package/dist/lazperf-loader-types.d.ts +2 -0
- package/dist/lazperf-loader-types.d.ts.map +1 -0
- package/dist/lazperf-loader-types.js +2 -0
- package/dist/lazperf-loader-types.js.map +1 -0
- package/dist/lazperf-loader.cjs +65 -0
- package/dist/lazperf-loader.cjs.map +7 -0
- package/dist/lazperf-loader.d.ts +2 -0
- package/dist/lazperf-loader.d.ts.map +1 -0
- package/dist/lazperf-loader.js +2 -0
- package/dist/lazperf-loader.js.map +1 -0
- package/dist/pcd/bundled.cjs +31 -0
- package/dist/pcd/bundled.cjs.map +7 -0
- package/dist/pcd/bundled.d.ts +3 -0
- package/dist/pcd/bundled.d.ts.map +1 -0
- package/dist/pcd/bundled.js +5 -0
- package/dist/pcd/bundled.js.map +1 -0
- package/dist/pcd/index.cjs +37 -0
- package/dist/pcd/index.cjs.map +7 -0
- package/dist/pcd/index.d.ts +6 -0
- package/dist/pcd/index.d.ts.map +1 -0
- package/dist/pcd/index.js +7 -0
- package/dist/pcd/index.js.map +1 -0
- package/dist/pcd/lib/decompress-lzf.cjs +80 -0
- package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
- package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
- package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
- package/dist/pcd/lib/decompress-lzf.js +62 -0
- package/dist/pcd/lib/decompress-lzf.js.map +1 -0
- package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
- package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
- package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
- package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
- package/dist/pcd/lib/get-pcd-schema.js +53 -0
- package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
- package/dist/pcd/lib/parse-pcd.cjs +354 -0
- package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
- package/dist/pcd/lib/parse-pcd.d.ts +20 -0
- package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
- package/dist/pcd/lib/parse-pcd.js +341 -0
- package/dist/pcd/lib/parse-pcd.js.map +1 -0
- package/dist/pcd/lib/pcd-types.cjs +19 -0
- package/dist/pcd/lib/pcd-types.cjs.map +7 -0
- package/dist/pcd/lib/pcd-types.d.ts +31 -0
- package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
- package/dist/pcd/lib/pcd-types.js +5 -0
- package/dist/pcd/lib/pcd-types.js.map +1 -0
- package/dist/pcd/pcd-format.cjs +42 -0
- package/dist/pcd/pcd-format.cjs.map +7 -0
- package/dist/pcd/pcd-format.d.ts +16 -0
- package/dist/pcd/pcd-format.d.ts.map +1 -0
- package/dist/pcd/pcd-format.js +19 -0
- package/dist/pcd/pcd-format.js.map +1 -0
- package/dist/pcd/pcd-loader-types.cjs +63 -0
- package/dist/pcd/pcd-loader-types.cjs.map +7 -0
- package/dist/pcd/pcd-loader-types.d.ts +82 -0
- package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
- package/dist/pcd/pcd-loader-types.js +35 -0
- package/dist/pcd/pcd-loader-types.js.map +1 -0
- package/dist/pcd/pcd-loader.cjs +201 -0
- package/dist/pcd/pcd-loader.cjs.map +7 -0
- package/dist/pcd/pcd-loader.d.ts +80 -0
- package/dist/pcd/pcd-loader.d.ts.map +1 -0
- package/dist/pcd/pcd-loader.js +179 -0
- package/dist/pcd/pcd-loader.js.map +1 -0
- package/dist/pcd/pcd-writer.cjs +134 -0
- package/dist/pcd/pcd-writer.cjs.map +7 -0
- package/dist/pcd/pcd-writer.d.ts +38 -0
- package/dist/pcd/pcd-writer.d.ts.map +1 -0
- package/dist/pcd/pcd-writer.js +115 -0
- package/dist/pcd/pcd-writer.js.map +1 -0
- package/dist/pcd/unbundled.cjs +31 -0
- package/dist/pcd/unbundled.cjs.map +7 -0
- package/dist/pcd/unbundled.d.ts +3 -0
- package/dist/pcd/unbundled.d.ts.map +1 -0
- package/dist/pcd/unbundled.js +5 -0
- package/dist/pcd/unbundled.js.map +1 -0
- package/dist/pcd/workers/pcd-worker.cjs +23 -0
- package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
- package/dist/pcd/workers/pcd-worker.d.ts +2 -0
- package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
- package/dist/pcd/workers/pcd-worker.js +23 -0
- package/dist/pcd/workers/pcd-worker.js.map +1 -0
- package/dist/pcd-loader-types.cjs +65 -0
- package/dist/pcd-loader-types.cjs.map +7 -0
- package/dist/pcd-loader-types.d.ts +2 -0
- package/dist/pcd-loader-types.d.ts.map +1 -0
- package/dist/pcd-loader-types.js +2 -0
- package/dist/pcd-loader-types.js.map +1 -0
- package/dist/pcd-loader.cjs +203 -0
- package/dist/pcd-loader.cjs.map +7 -0
- package/dist/pcd-loader.d.ts +2 -0
- package/dist/pcd-loader.d.ts.map +1 -0
- package/dist/pcd-loader.js +2 -0
- package/dist/pcd-loader.js.map +1 -0
- package/dist/pcd-worker.js +18561 -0
- package/dist/pcd-writer.cjs +136 -0
- package/dist/pcd-writer.cjs.map +7 -0
- package/dist/pcd-writer.d.ts +2 -0
- package/dist/pcd-writer.d.ts.map +1 -0
- package/dist/pcd-writer.js +2 -0
- package/dist/pcd-writer.js.map +1 -0
- package/dist/ply/bundled.cjs +31 -0
- package/dist/ply/bundled.cjs.map +7 -0
- package/dist/ply/bundled.d.ts +3 -0
- package/dist/ply/bundled.d.ts.map +1 -0
- package/dist/ply/bundled.js +5 -0
- package/dist/ply/bundled.js.map +1 -0
- package/dist/ply/index.cjs +37 -0
- package/dist/ply/index.cjs.map +7 -0
- package/dist/ply/index.d.ts +6 -0
- package/dist/ply/index.d.ts.map +1 -0
- package/dist/ply/index.js +8 -0
- package/dist/ply/index.js.map +1 -0
- package/dist/ply/lib/get-ply-schema.cjs +128 -0
- package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
- package/dist/ply/lib/get-ply-schema.d.ts +16 -0
- package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
- package/dist/ply/lib/get-ply-schema.js +117 -0
- package/dist/ply/lib/get-ply-schema.js.map +1 -0
- package/dist/ply/lib/normalize-ply.cjs +96 -0
- package/dist/ply/lib/normalize-ply.cjs.map +7 -0
- package/dist/ply/lib/normalize-ply.d.ts +8 -0
- package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
- package/dist/ply/lib/normalize-ply.js +89 -0
- package/dist/ply/lib/normalize-ply.js.map +1 -0
- package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
- package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
- package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
- package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply-arrow.js +493 -0
- package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
- package/dist/ply/lib/parse-ply-in-batches.cjs +613 -0
- package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
- package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
- package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply-in-batches.js +630 -0
- package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
- package/dist/ply/lib/parse-ply.cjs +758 -0
- package/dist/ply/lib/parse-ply.cjs.map +7 -0
- package/dist/ply/lib/parse-ply.d.ts +69 -0
- package/dist/ply/lib/parse-ply.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply.js +855 -0
- package/dist/ply/lib/parse-ply.js.map +1 -0
- package/dist/ply/lib/ply-types.cjs +19 -0
- package/dist/ply/lib/ply-types.cjs.map +7 -0
- package/dist/ply/lib/ply-types.d.ts +37 -0
- package/dist/ply/lib/ply-types.d.ts.map +1 -0
- package/dist/ply/lib/ply-types.js +2 -0
- package/dist/ply/lib/ply-types.js.map +1 -0
- package/dist/ply/ply-format.cjs +43 -0
- package/dist/ply/ply-format.cjs.map +7 -0
- package/dist/ply/ply-format.d.ts +18 -0
- package/dist/ply/ply-format.d.ts.map +1 -0
- package/dist/ply/ply-format.js +22 -0
- package/dist/ply/ply-format.js.map +1 -0
- package/dist/ply/ply-loader-types.cjs +64 -0
- package/dist/ply/ply-loader-types.cjs.map +7 -0
- package/dist/ply/ply-loader-types.d.ts +88 -0
- package/dist/ply/ply-loader-types.d.ts.map +1 -0
- package/dist/ply/ply-loader-types.js +38 -0
- package/dist/ply/ply-loader-types.js.map +1 -0
- package/dist/ply/ply-loader.cjs +192 -0
- package/dist/ply/ply-loader.cjs.map +7 -0
- package/dist/ply/ply-loader.d.ts +81 -0
- package/dist/ply/ply-loader.d.ts.map +1 -0
- package/dist/ply/ply-loader.js +173 -0
- package/dist/ply/ply-loader.js.map +1 -0
- package/dist/ply/ply-writer.cjs +175 -0
- package/dist/ply/ply-writer.cjs.map +7 -0
- package/dist/ply/ply-writer.d.ts +38 -0
- package/dist/ply/ply-writer.d.ts.map +1 -0
- package/dist/ply/ply-writer.js +140 -0
- package/dist/ply/ply-writer.js.map +1 -0
- package/dist/ply/unbundled.cjs +31 -0
- package/dist/ply/unbundled.cjs.map +7 -0
- package/dist/ply/unbundled.d.ts +3 -0
- package/dist/ply/unbundled.d.ts.map +1 -0
- package/dist/ply/unbundled.js +5 -0
- package/dist/ply/unbundled.js.map +1 -0
- package/dist/ply/workers/ply-worker.cjs +34 -0
- package/dist/ply/workers/ply-worker.cjs.map +7 -0
- package/dist/ply/workers/ply-worker.d.ts +2 -0
- package/dist/ply/workers/ply-worker.d.ts.map +1 -0
- package/dist/ply/workers/ply-worker.js +37 -0
- package/dist/ply/workers/ply-worker.js.map +1 -0
- package/dist/ply-loader-types.cjs +66 -0
- package/dist/ply-loader-types.cjs.map +7 -0
- package/dist/ply-loader-types.d.ts +2 -0
- package/dist/ply-loader-types.d.ts.map +1 -0
- package/dist/ply-loader-types.js +2 -0
- package/dist/ply-loader-types.js.map +1 -0
- package/dist/ply-loader.cjs +194 -0
- package/dist/ply-loader.cjs.map +7 -0
- package/dist/ply-loader.d.ts +2 -0
- package/dist/ply-loader.d.ts.map +1 -0
- package/dist/ply-loader.js +2 -0
- package/dist/ply-loader.js.map +1 -0
- package/dist/ply-worker.js +20962 -0
- package/dist/ply-writer.cjs +177 -0
- package/dist/ply-writer.cjs.map +7 -0
- package/dist/ply-writer.d.ts +2 -0
- package/dist/ply-writer.d.ts.map +1 -0
- package/dist/ply-writer.js +2 -0
- package/dist/ply-writer.js.map +1 -0
- package/package.json +238 -4
- package/src/index.ts +19 -0
- package/src/las/bundled.ts +38 -0
- package/src/las/index.ts +66 -0
- package/src/las/las-copc-loader-types.ts +18 -0
- package/src/las/las-copc-loader.ts +61 -0
- package/src/las/las-format.ts +21 -0
- package/src/las/las-loader-shared.ts +126 -0
- package/src/las/las-loader-types.ts +24 -0
- package/src/las/las-loader.ts +163 -0
- package/src/las/las-writer.ts +1477 -0
- package/src/las/laz-rs-loader-types.ts +21 -0
- package/src/las/laz-rs-loader.ts +53 -0
- package/src/las/lazperf-loader-types.ts +22 -0
- package/src/las/lazperf-loader.ts +65 -0
- package/src/las/lib/LASZIP-LICENSE +202 -0
- package/src/las/lib/LASZIP-NOTICE +4 -0
- package/src/las/lib/copc/parse-las.ts +265 -0
- package/src/las/lib/get-las-schema.ts +55 -0
- package/src/las/lib/las-compatibility.ts +178 -0
- package/src/las/lib/las-extra-bytes.ts +276 -0
- package/src/las/lib/las-types.ts +206 -0
- package/src/las/lib/las-waveform.ts +292 -0
- package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
- package/src/las/lib/laz-perf/parse-las.ts +411 -0
- package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
- package/src/las/lib/laz-rs-wasm/parse-las.ts +411 -0
- package/src/las/lib/typescript/parse-las.ts +3862 -0
- package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
- package/src/las/libs/laz-rs-wasm/README.md +5 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
- package/src/las/libs/laz-rs-wasm/package.json +25 -0
- package/src/las/unbundled.ts +38 -0
- package/src/las/workers/las-worker.ts +24 -0
- package/src/las-copc-loader-types.ts +1 -0
- package/src/las-copc-loader.ts +1 -0
- package/src/las-loader-types.ts +1 -0
- package/src/las-loader.ts +1 -0
- package/src/las-writer.ts +1 -0
- package/src/laz-rs-loader-types.ts +1 -0
- package/src/laz-rs-loader.ts +1 -0
- package/src/lazperf-loader-types.ts +1 -0
- package/src/lazperf-loader.ts +1 -0
- package/src/pcd/bundled.ts +6 -0
- package/src/pcd/index.ts +9 -0
- package/src/pcd/lib/decompress-lzf.ts +68 -0
- package/src/pcd/lib/get-pcd-schema.ts +66 -0
- package/src/pcd/lib/parse-pcd.ts +474 -0
- package/src/pcd/lib/pcd-types.ts +34 -0
- package/src/pcd/pcd-format.ts +21 -0
- package/src/pcd/pcd-loader-types.ts +52 -0
- package/src/pcd/pcd-loader.ts +247 -0
- package/src/pcd/pcd-writer.ts +156 -0
- package/src/pcd/unbundled.ts +6 -0
- package/src/pcd/workers/pcd-worker.ts +24 -0
- package/src/pcd-loader-types.ts +1 -0
- package/src/pcd-loader.ts +1 -0
- package/src/pcd-writer.ts +1 -0
- package/src/ply/bundled.ts +6 -0
- package/src/ply/index.ts +11 -0
- package/src/ply/lib/get-ply-schema.ts +133 -0
- package/src/ply/lib/normalize-ply.ts +110 -0
- package/src/ply/lib/parse-ply-arrow.ts +676 -0
- package/src/ply/lib/parse-ply-in-batches.ts +832 -0
- package/src/ply/lib/parse-ply.ts +1084 -0
- package/src/ply/lib/ply-types.ts +47 -0
- package/src/ply/ply-format.ts +24 -0
- package/src/ply/ply-loader-types.ts +60 -0
- package/src/ply/ply-loader.ts +255 -0
- package/src/ply/ply-writer.ts +219 -0
- package/src/ply/unbundled.ts +6 -0
- package/src/ply/workers/ply-worker.ts +40 -0
- package/src/ply-loader-types.ts +1 -0
- package/src/ply-loader.ts +1 -0
- package/src/ply-writer.ts +1 -0
- package/third-party-licenses/plasio-LICENSE +21 -0
- package/third-party-licenses/three-LICENSE +21 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { concatenateArrayBuffersAsync } from '@loaders.gl/core/loader-utils';
|
|
5
|
+
import { getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
|
|
6
|
+
import { Las } from 'copc';
|
|
7
|
+
import { getLASSchema } from "../get-las-schema.js";
|
|
8
|
+
const DEFAULT_BATCH_SIZE = 1000 * 100;
|
|
9
|
+
/**
|
|
10
|
+
* Parse LAS/LAZ data using the laz-perf decoder shipped by the COPC package.
|
|
11
|
+
* @param arrayBuffer Complete LAS/LAZ file data
|
|
12
|
+
* @param options LAS loader options
|
|
13
|
+
* @returns Parsed LAS mesh
|
|
14
|
+
*/
|
|
15
|
+
export async function parseCOPCLAS(arrayBuffer, options = {}) {
|
|
16
|
+
const header = Las.Header.parse(new Uint8Array(arrayBuffer));
|
|
17
|
+
const batches = parseCOPCLASBatches(arrayBuffer, options, header.pointCount)[Symbol.asyncIterator]();
|
|
18
|
+
const firstBatch = await batches.next();
|
|
19
|
+
if (!firstBatch.value) {
|
|
20
|
+
throw new Error('LAS file contained no points');
|
|
21
|
+
}
|
|
22
|
+
return firstBatch.value;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse LAS/LAZ data in decoded point batches using the COPC package.
|
|
26
|
+
* @param arrayBufferIterator Iterator yielding LAS/LAZ binary chunks
|
|
27
|
+
* @param options LAS loader options
|
|
28
|
+
* @returns Async iterable of mesh batches
|
|
29
|
+
*/
|
|
30
|
+
export async function* parseCOPCLASInBatches(arrayBufferIterator, options = {}) {
|
|
31
|
+
const arrayBuffer = await concatenateArrayBuffersAsync(arrayBufferIterator);
|
|
32
|
+
yield* parseCOPCLASBatches(arrayBuffer, options, getBatchSize(options));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse LAS/LAZ data in decoded point batches using the COPC package.
|
|
36
|
+
* @param arrayBuffer Complete LAS/LAZ file data
|
|
37
|
+
* @param options LAS loader options
|
|
38
|
+
* @param batchSize Number of returned points per batch
|
|
39
|
+
* @returns Async iterable of mesh batches
|
|
40
|
+
*/
|
|
41
|
+
async function* parseCOPCLASBatches(arrayBuffer, options, batchSize) {
|
|
42
|
+
const header = Las.Header.parse(new Uint8Array(arrayBuffer));
|
|
43
|
+
const pointData = await getCOPCPointData(arrayBuffer, header);
|
|
44
|
+
const view = Las.View.create(pointData, header);
|
|
45
|
+
const totalToRead = view.pointCount;
|
|
46
|
+
const lasHeader = getLASHeader(arrayBuffer, header, totalToRead);
|
|
47
|
+
for (let pointIndex = 0; pointIndex < totalToRead; pointIndex += batchSize) {
|
|
48
|
+
const batchPointCount = Math.min(batchSize, totalToRead - pointIndex);
|
|
49
|
+
lasHeader.totalRead = pointIndex + batchPointCount;
|
|
50
|
+
yield getLASMeshBatch(view, lasHeader, options, pointIndex, batchPointCount);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Decompress or slice LAS point records for the COPC package parser.
|
|
55
|
+
* @param arrayBuffer Complete LAS/LAZ file data
|
|
56
|
+
* @param header COPC package LAS header
|
|
57
|
+
* @returns Uncompressed point records
|
|
58
|
+
*/
|
|
59
|
+
async function getCOPCPointData(arrayBuffer, header) {
|
|
60
|
+
if (isCompressedLAS(arrayBuffer)) {
|
|
61
|
+
return await Las.PointData.decompressFile(new Uint8Array(arrayBuffer));
|
|
62
|
+
}
|
|
63
|
+
const byteOffset = header.pointDataOffset;
|
|
64
|
+
const byteLength = header.pointCount * header.pointDataRecordLength;
|
|
65
|
+
return new Uint8Array(arrayBuffer, byteOffset, byteLength);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Convert a COPC package header into loaders.gl LAS header metadata.
|
|
69
|
+
* @param arrayBuffer Complete LAS/LAZ file data
|
|
70
|
+
* @param header COPC package LAS header
|
|
71
|
+
* @param totalToRead Number of output points
|
|
72
|
+
* @returns loaders.gl LAS header
|
|
73
|
+
*/
|
|
74
|
+
function getLASHeader(arrayBuffer, header, totalToRead) {
|
|
75
|
+
return {
|
|
76
|
+
pointsOffset: header.pointDataOffset,
|
|
77
|
+
pointsFormatId: header.pointDataRecordFormat,
|
|
78
|
+
pointsStructSize: header.pointDataRecordLength,
|
|
79
|
+
pointsCount: header.pointCount,
|
|
80
|
+
scale: header.scale,
|
|
81
|
+
offset: header.offset,
|
|
82
|
+
maxs: header.max,
|
|
83
|
+
mins: header.min,
|
|
84
|
+
totalToRead,
|
|
85
|
+
totalRead: 0,
|
|
86
|
+
hasColor: hasCOPCColor(header.pointDataRecordFormat),
|
|
87
|
+
versionAsString: `${header.majorVersion}.${header.minorVersion}`,
|
|
88
|
+
isCompressed: isCompressedLAS(arrayBuffer)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Return true when the LAS point format includes compressed LAZ flags.
|
|
93
|
+
* @param arrayBuffer Complete LAS/LAZ file data
|
|
94
|
+
* @returns Whether the file uses LAZ compression
|
|
95
|
+
*/
|
|
96
|
+
function isCompressedLAS(arrayBuffer) {
|
|
97
|
+
const rawPointFormat = new DataView(arrayBuffer).getUint8(104);
|
|
98
|
+
return Boolean(rawPointFormat & 0xc0);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Return true when a COPC-supported LAS point format includes RGB color.
|
|
102
|
+
* @param pointDataRecordFormat LAS point data record format
|
|
103
|
+
* @returns Whether the point format has color
|
|
104
|
+
*/
|
|
105
|
+
function hasCOPCColor(pointDataRecordFormat) {
|
|
106
|
+
return pointDataRecordFormat === 2 || pointDataRecordFormat === 3 || pointDataRecordFormat >= 7;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Build one LAS mesh batch from a COPC package point view.
|
|
110
|
+
* @param view COPC package point view
|
|
111
|
+
* @param lasHeader LAS header metadata
|
|
112
|
+
* @param options LAS loader options
|
|
113
|
+
* @param pointOffset Output point offset
|
|
114
|
+
* @param batchPointCount Number of points in this batch
|
|
115
|
+
* @returns LAS mesh batch
|
|
116
|
+
*/
|
|
117
|
+
function getLASMeshBatch(view, lasHeader, options, pointOffset, batchPointCount) {
|
|
118
|
+
const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
|
|
119
|
+
const positions = new PositionsType(batchPointCount * 3);
|
|
120
|
+
const colors = lasHeader.hasColor ? new Uint8Array(batchPointCount * 4) : null;
|
|
121
|
+
const intensities = new Uint16Array(batchPointCount);
|
|
122
|
+
const classifications = new Uint8Array(batchPointCount);
|
|
123
|
+
const getX = view.getter('X');
|
|
124
|
+
const getY = view.getter('Y');
|
|
125
|
+
const getZ = view.getter('Z');
|
|
126
|
+
const getIntensity = view.getter('Intensity');
|
|
127
|
+
const getClassification = view.getter('Classification');
|
|
128
|
+
const getRed = colors ? view.getter('Red') : null;
|
|
129
|
+
const getGreen = colors ? view.getter('Green') : null;
|
|
130
|
+
const getBlue = colors ? view.getter('Blue') : null;
|
|
131
|
+
const twoByteColor = detectTwoByteColors(view, pointOffset, batchPointCount, options);
|
|
132
|
+
for (let i = 0; i < batchPointCount; i++) {
|
|
133
|
+
const sourcePointIndex = pointOffset + i;
|
|
134
|
+
positions[i * 3] = getX(sourcePointIndex);
|
|
135
|
+
positions[i * 3 + 1] = getY(sourcePointIndex);
|
|
136
|
+
positions[i * 3 + 2] = getZ(sourcePointIndex);
|
|
137
|
+
intensities[i] = getIntensity(sourcePointIndex);
|
|
138
|
+
classifications[i] = getClassification(sourcePointIndex);
|
|
139
|
+
if (colors && getRed && getGreen && getBlue) {
|
|
140
|
+
const red = getRed(sourcePointIndex);
|
|
141
|
+
const green = getGreen(sourcePointIndex);
|
|
142
|
+
const blue = getBlue(sourcePointIndex);
|
|
143
|
+
colors[i * 4] = twoByteColor ? red / 256 : red;
|
|
144
|
+
colors[i * 4 + 1] = twoByteColor ? green / 256 : green;
|
|
145
|
+
colors[i * 4 + 2] = twoByteColor ? blue / 256 : blue;
|
|
146
|
+
colors[i * 4 + 3] = 255;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const attributes = {
|
|
150
|
+
POSITION: { value: positions, size: 3 },
|
|
151
|
+
intensity: { value: intensities, size: 1 },
|
|
152
|
+
classification: { value: classifications, size: 1 }
|
|
153
|
+
};
|
|
154
|
+
if (colors) {
|
|
155
|
+
attributes.COLOR_0 = { value: colors, size: 4 };
|
|
156
|
+
}
|
|
157
|
+
const batchHeader = { ...lasHeader };
|
|
158
|
+
const lasMesh = {
|
|
159
|
+
loader: 'las',
|
|
160
|
+
loaderData: batchHeader,
|
|
161
|
+
schema: { fields: [], metadata: {} },
|
|
162
|
+
header: {
|
|
163
|
+
vertexCount: batchPointCount,
|
|
164
|
+
boundingBox: getMeshBoundingBox(attributes)
|
|
165
|
+
},
|
|
166
|
+
attributes,
|
|
167
|
+
topology: 'point-list',
|
|
168
|
+
mode: 0,
|
|
169
|
+
progress: lasHeader.totalRead / lasHeader.totalToRead
|
|
170
|
+
};
|
|
171
|
+
lasMesh.schema = getLASSchema(batchHeader, lasMesh.attributes);
|
|
172
|
+
return lasMesh;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Detect whether color values use 16-bit LAS color range.
|
|
176
|
+
* @param view COPC package point view
|
|
177
|
+
* @param pointOffset Output point offset
|
|
178
|
+
* @param batchPointCount Number of points in this batch
|
|
179
|
+
* @param options LAS loader options
|
|
180
|
+
* @returns Whether color values should be downscaled from 16-bit to 8-bit
|
|
181
|
+
*/
|
|
182
|
+
function detectTwoByteColors(view, pointOffset, batchPointCount, options) {
|
|
183
|
+
switch (options.las?.colorDepth) {
|
|
184
|
+
case 8:
|
|
185
|
+
return false;
|
|
186
|
+
case 16:
|
|
187
|
+
return true;
|
|
188
|
+
case 'auto': {
|
|
189
|
+
const getRed = view.getter('Red');
|
|
190
|
+
const getGreen = view.getter('Green');
|
|
191
|
+
const getBlue = view.getter('Blue');
|
|
192
|
+
for (let i = 0; i < batchPointCount; i++) {
|
|
193
|
+
const sourcePointIndex = pointOffset + i;
|
|
194
|
+
if (getRed(sourcePointIndex) > 255 ||
|
|
195
|
+
getGreen(sourcePointIndex) > 255 ||
|
|
196
|
+
getBlue(sourcePointIndex) > 255) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
default:
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get the requested LAS point batch size.
|
|
208
|
+
* @param options LAS loader options
|
|
209
|
+
* @returns Point count per decoded batch
|
|
210
|
+
*/
|
|
211
|
+
function getBatchSize(options) {
|
|
212
|
+
const batchSize = options.core?.batchSize;
|
|
213
|
+
return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=parse-las.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-las.js","sourceRoot":"","sources":["../../../../src/las/lib/copc/parse-las.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/las/lib/get-las-schema.ts
|
|
21
|
+
var get_las_schema_exports = {};
|
|
22
|
+
__export(get_las_schema_exports, {
|
|
23
|
+
getLASSchema: () => getLASSchema,
|
|
24
|
+
makeMetadataFromLasHeader: () => makeMetadataFromLasHeader
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(get_las_schema_exports);
|
|
27
|
+
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
28
|
+
function getLASSchema(lasHeader, attributes) {
|
|
29
|
+
const metadataMap = makeMetadataFromLasHeader(lasHeader);
|
|
30
|
+
const schema = (0, import_schema_utils.deduceMeshSchema)(attributes, metadataMap);
|
|
31
|
+
return schema;
|
|
32
|
+
}
|
|
33
|
+
function makeMetadataFromLasHeader(lasHeader) {
|
|
34
|
+
const metadata = {};
|
|
35
|
+
metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
|
|
36
|
+
metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
|
|
37
|
+
metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
|
|
38
|
+
metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
|
|
39
|
+
metadata.las_scale = JSON.stringify(lasHeader.scale);
|
|
40
|
+
metadata.las_offset = JSON.stringify(lasHeader.offset);
|
|
41
|
+
if (lasHeader.maxs !== void 0) {
|
|
42
|
+
metadata.las_maxs = JSON.stringify(lasHeader.maxs);
|
|
43
|
+
}
|
|
44
|
+
if (lasHeader.mins !== void 0) {
|
|
45
|
+
metadata.las_mins = JSON.stringify(lasHeader.mins);
|
|
46
|
+
}
|
|
47
|
+
metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
|
|
48
|
+
metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
|
|
49
|
+
if (lasHeader.versionAsString !== void 0) {
|
|
50
|
+
metadata.las_versionAsString = lasHeader.versionAsString;
|
|
51
|
+
}
|
|
52
|
+
if (lasHeader.isCompressed !== void 0) {
|
|
53
|
+
metadata.las_isCompressed = lasHeader.isCompressed.toString();
|
|
54
|
+
}
|
|
55
|
+
if (lasHeader.metadata?.wkt) metadata.las_wkt = lasHeader.metadata.wkt;
|
|
56
|
+
if (lasHeader.metadata?.wktMathTransform)
|
|
57
|
+
metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;
|
|
58
|
+
if (lasHeader.metadata?.geotiff)
|
|
59
|
+
metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);
|
|
60
|
+
return metadata;
|
|
61
|
+
}
|
|
62
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
63
|
+
0 && (module.exports = {
|
|
64
|
+
getLASSchema,
|
|
65
|
+
makeMetadataFromLasHeader
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=get-las-schema.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/las/lib/get-las-schema.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Schema, MeshAttributes} from '@loaders.gl/core/schema';\nimport {deduceMeshSchema} from '@loaders.gl/core/schema-utils';\nimport type {LASHeader} from './las-types';\n\n/**\n * Gets schema from LAS header\n * @param lasHeader\n * @param metadata\n * @returns Schema\n */\nexport function getLASSchema(lasHeader: LASHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromLasHeader(lasHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by LASHeader properties\n * @param lasHeader\n * @returns\n */\nexport function makeMetadataFromLasHeader(lasHeader: LASHeader): Record<string, string> {\n const metadata: Record<string, string> = {};\n /* eslint-disable camelcase */\n metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);\n metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);\n metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);\n metadata.las_pointsCount = lasHeader.pointsCount.toString(10);\n metadata.las_scale = JSON.stringify(lasHeader.scale);\n metadata.las_offset = JSON.stringify(lasHeader.offset);\n if (lasHeader.maxs !== undefined) {\n metadata.las_maxs = JSON.stringify(lasHeader.maxs);\n }\n if (lasHeader.mins !== undefined) {\n metadata.las_mins = JSON.stringify(lasHeader.mins);\n }\n metadata.las_totalToRead = lasHeader.totalToRead.toString(10);\n metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);\n if (lasHeader.versionAsString !== undefined) {\n metadata.las_versionAsString = lasHeader.versionAsString;\n }\n if (lasHeader.isCompressed !== undefined) {\n metadata.las_isCompressed = lasHeader.isCompressed.toString();\n }\n if (lasHeader.metadata?.wkt) metadata.las_wkt = lasHeader.metadata.wkt;\n if (lasHeader.metadata?.wktMathTransform)\n metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;\n if (lasHeader.metadata?.geotiff)\n metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);\n return metadata;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA+B;AASxB,SAAS,aAAa,WAAsB,YAAoC;AACrF,QAAM,cAAc,0BAA0B,SAAS;AACvD,QAAM,aAAS,sCAAiB,YAAY,WAAW;AACvD,SAAO;AACT;AAOO,SAAS,0BAA0B,WAA8C;AACtF,QAAM,WAAmC,CAAC;AAE1C,WAAS,mBAAmB,UAAU,aAAa,SAAS,EAAE;AAC9D,WAAS,qBAAqB,UAAU,eAAe,SAAS,EAAE;AAClE,WAAS,uBAAuB,UAAU,iBAAiB,SAAS,EAAE;AACtE,WAAS,kBAAkB,UAAU,YAAY,SAAS,EAAE;AAC5D,WAAS,YAAY,KAAK,UAAU,UAAU,KAAK;AACnD,WAAS,aAAa,KAAK,UAAU,UAAU,MAAM;AACrD,MAAI,UAAU,SAAS,QAAW;AAChC,aAAS,WAAW,KAAK,UAAU,UAAU,IAAI;AAAA,EACnD;AACA,MAAI,UAAU,SAAS,QAAW;AAChC,aAAS,WAAW,KAAK,UAAU,UAAU,IAAI;AAAA,EACnD;AACA,WAAS,kBAAkB,UAAU,YAAY,SAAS,EAAE;AAC5D,WAAS,8BAA8B,UAAU,UAAU,SAAS,EAAE;AACtE,MAAI,UAAU,oBAAoB,QAAW;AAC3C,aAAS,sBAAsB,UAAU;AAAA,EAC3C;AACA,MAAI,UAAU,iBAAiB,QAAW;AACxC,aAAS,mBAAmB,UAAU,aAAa,SAAS;AAAA,EAC9D;AACA,MAAI,UAAU,UAAU,IAAK,UAAS,UAAU,UAAU,SAAS;AACnE,MAAI,UAAU,UAAU;AACtB,aAAS,uBAAuB,UAAU,SAAS;AACrD,MAAI,UAAU,UAAU;AACtB,aAAS,cAAc,KAAK,UAAU,UAAU,SAAS,OAAO;AAClE,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Schema, MeshAttributes } from '@loaders.gl/core/schema';
|
|
2
|
+
import type { LASHeader } from "./las-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Gets schema from LAS header
|
|
5
|
+
* @param lasHeader
|
|
6
|
+
* @param metadata
|
|
7
|
+
* @returns Schema
|
|
8
|
+
*/
|
|
9
|
+
export declare function getLASSchema(lasHeader: LASHeader, attributes: MeshAttributes): Schema;
|
|
10
|
+
/**
|
|
11
|
+
* Make arrow like schema metadata by LASHeader properties
|
|
12
|
+
* @param lasHeader
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare function makeMetadataFromLasHeader(lasHeader: LASHeader): Record<string, string>;
|
|
16
|
+
//# sourceMappingURL=get-las-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-las-schema.d.ts","sourceRoot":"","sources":["../../../src/las/lib/get-las-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAIrF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BtF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { deduceMeshSchema } from '@loaders.gl/core/schema-utils';
|
|
5
|
+
/**
|
|
6
|
+
* Gets schema from LAS header
|
|
7
|
+
* @param lasHeader
|
|
8
|
+
* @param metadata
|
|
9
|
+
* @returns Schema
|
|
10
|
+
*/
|
|
11
|
+
export function getLASSchema(lasHeader, attributes) {
|
|
12
|
+
const metadataMap = makeMetadataFromLasHeader(lasHeader);
|
|
13
|
+
const schema = deduceMeshSchema(attributes, metadataMap);
|
|
14
|
+
return schema;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Make arrow like schema metadata by LASHeader properties
|
|
18
|
+
* @param lasHeader
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
export function makeMetadataFromLasHeader(lasHeader) {
|
|
22
|
+
const metadata = {};
|
|
23
|
+
/* eslint-disable camelcase */
|
|
24
|
+
metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
|
|
25
|
+
metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
|
|
26
|
+
metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
|
|
27
|
+
metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
|
|
28
|
+
metadata.las_scale = JSON.stringify(lasHeader.scale);
|
|
29
|
+
metadata.las_offset = JSON.stringify(lasHeader.offset);
|
|
30
|
+
if (lasHeader.maxs !== undefined) {
|
|
31
|
+
metadata.las_maxs = JSON.stringify(lasHeader.maxs);
|
|
32
|
+
}
|
|
33
|
+
if (lasHeader.mins !== undefined) {
|
|
34
|
+
metadata.las_mins = JSON.stringify(lasHeader.mins);
|
|
35
|
+
}
|
|
36
|
+
metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
|
|
37
|
+
metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
|
|
38
|
+
if (lasHeader.versionAsString !== undefined) {
|
|
39
|
+
metadata.las_versionAsString = lasHeader.versionAsString;
|
|
40
|
+
}
|
|
41
|
+
if (lasHeader.isCompressed !== undefined) {
|
|
42
|
+
metadata.las_isCompressed = lasHeader.isCompressed.toString();
|
|
43
|
+
}
|
|
44
|
+
if (lasHeader.metadata?.wkt)
|
|
45
|
+
metadata.las_wkt = lasHeader.metadata.wkt;
|
|
46
|
+
if (lasHeader.metadata?.wktMathTransform)
|
|
47
|
+
metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;
|
|
48
|
+
if (lasHeader.metadata?.geotiff)
|
|
49
|
+
metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);
|
|
50
|
+
return metadata;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=get-las-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-las-schema.js","sourceRoot":"","sources":["../../../src/las/lib/get-las-schema.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAoB,EAAE,UAA0B;IAC3E,MAAM,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAoB;IAC5D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,8BAA8B;IAC9B,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,2BAA2B,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC5C,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC;IAC3D,CAAC;IACD,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG;QAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvE,IAAI,SAAS,CAAC,QAAQ,EAAE,gBAAgB;QACtC,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtE,IAAI,SAAS,CAAC,QAAQ,EAAE,OAAO;QAC7B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/las/lib/las-compatibility.ts
|
|
21
|
+
var las_compatibility_exports = {};
|
|
22
|
+
__export(las_compatibility_exports, {
|
|
23
|
+
getLASCompatibilityLayout: () => getLASCompatibilityLayout,
|
|
24
|
+
populateLASCompatibilityPoint: () => populateLASCompatibilityPoint
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(las_compatibility_exports);
|
|
27
|
+
function getLASCompatibilityLayout(header, metadata) {
|
|
28
|
+
const record = metadata.vlrs.find(
|
|
29
|
+
(variableLengthRecord) => variableLengthRecord.userId === "lascompatible" && variableLengthRecord.recordId === 22204
|
|
30
|
+
);
|
|
31
|
+
if (!record) return void 0;
|
|
32
|
+
if (!["1.0", "1.1", "1.2", "1.3"].includes(header.versionAsString || "") || ![1, 3, 4, 5].includes(header.pointsFormatId)) {
|
|
33
|
+
throw new Error("LASLoader: compatibility mode requires a legacy LAS point format");
|
|
34
|
+
}
|
|
35
|
+
const view = new DataView(record.data.buffer, record.data.byteOffset, record.data.byteLength);
|
|
36
|
+
if (view.byteLength < 4) throw new Error("LASLoader: truncated LASzip compatibility VLR");
|
|
37
|
+
const version = view.getUint16(2, true);
|
|
38
|
+
if (version !== 3 && version !== 4 || view.byteLength !== (version === 3 ? 156 : 174)) {
|
|
39
|
+
throw new Error(`LASLoader: unsupported LASzip compatibility VLR version ${version} or length`);
|
|
40
|
+
}
|
|
41
|
+
const offsets = /* @__PURE__ */ new Map();
|
|
42
|
+
let byteOffset = 0;
|
|
43
|
+
for (const descriptor of metadata.extraBytes) {
|
|
44
|
+
const scalarDataType = descriptor.dataType > 20 ? descriptor.dataType - 20 : descriptor.dataType > 10 ? descriptor.dataType - 10 : descriptor.dataType;
|
|
45
|
+
const size = descriptor.dataType > 20 ? 3 : descriptor.dataType > 10 ? 2 : 1;
|
|
46
|
+
const byteLength = descriptor.dataType === 0 ? descriptor.options : scalarDataType <= 2 ? size : scalarDataType <= 4 ? 2 * size : scalarDataType <= 6 || scalarDataType === 9 ? 4 * size : 8 * size;
|
|
47
|
+
if (descriptor.dataType > 30 || !byteLength)
|
|
48
|
+
throw new Error("LASLoader: invalid compatibility Extra Bytes layout");
|
|
49
|
+
offsets.set(descriptor.name, { byteOffset, dataType: descriptor.dataType });
|
|
50
|
+
byteOffset += byteLength;
|
|
51
|
+
}
|
|
52
|
+
const baseLength = { 1: 28, 3: 34, 4: 57, 5: 63 }[header.pointsFormatId];
|
|
53
|
+
if (byteOffset !== header.pointsStructSize - baseLength)
|
|
54
|
+
throw new Error("LASLoader: compatibility descriptors do not match point record length");
|
|
55
|
+
const scanAngleByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 scan angle", 4);
|
|
56
|
+
const returnsByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 extended returns", 1);
|
|
57
|
+
const classificationByteOffset = getCompatibilityFieldOffset(
|
|
58
|
+
offsets,
|
|
59
|
+
"LAS 1.4 classification",
|
|
60
|
+
1
|
|
61
|
+
);
|
|
62
|
+
const flagsByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 flags and channel", 1);
|
|
63
|
+
const nirByteOffset = offsets.has("LAS 1.4 NIR band") ? getCompatibilityFieldOffset(offsets, "LAS 1.4 NIR band", 3) : void 0;
|
|
64
|
+
const pointDataRecordFormat = header.pointsFormatId === 1 ? 6 : header.pointsFormatId === 3 ? nirByteOffset === void 0 ? 7 : 8 : header.pointsFormatId === 4 ? 9 : 10;
|
|
65
|
+
if (header.pointsFormatId === 5 && nirByteOffset === void 0)
|
|
66
|
+
throw new Error("LASLoader: compatibility waveform color points require NIR");
|
|
67
|
+
return {
|
|
68
|
+
pointDataRecordFormat,
|
|
69
|
+
version: version === 3 ? "1.4" : "1.5",
|
|
70
|
+
scanAngleByteOffset,
|
|
71
|
+
returnsByteOffset,
|
|
72
|
+
classificationByteOffset,
|
|
73
|
+
flagsByteOffset,
|
|
74
|
+
nirByteOffset
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function getCompatibilityFieldOffset(offsets, name, dataType) {
|
|
78
|
+
const field = offsets.get(name);
|
|
79
|
+
if (!field || field.dataType !== dataType)
|
|
80
|
+
throw new Error(`LASLoader: missing or invalid compatibility field ${name}`);
|
|
81
|
+
return field.byteOffset;
|
|
82
|
+
}
|
|
83
|
+
function populateLASCompatibilityPoint(view, extraByteOffset, pointIndex, layout, target) {
|
|
84
|
+
if (!target.classifications && !target.returnNumbers && !target.numberOfReturns && !target.scanAngles && !target.overlapFlags && !target.scannerChannels && !target.nir)
|
|
85
|
+
return;
|
|
86
|
+
const extendedReturns = view.getUint8(extraByteOffset + layout.returnsByteOffset);
|
|
87
|
+
const flags = view.getUint8(extraByteOffset + layout.flagsByteOffset);
|
|
88
|
+
if (target.classifications)
|
|
89
|
+
target.classifications[pointIndex] += view.getUint8(
|
|
90
|
+
extraByteOffset + layout.classificationByteOffset
|
|
91
|
+
);
|
|
92
|
+
if (target.returnNumbers) target.returnNumbers[pointIndex] += extendedReturns >> 4;
|
|
93
|
+
if (target.numberOfReturns) target.numberOfReturns[pointIndex] += extendedReturns & 15;
|
|
94
|
+
if (target.scanAngles) {
|
|
95
|
+
const rank = target.scanAngles[pointIndex];
|
|
96
|
+
const prediction = Math.fround(rank / Math.fround(6e-3));
|
|
97
|
+
const quantized = Math.sign(prediction) * Math.floor(Math.abs(prediction) + 0.5);
|
|
98
|
+
target.scanAngles[pointIndex] = quantized + view.getInt16(extraByteOffset + layout.scanAngleByteOffset, true);
|
|
99
|
+
}
|
|
100
|
+
if (target.overlapFlags) target.overlapFlags[pointIndex] = flags & 1;
|
|
101
|
+
if (target.scannerChannels) target.scannerChannels[pointIndex] = flags >> 1 & 3;
|
|
102
|
+
if (target.nir && layout.nirByteOffset !== void 0)
|
|
103
|
+
target.nir[pointIndex] = view.getUint16(extraByteOffset + layout.nirByteOffset, true);
|
|
104
|
+
}
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
getLASCompatibilityLayout,
|
|
108
|
+
populateLASCompatibilityPoint
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=las-compatibility.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/las/lib/las-compatibility.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT AND Apache-2.0\n// Copyright (c) vis.gl contributors\n// Compatibility reconstruction follows LASzip, copyright rapidlasso GmbH.\n// See LASZIP-LICENSE and LASZIP-NOTICE in this directory.\n\nimport type {LASHeader, LASMetadata} from './las-types';\n\n/** Descriptor offsets for LASzip's legacy representation of modern point records. */\nexport type LASCompatibilityLayout = {\n /** Logical modern point format, while the source header retains its physical legacy format. */\n pointDataRecordFormat: number;\n /** Logical LAS version stored in the compatibility VLR. */\n version: '1.4' | '1.5';\n /** Packed Extra Bytes offset of the scan angle remainder. */\n scanAngleByteOffset: number;\n /** Packed Extra Bytes offset of the return increments. */\n returnsByteOffset: number;\n /** Packed Extra Bytes offset of the classification increment. */\n classificationByteOffset: number;\n /** Packed Extra Bytes offset of overlap and scanner channel. */\n flagsByteOffset: number;\n /** Packed Extra Bytes offset of optional NIR data. */\n nirByteOffset?: number;\n};\n\n/** Selected column targets that can be reconstructed from compatibility Extra Bytes. */\nexport type LASCompatibilityTarget = {\n /** Classification codes. */\n classifications: Uint8Array | null;\n /** Return numbers. */\n returnNumbers: Uint8Array | null;\n /** Return counts. */\n numberOfReturns: Uint8Array | null;\n /** Scan angles in modern 0.006-degree units. */\n scanAngles: Int16Array | null;\n /** Overlap flags. */\n overlapFlags: Uint8Array | null;\n /** Scanner channels. */\n scannerChannels: Uint8Array | null;\n /** Optional NIR values. */\n nir: Uint16Array | null;\n};\n\n/** Validate the explicit compatibility marker and locate its descriptor-defined fields. */\nexport function getLASCompatibilityLayout(\n header: LASHeader,\n metadata: LASMetadata\n): LASCompatibilityLayout | undefined {\n const record = metadata.vlrs.find(\n variableLengthRecord =>\n variableLengthRecord.userId === 'lascompatible' && variableLengthRecord.recordId === 22204\n );\n if (!record) return undefined;\n if (\n !['1.0', '1.1', '1.2', '1.3'].includes(header.versionAsString || '') ||\n ![1, 3, 4, 5].includes(header.pointsFormatId)\n ) {\n throw new Error('LASLoader: compatibility mode requires a legacy LAS point format');\n }\n const view = new DataView(record.data.buffer, record.data.byteOffset, record.data.byteLength);\n if (view.byteLength < 4) throw new Error('LASLoader: truncated LASzip compatibility VLR');\n const version = view.getUint16(2, true);\n if ((version !== 3 && version !== 4) || view.byteLength !== (version === 3 ? 156 : 174)) {\n throw new Error(`LASLoader: unsupported LASzip compatibility VLR version ${version} or length`);\n }\n const offsets = new Map<string, {byteOffset: number; dataType: number}>();\n let byteOffset = 0;\n for (const descriptor of metadata.extraBytes) {\n const scalarDataType =\n descriptor.dataType > 20\n ? descriptor.dataType - 20\n : descriptor.dataType > 10\n ? descriptor.dataType - 10\n : descriptor.dataType;\n const size = descriptor.dataType > 20 ? 3 : descriptor.dataType > 10 ? 2 : 1;\n const byteLength =\n descriptor.dataType === 0\n ? descriptor.options\n : scalarDataType <= 2\n ? size\n : scalarDataType <= 4\n ? 2 * size\n : scalarDataType <= 6 || scalarDataType === 9\n ? 4 * size\n : 8 * size;\n if (descriptor.dataType > 30 || !byteLength)\n throw new Error('LASLoader: invalid compatibility Extra Bytes layout');\n offsets.set(descriptor.name, {byteOffset, dataType: descriptor.dataType});\n byteOffset += byteLength;\n }\n const baseLength = {1: 28, 3: 34, 4: 57, 5: 63}[header.pointsFormatId]!;\n if (byteOffset !== header.pointsStructSize - baseLength)\n throw new Error('LASLoader: compatibility descriptors do not match point record length');\n const scanAngleByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 scan angle', 4);\n const returnsByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 extended returns', 1);\n const classificationByteOffset = getCompatibilityFieldOffset(\n offsets,\n 'LAS 1.4 classification',\n 1\n );\n const flagsByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 flags and channel', 1);\n const nirByteOffset = offsets.has('LAS 1.4 NIR band')\n ? getCompatibilityFieldOffset(offsets, 'LAS 1.4 NIR band', 3)\n : undefined;\n const pointDataRecordFormat =\n header.pointsFormatId === 1\n ? 6\n : header.pointsFormatId === 3\n ? nirByteOffset === undefined\n ? 7\n : 8\n : header.pointsFormatId === 4\n ? 9\n : 10;\n if (header.pointsFormatId === 5 && nirByteOffset === undefined)\n throw new Error('LASLoader: compatibility waveform color points require NIR');\n return {\n pointDataRecordFormat,\n version: version === 3 ? '1.4' : '1.5',\n scanAngleByteOffset,\n returnsByteOffset,\n classificationByteOffset,\n flagsByteOffset,\n nirByteOffset\n };\n}\n\n/** Require the named field to have the scalar representation used by LASzip. */\nfunction getCompatibilityFieldOffset(\n offsets: Map<string, {byteOffset: number; dataType: number}>,\n name: string,\n dataType: number\n): number {\n const field = offsets.get(name);\n if (!field || field.dataType !== dataType)\n throw new Error(`LASLoader: missing or invalid compatibility field ${name}`);\n return field.byteOffset;\n}\n\n/** Restore selected modern fields from one legacy record without changing raw point bytes. */\nexport function populateLASCompatibilityPoint(\n view: DataView,\n extraByteOffset: number,\n pointIndex: number,\n layout: LASCompatibilityLayout,\n target: LASCompatibilityTarget\n): void {\n if (\n !target.classifications &&\n !target.returnNumbers &&\n !target.numberOfReturns &&\n !target.scanAngles &&\n !target.overlapFlags &&\n !target.scannerChannels &&\n !target.nir\n )\n return;\n const extendedReturns = view.getUint8(extraByteOffset + layout.returnsByteOffset);\n const flags = view.getUint8(extraByteOffset + layout.flagsByteOffset);\n if (target.classifications)\n target.classifications[pointIndex] += view.getUint8(\n extraByteOffset + layout.classificationByteOffset\n );\n if (target.returnNumbers) target.returnNumbers[pointIndex] += extendedReturns >> 4;\n if (target.numberOfReturns) target.numberOfReturns[pointIndex] += extendedReturns & 15;\n if (target.scanAngles) {\n const rank = target.scanAngles[pointIndex];\n const prediction = Math.fround(rank / Math.fround(0.006));\n const quantized = Math.sign(prediction) * Math.floor(Math.abs(prediction) + 0.5);\n target.scanAngles[pointIndex] =\n quantized + view.getInt16(extraByteOffset + layout.scanAngleByteOffset, true);\n }\n if (target.overlapFlags) target.overlapFlags[pointIndex] = flags & 1;\n if (target.scannerChannels) target.scannerChannels[pointIndex] = (flags >> 1) & 3;\n if (target.nir && layout.nirByteOffset !== undefined)\n target.nir[pointIndex] = view.getUint16(extraByteOffset + layout.nirByteOffset, true);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { LASHeader, LASMetadata } from "./las-types.js";
|
|
2
|
+
/** Descriptor offsets for LASzip's legacy representation of modern point records. */
|
|
3
|
+
export type LASCompatibilityLayout = {
|
|
4
|
+
/** Logical modern point format, while the source header retains its physical legacy format. */
|
|
5
|
+
pointDataRecordFormat: number;
|
|
6
|
+
/** Logical LAS version stored in the compatibility VLR. */
|
|
7
|
+
version: '1.4' | '1.5';
|
|
8
|
+
/** Packed Extra Bytes offset of the scan angle remainder. */
|
|
9
|
+
scanAngleByteOffset: number;
|
|
10
|
+
/** Packed Extra Bytes offset of the return increments. */
|
|
11
|
+
returnsByteOffset: number;
|
|
12
|
+
/** Packed Extra Bytes offset of the classification increment. */
|
|
13
|
+
classificationByteOffset: number;
|
|
14
|
+
/** Packed Extra Bytes offset of overlap and scanner channel. */
|
|
15
|
+
flagsByteOffset: number;
|
|
16
|
+
/** Packed Extra Bytes offset of optional NIR data. */
|
|
17
|
+
nirByteOffset?: number;
|
|
18
|
+
};
|
|
19
|
+
/** Selected column targets that can be reconstructed from compatibility Extra Bytes. */
|
|
20
|
+
export type LASCompatibilityTarget = {
|
|
21
|
+
/** Classification codes. */
|
|
22
|
+
classifications: Uint8Array | null;
|
|
23
|
+
/** Return numbers. */
|
|
24
|
+
returnNumbers: Uint8Array | null;
|
|
25
|
+
/** Return counts. */
|
|
26
|
+
numberOfReturns: Uint8Array | null;
|
|
27
|
+
/** Scan angles in modern 0.006-degree units. */
|
|
28
|
+
scanAngles: Int16Array | null;
|
|
29
|
+
/** Overlap flags. */
|
|
30
|
+
overlapFlags: Uint8Array | null;
|
|
31
|
+
/** Scanner channels. */
|
|
32
|
+
scannerChannels: Uint8Array | null;
|
|
33
|
+
/** Optional NIR values. */
|
|
34
|
+
nir: Uint16Array | null;
|
|
35
|
+
};
|
|
36
|
+
/** Validate the explicit compatibility marker and locate its descriptor-defined fields. */
|
|
37
|
+
export declare function getLASCompatibilityLayout(header: LASHeader, metadata: LASMetadata): LASCompatibilityLayout | undefined;
|
|
38
|
+
/** Restore selected modern fields from one legacy record without changing raw point bytes. */
|
|
39
|
+
export declare function populateLASCompatibilityPoint(view: DataView, extraByteOffset: number, pointIndex: number, layout: LASCompatibilityLayout, target: LASCompatibilityTarget): void;
|
|
40
|
+
//# sourceMappingURL=las-compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"las-compatibility.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-compatibility.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,uBAAoB;AAExD,qFAAqF;AACrF,MAAM,MAAM,sBAAsB,GAAG;IACnC,+FAA+F;IAC/F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,wBAAwB,EAAE,MAAM,CAAC;IACjC,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,sBAAsB,GAAG;IACnC,4BAA4B;IAC5B,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,sBAAsB;IACtB,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,qBAAqB;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,gDAAgD;IAChD,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,qBAAqB;IACrB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,wBAAwB;IACxB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,2BAA2B;IAC3B,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,WAAW,GACpB,sBAAsB,GAAG,SAAS,CA8EpC;AAcD,8FAA8F;AAC9F,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CA8BN"}
|