@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,192 @@
|
|
|
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/ply/ply-loader.ts
|
|
21
|
+
var ply_loader_exports = {};
|
|
22
|
+
__export(ply_loader_exports, {
|
|
23
|
+
PLYColumnLoader: () => PLYColumnLoader,
|
|
24
|
+
PLYLoaderWithParser: () => PLYLoaderWithParser
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(ply_loader_exports);
|
|
27
|
+
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
28
|
+
var import_loader_utils = require("@loaders.gl/core/loader-utils");
|
|
29
|
+
var import_schema = require("@loaders.gl/core/schema");
|
|
30
|
+
var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
|
|
31
|
+
var import_schema_utils2 = require("@loaders.gl/core/schema-utils");
|
|
32
|
+
var import_parse_ply = require("./lib/parse-ply.cjs");
|
|
33
|
+
var import_parse_ply_arrow = require("./lib/parse-ply-arrow.cjs");
|
|
34
|
+
var import_parse_ply_in_batches = require("./lib/parse-ply-in-batches.cjs");
|
|
35
|
+
var import_ply_loader_types = require("./ply-loader-types.cjs");
|
|
36
|
+
var { preload: _PLYLoaderPreload, ...PLYLoaderMetadataWithoutPreload } = import_ply_loader_types.PLYLoader;
|
|
37
|
+
function convertPLYMesh(mesh, options) {
|
|
38
|
+
const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
|
|
39
|
+
return convertPLYTable(table, options, mesh.loaderData);
|
|
40
|
+
}
|
|
41
|
+
function parsePLYData(data, options) {
|
|
42
|
+
if (options?.ply?._useLegacyParser) {
|
|
43
|
+
return convertPLYMesh((0, import_parse_ply.parsePLY)(data, options?.ply), options);
|
|
44
|
+
}
|
|
45
|
+
const arrowTable = (0, import_parse_ply.parsePLYToArrowTable)(data, options?.ply);
|
|
46
|
+
if (arrowTable) {
|
|
47
|
+
return convertPLYTable(arrowTable, options, (0, import_parse_ply.parsePLYHeader)(data, options?.ply));
|
|
48
|
+
}
|
|
49
|
+
const elementTables = (0, import_parse_ply_arrow.parsePLYToElementTables)(data, options?.ply);
|
|
50
|
+
return convertPLYTable(
|
|
51
|
+
(0, import_parse_ply_arrow.convertPLYElementTablesToMeshArrowTable)(elementTables),
|
|
52
|
+
options,
|
|
53
|
+
elementTables.header
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
var PLYColumnLoader = {
|
|
57
|
+
...PLYLoaderMetadataWithoutPreload,
|
|
58
|
+
dataType: null,
|
|
59
|
+
batchType: null,
|
|
60
|
+
parse: async (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
61
|
+
parseTextSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
62
|
+
parseSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
63
|
+
parseInBatches: (input, options) => (0, import_schema_utils.refineArrowTableBatches)(parsePLYWithMetadataInBatches(input, options)),
|
|
64
|
+
serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
|
|
65
|
+
deserializeWorkerResult: deserializePLYWorkerResult,
|
|
66
|
+
serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
|
|
67
|
+
deserializeWorkerBatch: deserializePLYWorkerBatch
|
|
68
|
+
};
|
|
69
|
+
function convertPLYTable(table, options, header) {
|
|
70
|
+
const loaderData = header || table.loaderData || { comments: [], elements: [] };
|
|
71
|
+
const result = options?.ply?.shape === "arrow" ? { ...table, loader: "ply", loaderData } : {
|
|
72
|
+
...(0, import_schema_utils2.convertTableToMesh)(table),
|
|
73
|
+
loader: "ply",
|
|
74
|
+
loaderData
|
|
75
|
+
};
|
|
76
|
+
const colorFormat = options?.ply?.colorFormat || "uint8norm";
|
|
77
|
+
if (colorFormat === "uint8norm") {
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
const resultData = result;
|
|
81
|
+
const formattedMesh = formatPLYMeshColors(
|
|
82
|
+
isMeshArrowTable(resultData) ? (0, import_schema_utils2.convertTableToMesh)(resultData) : resultData,
|
|
83
|
+
colorFormat
|
|
84
|
+
);
|
|
85
|
+
return options?.ply?.shape === "arrow" ? {
|
|
86
|
+
...(0, import_schema_utils2.convertMeshToArrowTableWrapper)(formattedMesh),
|
|
87
|
+
loader: "ply",
|
|
88
|
+
loaderData
|
|
89
|
+
} : formattedMesh;
|
|
90
|
+
}
|
|
91
|
+
function formatPLYMeshColors(mesh, colorFormat) {
|
|
92
|
+
const colorAttribute = mesh.attributes.COLOR_0;
|
|
93
|
+
if (!colorAttribute) {
|
|
94
|
+
return mesh;
|
|
95
|
+
}
|
|
96
|
+
const sourceScale = colorAttribute.value instanceof Uint16Array ? 65535 : 255;
|
|
97
|
+
const value = colorFormat === "float16" ? (0, import_schema.convertColorArrayToFloat16)(colorAttribute.value, sourceScale) : (0, import_schema.convertColorArrayToFloat32)(colorAttribute.value, sourceScale);
|
|
98
|
+
const attributes = { ...mesh.attributes };
|
|
99
|
+
for (const [attributeName, attribute] of Object.entries(attributes)) {
|
|
100
|
+
if (attribute.value === colorAttribute.value) {
|
|
101
|
+
attributes[attributeName] = {
|
|
102
|
+
...attribute,
|
|
103
|
+
value,
|
|
104
|
+
normalized: false,
|
|
105
|
+
...colorFormat === "float16" ? { componentType: "float16" } : {}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
...mesh,
|
|
111
|
+
attributes,
|
|
112
|
+
schema: (0, import_schema_utils2.deduceMeshSchema)(attributes, mesh.schema.metadata)
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function isMeshArrowTable(data) {
|
|
116
|
+
return "shape" in data && data.shape === "arrow-table";
|
|
117
|
+
}
|
|
118
|
+
function deserializePLYWorkerResult(result, options) {
|
|
119
|
+
const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
|
|
120
|
+
return options?.ply?.shape === "mesh" ? { ...(0, import_schema_utils2.convertTableToMesh)(table), loader: "ply", loaderData: table.loaderData } : table;
|
|
121
|
+
}
|
|
122
|
+
function deserializePLYWorkerBatch(result, options) {
|
|
123
|
+
return deserializePLYWorkerResult(result, options);
|
|
124
|
+
}
|
|
125
|
+
async function* parsePLYWithMetadataInBatches(arrayBuffer, options) {
|
|
126
|
+
const plyOptions = {
|
|
127
|
+
...options?.ply,
|
|
128
|
+
batchSize: options?.core?.batchSize
|
|
129
|
+
};
|
|
130
|
+
for await (const meshOrTable of (0, import_parse_ply_in_batches.parsePLYInBatches)(arrayBuffer, plyOptions)) {
|
|
131
|
+
const convertedData = isMeshArrowTable(meshOrTable) ? convertPLYTable(meshOrTable, options) : convertPLYMesh(meshOrTable, options);
|
|
132
|
+
yield isMeshArrowTable(convertedData) ? (0, import_loader_utils.makeTableScanBatch)(convertedData) : convertedData;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
var PLYLoaderWithParser = {
|
|
136
|
+
...PLYColumnLoader,
|
|
137
|
+
dataType: import_ply_loader_types.PLYLoader.dataType,
|
|
138
|
+
batchType: import_ply_loader_types.PLYLoader.batchType,
|
|
139
|
+
parse: async (input, options) => unwrapPLYTable(await PLYColumnLoader.parse(input, options)),
|
|
140
|
+
parseTextSync: (input, options) => unwrapPLYTable(PLYColumnLoader.parseTextSync(input, options)),
|
|
141
|
+
parseSync: (input, options) => unwrapPLYTable(PLYColumnLoader.parseSync(input, options)),
|
|
142
|
+
async *parseInBatches(input, options) {
|
|
143
|
+
for await (const batch of PLYColumnLoader.parseInBatches(input, options)) {
|
|
144
|
+
if (isColumnBatch(batch)) {
|
|
145
|
+
batch.data.schema.metadata.set(
|
|
146
|
+
"loaders.gl.ply.header",
|
|
147
|
+
JSON.stringify(batch.loaderData)
|
|
148
|
+
);
|
|
149
|
+
for (const recordBatch of batch.data.batches) {
|
|
150
|
+
recordBatch.schema.metadata.set(
|
|
151
|
+
"loaders.gl.ply.header",
|
|
152
|
+
batch.data.schema.metadata.get("loaders.gl.ply.header")
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
if (batch.data.batches.length) yield* batch.data.batches;
|
|
156
|
+
else yield (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
|
|
157
|
+
} else yield batch;
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
deserializeWorkerResult: (result, options) => unwrapPLYTable(PLYColumnLoader.deserializeWorkerResult(result, options)),
|
|
161
|
+
deserializeWorkerBatch(result, options) {
|
|
162
|
+
const batch = PLYColumnLoader.deserializeWorkerBatch(result, options);
|
|
163
|
+
if (isColumnBatch(batch)) {
|
|
164
|
+
const recordBatch = batch.data.batches[0] ?? (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
|
|
165
|
+
recordBatch.schema.metadata.set(
|
|
166
|
+
"loaders.gl.ply.header",
|
|
167
|
+
JSON.stringify(batch.loaderData)
|
|
168
|
+
);
|
|
169
|
+
return recordBatch;
|
|
170
|
+
}
|
|
171
|
+
return batch;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
function unwrapPLYTable(result) {
|
|
175
|
+
if ("shape" in result && result.shape === "arrow-table") {
|
|
176
|
+
result.data.schema.metadata.set(
|
|
177
|
+
"loaders.gl.ply.header",
|
|
178
|
+
JSON.stringify(result.loaderData)
|
|
179
|
+
);
|
|
180
|
+
return result.data;
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
function isColumnBatch(batch) {
|
|
185
|
+
return "shape" in batch && batch.shape === "arrow-table";
|
|
186
|
+
}
|
|
187
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
188
|
+
0 && (module.exports = {
|
|
189
|
+
PLYColumnLoader,
|
|
190
|
+
PLYLoaderWithParser
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=ply-loader.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ply/ply-loader.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {refineArrowTableBatches, makeArrowMetadataBatch} from '@loaders.gl/core/schema-utils';\nimport type {Table, RecordBatch} from 'apache-arrow';\nimport type {PLYLoaderOptions} from './ply-loader-types';\n\n// PLY Loader\nimport {makeTableScanBatch, type LoaderWithParser} from '@loaders.gl/core/loader-utils';\nimport {convertColorArrayToFloat16, convertColorArrayToFloat32} from '@loaders.gl/core/schema';\nimport type {MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport type {PLYHeader, PLYMesh} from './lib/ply-types';\nimport {\n convertMeshToArrowTableWrapper,\n convertTableToMesh,\n deduceMeshSchema\n} from '@loaders.gl/core/schema-utils';\nimport {parsePLY, parsePLYHeader, parsePLYToArrowTable} from './lib/parse-ply';\nimport {\n convertPLYElementTablesToMeshArrowTable,\n parsePLYToElementTables\n} from './lib/parse-ply-arrow';\nimport {parsePLYInBatches} from './lib/parse-ply-in-batches';\nimport {PLYLoader as PLYLoaderMetadata} from './ply-loader-types';\n\nconst {preload: _PLYLoaderPreload, ...PLYLoaderMetadataWithoutPreload} = PLYLoaderMetadata;\n\nfunction convertPLYMesh(mesh: PLYMesh, options?: PLYLoaderOptions): PLYMesh | MeshArrowTable {\n const table = convertMeshToArrowTableWrapper(mesh);\n return convertPLYTable(table, options, mesh.loaderData);\n}\n\n/** Parse PLY data using a direct Arrow path when requested and supported. */\nfunction parsePLYData(\n data: ArrayBuffer | string,\n options?: PLYLoaderOptions\n): PLYMesh | MeshArrowTable {\n if (options?.ply?._useLegacyParser) {\n return convertPLYMesh(parsePLY(data, options?.ply), options);\n }\n\n const arrowTable = parsePLYToArrowTable(data, options?.ply);\n if (arrowTable) {\n return convertPLYTable(arrowTable, options, parsePLYHeader(data, options?.ply));\n }\n\n const elementTables = parsePLYToElementTables(data, options?.ply);\n return convertPLYTable(\n convertPLYElementTablesToMeshArrowTable(elementTables),\n options,\n elementTables.header\n );\n}\n\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYColumnLoader = {\n ...PLYLoaderMetadataWithoutPreload,\n dataType: null as unknown as PLYMesh | MeshArrowTable,\n batchType: null as unknown as PLYMesh | ArrowTableBatch,\n parse: async (arrayBuffer, options) => parsePLYData(arrayBuffer, options),\n parseTextSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),\n parseSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),\n parseInBatches: (input, options) =>\n refineArrowTableBatches(parsePLYWithMetadataInBatches(input, options)),\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializePLYWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializePLYWorkerBatch\n} as const satisfies LoaderWithParser<\n PLYMesh | MeshArrowTable,\n PLYMesh | ArrowTableBatch,\n PLYLoaderOptions\n>;\n\n/** Return requested public PLY shape from the parser's Arrow table. */\nfunction convertPLYTable(\n table: MeshArrowTable & {\n /** Original source header retained by the streaming parser. */\n loaderData?: PLYHeader;\n },\n options?: PLYLoaderOptions,\n header?: PLYHeader\n): PLYMesh | MeshArrowTable {\n const loaderData = header || table.loaderData || {comments: [], elements: []};\n const result =\n options?.ply?.shape === 'arrow'\n ? {...table, loader: 'ply' as const, loaderData}\n : {\n ...(convertTableToMesh(table) as PLYMesh),\n loader: 'ply',\n loaderData\n };\n const colorFormat = options?.ply?.colorFormat || 'uint8norm';\n if (colorFormat === 'uint8norm') {\n return result as PLYMesh | MeshArrowTable;\n }\n\n const resultData = result as PLYMesh | MeshArrowTable;\n const formattedMesh = formatPLYMeshColors(\n (isMeshArrowTable(resultData) ? convertTableToMesh(resultData) : resultData) as PLYMesh,\n colorFormat\n );\n return options?.ply?.shape === 'arrow'\n ? {\n ...convertMeshToArrowTableWrapper(formattedMesh),\n loader: 'ply' as const,\n loaderData\n }\n : (formattedMesh as PLYMesh);\n}\n\n/** Apply the requested normalized color representation to a decoded PLY mesh. */\nfunction formatPLYMeshColors(\n mesh: PLYMesh,\n colorFormat: 'uint8norm' | 'float16' | 'float32'\n): PLYMesh {\n const colorAttribute = mesh.attributes.COLOR_0;\n if (!colorAttribute) {\n return mesh;\n }\n\n const sourceScale = colorAttribute.value instanceof Uint16Array ? 65535 : 255;\n const value =\n colorFormat === 'float16'\n ? convertColorArrayToFloat16(colorAttribute.value, sourceScale)\n : convertColorArrayToFloat32(colorAttribute.value, sourceScale);\n const attributes = {...mesh.attributes};\n for (const [attributeName, attribute] of Object.entries(attributes)) {\n if (attribute.value === colorAttribute.value) {\n attributes[attributeName] = {\n ...attribute,\n value,\n normalized: false,\n ...(colorFormat === 'float16' ? {componentType: 'float16' as const} : {})\n };\n }\n }\n return {\n ...mesh,\n attributes,\n schema: deduceMeshSchema(attributes, mesh.schema.metadata)\n };\n}\n\n/** Return true if a parsed PLY batch is already a Mesh Arrow table. */\nfunction isMeshArrowTable(data: PLYMesh | MeshArrowTable): data is MeshArrowTable {\n return 'shape' in data && data.shape === 'arrow-table';\n}\n\n/** Hydrates worker columns and applies the requested PLY shape on the caller. */\nfunction deserializePLYWorkerResult(\n result: unknown,\n options?: PLYLoaderOptions\n): PLYMesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.ply?.shape === 'mesh'\n ? {...convertTableToMesh(table), loader: 'ply', loaderData: table.loaderData}\n : table;\n}\n\n/** Converts mesh batches only after the Arrow column buffers reach the caller. */\nfunction deserializePLYWorkerBatch(\n result: unknown,\n options?: PLYLoaderOptions\n): PLYMesh | ArrowTableBatch {\n return deserializePLYWorkerResult(result, options) as PLYMesh | ArrowTableBatch;\n}\n\n/** Parses PLY batches before shared cumulative metadata refinement. */\nasync function* parsePLYWithMetadataInBatches(\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options?: PLYLoaderOptions\n) {\n const plyOptions = {\n ...options?.ply,\n batchSize: options?.core?.batchSize\n };\n for await (const meshOrTable of parsePLYInBatches(arrayBuffer, plyOptions)) {\n const convertedData = isMeshArrowTable(meshOrTable)\n ? convertPLYTable(meshOrTable, options)\n : convertPLYMesh(meshOrTable, options);\n yield isMeshArrowTable(convertedData) ? makeTableScanBatch(convertedData) : convertedData;\n }\n}\n\n/** Exposes native Arrow output while retaining the worker's column protocol. */\nexport const PLYLoaderWithParser = {\n ...PLYColumnLoader,\n dataType: PLYLoaderMetadata.dataType,\n batchType: PLYLoaderMetadata.batchType,\n parse: async (input: ArrayBuffer, options?: PLYLoaderOptions) =>\n unwrapPLYTable(await PLYColumnLoader.parse(input, options)),\n parseTextSync: (input: string, options?: PLYLoaderOptions) =>\n unwrapPLYTable(PLYColumnLoader.parseTextSync(input, options)),\n parseSync: (input: ArrayBuffer, options?: PLYLoaderOptions) =>\n unwrapPLYTable(PLYColumnLoader.parseSync(input, options)),\n async *parseInBatches(input, options) {\n for await (const batch of PLYColumnLoader.parseInBatches(input, options)) {\n if (isColumnBatch(batch)) {\n batch.data.schema.metadata.set(\n 'loaders.gl.ply.header',\n JSON.stringify((batch as ArrowTableBatch & {loaderData?: unknown}).loaderData)\n );\n for (const recordBatch of batch.data.batches) {\n recordBatch.schema.metadata.set(\n 'loaders.gl.ply.header',\n batch.data.schema.metadata.get('loaders.gl.ply.header')!\n );\n }\n if (batch.data.batches.length) yield* batch.data.batches;\n else yield makeArrowMetadataBatch(batch.data.schema);\n } else yield batch;\n }\n },\n deserializeWorkerResult: (result: unknown, options?: PLYLoaderOptions) =>\n unwrapPLYTable(PLYColumnLoader.deserializeWorkerResult(result, options)),\n deserializeWorkerBatch(result: unknown, options?: PLYLoaderOptions) {\n const batch = PLYColumnLoader.deserializeWorkerBatch(result, options);\n if (isColumnBatch(batch)) {\n const recordBatch = batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema);\n recordBatch.schema.metadata.set(\n 'loaders.gl.ply.header',\n JSON.stringify((batch as ArrowTableBatch & {loaderData?: unknown}).loaderData)\n );\n return recordBatch;\n }\n return batch;\n }\n} as const satisfies LoaderWithParser<PLYMesh | Table, PLYMesh | RecordBatch, PLYLoaderOptions>;\n\n/** Returns the Arrow table with its file metadata or the requested mesh. */\nfunction unwrapPLYTable(result: PLYMesh | MeshArrowTable): PLYMesh | Table {\n if ('shape' in result && result.shape === 'arrow-table') {\n result.data.schema.metadata.set(\n 'loaders.gl.ply.header',\n JSON.stringify((result as MeshArrowTable & {loaderData?: unknown}).loaderData)\n );\n return result.data;\n }\n return result as PLYMesh;\n}\n\n/** Identifies the private Arrow batch envelope. */\nfunction isColumnBatch(batch: PLYMesh | ArrowTableBatch): batch is ArrowTableBatch {\n return 'shape' in batch && batch.shape === 'arrow-table';\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_schema_utils", "PLYLoaderMetadata"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Table, RecordBatch } from 'apache-arrow';
|
|
2
|
+
import type { PLYLoaderOptions } from "./ply-loader-types.js";
|
|
3
|
+
import type { MeshArrowTable, ArrowTableBatch } from '@loaders.gl/core/schema';
|
|
4
|
+
import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
|
|
5
|
+
import type { PLYMesh } from "./lib/ply-types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Loader for PLY - Polygon File Format
|
|
8
|
+
*/
|
|
9
|
+
export declare const PLYColumnLoader: {
|
|
10
|
+
readonly dataType: PLYMesh | MeshArrowTable;
|
|
11
|
+
readonly batchType: PLYMesh | ArrowTableBatch;
|
|
12
|
+
readonly parse: (arrayBuffer: ArrayBuffer, options: PLYLoaderOptions | undefined) => Promise<MeshArrowTable | PLYMesh>;
|
|
13
|
+
readonly parseTextSync: (arrayBuffer: string, options: PLYLoaderOptions | undefined) => MeshArrowTable | PLYMesh;
|
|
14
|
+
readonly parseSync: (arrayBuffer: ArrayBuffer, options: PLYLoaderOptions | undefined) => MeshArrowTable | PLYMesh;
|
|
15
|
+
readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: PLYLoaderOptions | undefined) => AsyncIterable<ArrowTableBatch | PLYMesh>;
|
|
16
|
+
readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
|
|
17
|
+
readonly deserializeWorkerResult: typeof deserializePLYWorkerResult;
|
|
18
|
+
readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
|
|
19
|
+
readonly deserializeWorkerBatch: typeof deserializePLYWorkerBatch;
|
|
20
|
+
readonly version: any;
|
|
21
|
+
readonly worker: true;
|
|
22
|
+
readonly workerInBatches: true;
|
|
23
|
+
readonly options: {
|
|
24
|
+
readonly ply: {
|
|
25
|
+
readonly shape: "arrow";
|
|
26
|
+
readonly colorFormat: "uint8norm";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
readonly name: "PLY";
|
|
30
|
+
readonly id: "ply";
|
|
31
|
+
readonly module: "pointclouds";
|
|
32
|
+
readonly encoding: "text";
|
|
33
|
+
readonly format: "ply";
|
|
34
|
+
readonly extensions: ["ply"];
|
|
35
|
+
readonly mimeTypes: ["text/plain", "application/octet-stream"];
|
|
36
|
+
readonly text: true;
|
|
37
|
+
readonly binary: true;
|
|
38
|
+
readonly tests: ["ply"];
|
|
39
|
+
readonly defaultShape: "arrow";
|
|
40
|
+
readonly supportsNativeArrow: true;
|
|
41
|
+
};
|
|
42
|
+
/** Hydrates worker columns and applies the requested PLY shape on the caller. */
|
|
43
|
+
declare function deserializePLYWorkerResult(result: unknown, options?: PLYLoaderOptions): PLYMesh | MeshArrowTable;
|
|
44
|
+
/** Converts mesh batches only after the Arrow column buffers reach the caller. */
|
|
45
|
+
declare function deserializePLYWorkerBatch(result: unknown, options?: PLYLoaderOptions): PLYMesh | ArrowTableBatch;
|
|
46
|
+
/** Exposes native Arrow output while retaining the worker's column protocol. */
|
|
47
|
+
export declare const PLYLoaderWithParser: {
|
|
48
|
+
readonly dataType: Table<any> | PLYMesh;
|
|
49
|
+
readonly batchType: RecordBatch<any> | PLYMesh;
|
|
50
|
+
readonly parse: (input: ArrayBuffer, options?: PLYLoaderOptions) => Promise<Table<any> | PLYMesh>;
|
|
51
|
+
readonly parseTextSync: (input: string, options?: PLYLoaderOptions) => Table<any> | PLYMesh;
|
|
52
|
+
readonly parseSync: (input: ArrayBuffer, options?: PLYLoaderOptions) => Table<any> | PLYMesh;
|
|
53
|
+
readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: PLYLoaderOptions | undefined) => AsyncGenerator<RecordBatch<any> | PLYMesh, void, unknown>;
|
|
54
|
+
readonly deserializeWorkerResult: (result: unknown, options?: PLYLoaderOptions) => Table<any> | PLYMesh;
|
|
55
|
+
readonly deserializeWorkerBatch: (result: unknown, options?: PLYLoaderOptions) => RecordBatch<any> | PLYMesh;
|
|
56
|
+
readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
|
|
57
|
+
readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
|
|
58
|
+
readonly version: any;
|
|
59
|
+
readonly worker: true;
|
|
60
|
+
readonly workerInBatches: true;
|
|
61
|
+
readonly options: {
|
|
62
|
+
readonly ply: {
|
|
63
|
+
readonly shape: "arrow";
|
|
64
|
+
readonly colorFormat: "uint8norm";
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
readonly name: "PLY";
|
|
68
|
+
readonly id: "ply";
|
|
69
|
+
readonly module: "pointclouds";
|
|
70
|
+
readonly encoding: "text";
|
|
71
|
+
readonly format: "ply";
|
|
72
|
+
readonly extensions: ["ply"];
|
|
73
|
+
readonly mimeTypes: ["text/plain", "application/octet-stream"];
|
|
74
|
+
readonly text: true;
|
|
75
|
+
readonly binary: true;
|
|
76
|
+
readonly tests: ["ply"];
|
|
77
|
+
readonly defaultShape: "arrow";
|
|
78
|
+
readonly supportsNativeArrow: true;
|
|
79
|
+
};
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=ply-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-loader.d.ts","sourceRoot":"","sources":["../../src/ply/ply-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,8BAA2B;AAKzD,OAAO,KAAK,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAY,OAAO,EAAC,2BAAwB;AA2CxD;;GAEG;AACH,eAAO,MAAM,eAAe;uBAEG,OAAO,GAAG,cAAc;wBACvB,OAAO,GAAG,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcxD,CAAC;AA6EF,iFAAiF;AACjF,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,GAAG,cAAc,CAK1B;AAED,kFAAkF;AAClF,iBAAS,yBAAyB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,GAAG,eAAe,CAE3B;AAqBD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;4BAIT,WAAW,YAAY,gBAAgB;oCAErC,MAAM,YAAY,gBAAgB;gCAEtC,WAAW,YAAY,gBAAgB;;+CAoBxB,OAAO,YAAY,gBAAgB;8CAEtC,OAAO,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;CAY2B,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { refineArrowTableBatches, makeArrowMetadataBatch } from '@loaders.gl/core/schema-utils';
|
|
5
|
+
// PLY Loader
|
|
6
|
+
import { makeTableScanBatch } from '@loaders.gl/core/loader-utils';
|
|
7
|
+
import { convertColorArrayToFloat16, convertColorArrayToFloat32 } from '@loaders.gl/core/schema';
|
|
8
|
+
import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
|
|
9
|
+
import { convertMeshToArrowTableWrapper, convertTableToMesh, deduceMeshSchema } from '@loaders.gl/core/schema-utils';
|
|
10
|
+
import { parsePLY, parsePLYHeader, parsePLYToArrowTable } from "./lib/parse-ply.js";
|
|
11
|
+
import { convertPLYElementTablesToMeshArrowTable, parsePLYToElementTables } from "./lib/parse-ply-arrow.js";
|
|
12
|
+
import { parsePLYInBatches } from "./lib/parse-ply-in-batches.js";
|
|
13
|
+
import { PLYLoader as PLYLoaderMetadata } from "./ply-loader-types.js";
|
|
14
|
+
const { preload: _PLYLoaderPreload, ...PLYLoaderMetadataWithoutPreload } = PLYLoaderMetadata;
|
|
15
|
+
function convertPLYMesh(mesh, options) {
|
|
16
|
+
const table = convertMeshToArrowTableWrapper(mesh);
|
|
17
|
+
return convertPLYTable(table, options, mesh.loaderData);
|
|
18
|
+
}
|
|
19
|
+
/** Parse PLY data using a direct Arrow path when requested and supported. */
|
|
20
|
+
function parsePLYData(data, options) {
|
|
21
|
+
if (options?.ply?._useLegacyParser) {
|
|
22
|
+
return convertPLYMesh(parsePLY(data, options?.ply), options);
|
|
23
|
+
}
|
|
24
|
+
const arrowTable = parsePLYToArrowTable(data, options?.ply);
|
|
25
|
+
if (arrowTable) {
|
|
26
|
+
return convertPLYTable(arrowTable, options, parsePLYHeader(data, options?.ply));
|
|
27
|
+
}
|
|
28
|
+
const elementTables = parsePLYToElementTables(data, options?.ply);
|
|
29
|
+
return convertPLYTable(convertPLYElementTablesToMeshArrowTable(elementTables), options, elementTables.header);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Loader for PLY - Polygon File Format
|
|
33
|
+
*/
|
|
34
|
+
export const PLYColumnLoader = {
|
|
35
|
+
...PLYLoaderMetadataWithoutPreload,
|
|
36
|
+
dataType: null,
|
|
37
|
+
batchType: null,
|
|
38
|
+
parse: async (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
39
|
+
parseTextSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
40
|
+
parseSync: (arrayBuffer, options) => parsePLYData(arrayBuffer, options),
|
|
41
|
+
parseInBatches: (input, options) => refineArrowTableBatches(parsePLYWithMetadataInBatches(input, options)),
|
|
42
|
+
serializeWorkerResult: serializeArrowWorkerTable,
|
|
43
|
+
deserializeWorkerResult: deserializePLYWorkerResult,
|
|
44
|
+
serializeWorkerBatch: serializeArrowWorkerTable,
|
|
45
|
+
deserializeWorkerBatch: deserializePLYWorkerBatch
|
|
46
|
+
};
|
|
47
|
+
/** Return requested public PLY shape from the parser's Arrow table. */
|
|
48
|
+
function convertPLYTable(table, options, header) {
|
|
49
|
+
const loaderData = header || table.loaderData || { comments: [], elements: [] };
|
|
50
|
+
const result = options?.ply?.shape === 'arrow'
|
|
51
|
+
? { ...table, loader: 'ply', loaderData }
|
|
52
|
+
: {
|
|
53
|
+
...convertTableToMesh(table),
|
|
54
|
+
loader: 'ply',
|
|
55
|
+
loaderData
|
|
56
|
+
};
|
|
57
|
+
const colorFormat = options?.ply?.colorFormat || 'uint8norm';
|
|
58
|
+
if (colorFormat === 'uint8norm') {
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
const resultData = result;
|
|
62
|
+
const formattedMesh = formatPLYMeshColors((isMeshArrowTable(resultData) ? convertTableToMesh(resultData) : resultData), colorFormat);
|
|
63
|
+
return options?.ply?.shape === 'arrow'
|
|
64
|
+
? {
|
|
65
|
+
...convertMeshToArrowTableWrapper(formattedMesh),
|
|
66
|
+
loader: 'ply',
|
|
67
|
+
loaderData
|
|
68
|
+
}
|
|
69
|
+
: formattedMesh;
|
|
70
|
+
}
|
|
71
|
+
/** Apply the requested normalized color representation to a decoded PLY mesh. */
|
|
72
|
+
function formatPLYMeshColors(mesh, colorFormat) {
|
|
73
|
+
const colorAttribute = mesh.attributes.COLOR_0;
|
|
74
|
+
if (!colorAttribute) {
|
|
75
|
+
return mesh;
|
|
76
|
+
}
|
|
77
|
+
const sourceScale = colorAttribute.value instanceof Uint16Array ? 65535 : 255;
|
|
78
|
+
const value = colorFormat === 'float16'
|
|
79
|
+
? convertColorArrayToFloat16(colorAttribute.value, sourceScale)
|
|
80
|
+
: convertColorArrayToFloat32(colorAttribute.value, sourceScale);
|
|
81
|
+
const attributes = { ...mesh.attributes };
|
|
82
|
+
for (const [attributeName, attribute] of Object.entries(attributes)) {
|
|
83
|
+
if (attribute.value === colorAttribute.value) {
|
|
84
|
+
attributes[attributeName] = {
|
|
85
|
+
...attribute,
|
|
86
|
+
value,
|
|
87
|
+
normalized: false,
|
|
88
|
+
...(colorFormat === 'float16' ? { componentType: 'float16' } : {})
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
...mesh,
|
|
94
|
+
attributes,
|
|
95
|
+
schema: deduceMeshSchema(attributes, mesh.schema.metadata)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Return true if a parsed PLY batch is already a Mesh Arrow table. */
|
|
99
|
+
function isMeshArrowTable(data) {
|
|
100
|
+
return 'shape' in data && data.shape === 'arrow-table';
|
|
101
|
+
}
|
|
102
|
+
/** Hydrates worker columns and applies the requested PLY shape on the caller. */
|
|
103
|
+
function deserializePLYWorkerResult(result, options) {
|
|
104
|
+
const table = deserializeArrowWorkerTable(result);
|
|
105
|
+
return options?.ply?.shape === 'mesh'
|
|
106
|
+
? { ...convertTableToMesh(table), loader: 'ply', loaderData: table.loaderData }
|
|
107
|
+
: table;
|
|
108
|
+
}
|
|
109
|
+
/** Converts mesh batches only after the Arrow column buffers reach the caller. */
|
|
110
|
+
function deserializePLYWorkerBatch(result, options) {
|
|
111
|
+
return deserializePLYWorkerResult(result, options);
|
|
112
|
+
}
|
|
113
|
+
/** Parses PLY batches before shared cumulative metadata refinement. */
|
|
114
|
+
async function* parsePLYWithMetadataInBatches(arrayBuffer, options) {
|
|
115
|
+
const plyOptions = {
|
|
116
|
+
...options?.ply,
|
|
117
|
+
batchSize: options?.core?.batchSize
|
|
118
|
+
};
|
|
119
|
+
for await (const meshOrTable of parsePLYInBatches(arrayBuffer, plyOptions)) {
|
|
120
|
+
const convertedData = isMeshArrowTable(meshOrTable)
|
|
121
|
+
? convertPLYTable(meshOrTable, options)
|
|
122
|
+
: convertPLYMesh(meshOrTable, options);
|
|
123
|
+
yield isMeshArrowTable(convertedData) ? makeTableScanBatch(convertedData) : convertedData;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Exposes native Arrow output while retaining the worker's column protocol. */
|
|
127
|
+
export const PLYLoaderWithParser = {
|
|
128
|
+
...PLYColumnLoader,
|
|
129
|
+
dataType: PLYLoaderMetadata.dataType,
|
|
130
|
+
batchType: PLYLoaderMetadata.batchType,
|
|
131
|
+
parse: async (input, options) => unwrapPLYTable(await PLYColumnLoader.parse(input, options)),
|
|
132
|
+
parseTextSync: (input, options) => unwrapPLYTable(PLYColumnLoader.parseTextSync(input, options)),
|
|
133
|
+
parseSync: (input, options) => unwrapPLYTable(PLYColumnLoader.parseSync(input, options)),
|
|
134
|
+
async *parseInBatches(input, options) {
|
|
135
|
+
for await (const batch of PLYColumnLoader.parseInBatches(input, options)) {
|
|
136
|
+
if (isColumnBatch(batch)) {
|
|
137
|
+
batch.data.schema.metadata.set('loaders.gl.ply.header', JSON.stringify(batch.loaderData));
|
|
138
|
+
for (const recordBatch of batch.data.batches) {
|
|
139
|
+
recordBatch.schema.metadata.set('loaders.gl.ply.header', batch.data.schema.metadata.get('loaders.gl.ply.header'));
|
|
140
|
+
}
|
|
141
|
+
if (batch.data.batches.length)
|
|
142
|
+
yield* batch.data.batches;
|
|
143
|
+
else
|
|
144
|
+
yield makeArrowMetadataBatch(batch.data.schema);
|
|
145
|
+
}
|
|
146
|
+
else
|
|
147
|
+
yield batch;
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
deserializeWorkerResult: (result, options) => unwrapPLYTable(PLYColumnLoader.deserializeWorkerResult(result, options)),
|
|
151
|
+
deserializeWorkerBatch(result, options) {
|
|
152
|
+
const batch = PLYColumnLoader.deserializeWorkerBatch(result, options);
|
|
153
|
+
if (isColumnBatch(batch)) {
|
|
154
|
+
const recordBatch = batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema);
|
|
155
|
+
recordBatch.schema.metadata.set('loaders.gl.ply.header', JSON.stringify(batch.loaderData));
|
|
156
|
+
return recordBatch;
|
|
157
|
+
}
|
|
158
|
+
return batch;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
/** Returns the Arrow table with its file metadata or the requested mesh. */
|
|
162
|
+
function unwrapPLYTable(result) {
|
|
163
|
+
if ('shape' in result && result.shape === 'arrow-table') {
|
|
164
|
+
result.data.schema.metadata.set('loaders.gl.ply.header', JSON.stringify(result.loaderData));
|
|
165
|
+
return result.data;
|
|
166
|
+
}
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
/** Identifies the private Arrow batch envelope. */
|
|
170
|
+
function isColumnBatch(batch) {
|
|
171
|
+
return 'shape' in batch && batch.shape === 'arrow-table';
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=ply-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-loader.js","sourceRoot":"","sources":["../../src/ply/ply-loader.ts"],"names":[],"mappings":"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"}
|