@loaders.gl/pointclouds 0.0.0-stage → 5.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/LAS-README.md +12 -0
  2. package/LICENSE +24 -0
  3. package/PCD-README.md +12 -0
  4. package/PLY-README.md +38 -0
  5. package/README.md +11 -2
  6. package/THIRD-PARTY-NOTICES.md +27 -0
  7. package/dist/dist.dev.js +30165 -0
  8. package/dist/dist.min.js +54 -0
  9. package/dist/index.cjs +61 -0
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/las/bundled.cjs +72 -0
  16. package/dist/las/bundled.cjs.map +7 -0
  17. package/dist/las/bundled.d.ts +12 -0
  18. package/dist/las/bundled.d.ts.map +1 -0
  19. package/dist/las/bundled.js +12 -0
  20. package/dist/las/bundled.js.map +1 -0
  21. package/dist/las/index.cjs +78 -0
  22. package/dist/las/index.cjs.map +7 -0
  23. package/dist/las/index.d.ts +17 -0
  24. package/dist/las/index.d.ts.map +1 -0
  25. package/dist/las/index.js +15 -0
  26. package/dist/las/index.js.map +1 -0
  27. package/dist/las/las-copc-loader-types.cjs +49 -0
  28. package/dist/las/las-copc-loader-types.cjs.map +7 -0
  29. package/dist/las/las-copc-loader-types.d.ts +63 -0
  30. package/dist/las/las-copc-loader-types.d.ts.map +1 -0
  31. package/dist/las/las-copc-loader-types.js +14 -0
  32. package/dist/las/las-copc-loader-types.js.map +1 -0
  33. package/dist/las/las-copc-loader.cjs +57 -0
  34. package/dist/las/las-copc-loader.cjs.map +7 -0
  35. package/dist/las/las-copc-loader.d.ts +37 -0
  36. package/dist/las/las-copc-loader.d.ts.map +1 -0
  37. package/dist/las/las-copc-loader.js +40 -0
  38. package/dist/las/las-copc-loader.js.map +1 -0
  39. package/dist/las/las-format.cjs +44 -0
  40. package/dist/las/las-format.cjs.map +7 -0
  41. package/dist/las/las-format.d.ts +16 -0
  42. package/dist/las/las-format.d.ts.map +1 -0
  43. package/dist/las/las-format.js +19 -0
  44. package/dist/las/las-format.js.map +1 -0
  45. package/dist/las/las-loader-shared.cjs +82 -0
  46. package/dist/las/las-loader-shared.cjs.map +7 -0
  47. package/dist/las/las-loader-shared.d.ts +66 -0
  48. package/dist/las/las-loader-shared.d.ts.map +1 -0
  49. package/dist/las/las-loader-shared.js +58 -0
  50. package/dist/las/las-loader-shared.js.map +1 -0
  51. package/dist/las/las-loader-types.cjs +54 -0
  52. package/dist/las/las-loader-types.cjs.map +7 -0
  53. package/dist/las/las-loader-types.d.ts +104 -0
  54. package/dist/las/las-loader-types.d.ts.map +1 -0
  55. package/dist/las/las-loader-types.js +19 -0
  56. package/dist/las/las-loader-types.js.map +1 -0
  57. package/dist/las/las-loader.cjs +80 -0
  58. package/dist/las/las-loader.cjs.map +7 -0
  59. package/dist/las/las-loader.d.ts +45 -0
  60. package/dist/las/las-loader.d.ts.map +1 -0
  61. package/dist/las/las-loader.js +58 -0
  62. package/dist/las/las-loader.js.map +1 -0
  63. package/dist/las/las-writer.cjs +1054 -0
  64. package/dist/las/las-writer.cjs.map +7 -0
  65. package/dist/las/las-writer.d.ts +69 -0
  66. package/dist/las/las-writer.d.ts.map +1 -0
  67. package/dist/las/las-writer.js +994 -0
  68. package/dist/las/las-writer.js.map +1 -0
  69. package/dist/las/laz-rs-loader-types.cjs +49 -0
  70. package/dist/las/laz-rs-loader-types.cjs.map +7 -0
  71. package/dist/las/laz-rs-loader-types.d.ts +65 -0
  72. package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
  73. package/dist/las/laz-rs-loader-types.js +16 -0
  74. package/dist/las/laz-rs-loader-types.js.map +1 -0
  75. package/dist/las/laz-rs-loader.cjs +272 -0
  76. package/dist/las/laz-rs-loader.cjs.map +7 -0
  77. package/dist/las/laz-rs-loader.d.ts +37 -0
  78. package/dist/las/laz-rs-loader.d.ts.map +1 -0
  79. package/dist/las/laz-rs-loader.js +38 -0
  80. package/dist/las/laz-rs-loader.js.map +1 -0
  81. package/dist/las/lazperf-loader-types.cjs +49 -0
  82. package/dist/las/lazperf-loader-types.cjs.map +7 -0
  83. package/dist/las/lazperf-loader-types.d.ts +67 -0
  84. package/dist/las/lazperf-loader-types.d.ts.map +1 -0
  85. package/dist/las/lazperf-loader-types.js +17 -0
  86. package/dist/las/lazperf-loader-types.js.map +1 -0
  87. package/dist/las/lazperf-loader.cjs +60 -0
  88. package/dist/las/lazperf-loader.cjs.map +7 -0
  89. package/dist/las/lazperf-loader.d.ts +39 -0
  90. package/dist/las/lazperf-loader.d.ts.map +1 -0
  91. package/dist/las/lazperf-loader.js +44 -0
  92. package/dist/las/lazperf-loader.js.map +1 -0
  93. package/dist/las/lib/copc/parse-las.cjs +177 -0
  94. package/dist/las/lib/copc/parse-las.cjs.map +7 -0
  95. package/dist/las/lib/copc/parse-las.d.ts +17 -0
  96. package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
  97. package/dist/las/lib/copc/parse-las.js +215 -0
  98. package/dist/las/lib/copc/parse-las.js.map +1 -0
  99. package/dist/las/lib/get-las-schema.cjs +62 -0
  100. package/dist/las/lib/get-las-schema.cjs.map +7 -0
  101. package/dist/las/lib/get-las-schema.d.ts +16 -0
  102. package/dist/las/lib/get-las-schema.d.ts.map +1 -0
  103. package/dist/las/lib/get-las-schema.js +46 -0
  104. package/dist/las/lib/get-las-schema.js.map +1 -0
  105. package/dist/las/lib/las-compatibility.cjs +110 -0
  106. package/dist/las/lib/las-compatibility.cjs.map +7 -0
  107. package/dist/las/lib/las-compatibility.d.ts +40 -0
  108. package/dist/las/lib/las-compatibility.d.ts.map +1 -0
  109. package/dist/las/lib/las-compatibility.js +115 -0
  110. package/dist/las/lib/las-compatibility.js.map +1 -0
  111. package/dist/las/lib/las-extra-bytes.cjs +223 -0
  112. package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
  113. package/dist/las/lib/las-extra-bytes.d.ts +35 -0
  114. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
  115. package/dist/las/lib/las-extra-bytes.js +195 -0
  116. package/dist/las/lib/las-extra-bytes.js.map +1 -0
  117. package/dist/las/lib/las-types.cjs +19 -0
  118. package/dist/las/lib/las-types.cjs.map +7 -0
  119. package/dist/las/lib/las-types.d.ts +194 -0
  120. package/dist/las/lib/las-types.d.ts.map +1 -0
  121. package/dist/las/lib/las-types.js +5 -0
  122. package/dist/las/lib/las-types.js.map +1 -0
  123. package/dist/las/lib/las-waveform.cjs +196 -0
  124. package/dist/las/lib/las-waveform.cjs.map +7 -0
  125. package/dist/las/lib/las-waveform.d.ts +89 -0
  126. package/dist/las/lib/las-waveform.d.ts.map +1 -0
  127. package/dist/las/lib/las-waveform.js +193 -0
  128. package/dist/las/lib/las-waveform.js.map +1 -0
  129. package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
  130. package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
  131. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
  132. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
  133. package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
  134. package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
  135. package/dist/las/lib/laz-perf/parse-las.cjs +270 -0
  136. package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
  137. package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
  138. package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
  139. package/dist/las/lib/laz-perf/parse-las.js +307 -0
  140. package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
  141. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
  142. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
  143. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
  144. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
  145. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
  146. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
  147. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +270 -0
  148. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
  149. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
  150. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
  151. package/dist/las/lib/laz-rs-wasm/parse-las.js +307 -0
  152. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
  153. package/dist/las/lib/typescript/parse-las.cjs +2767 -0
  154. package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
  155. package/dist/las/lib/typescript/parse-las.d.ts +39 -0
  156. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
  157. package/dist/las/lib/typescript/parse-las.js +2607 -0
  158. package/dist/las/lib/typescript/parse-las.js.map +1 -0
  159. package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
  160. package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
  161. package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
  162. package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
  163. package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
  164. package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
  165. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
  166. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
  167. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
  168. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
  169. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  170. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  171. package/dist/las/unbundled.cjs +71 -0
  172. package/dist/las/unbundled.cjs.map +7 -0
  173. package/dist/las/unbundled.d.ts +11 -0
  174. package/dist/las/unbundled.d.ts.map +1 -0
  175. package/dist/las/unbundled.js +11 -0
  176. package/dist/las/unbundled.js.map +1 -0
  177. package/dist/las/workers/las-worker.cjs +23 -0
  178. package/dist/las/workers/las-worker.cjs.map +7 -0
  179. package/dist/las/workers/las-worker.d.ts +2 -0
  180. package/dist/las/workers/las-worker.d.ts.map +1 -0
  181. package/dist/las/workers/las-worker.js +23 -0
  182. package/dist/las/workers/las-worker.js.map +1 -0
  183. package/dist/las-copc-loader-types.cjs +51 -0
  184. package/dist/las-copc-loader-types.cjs.map +7 -0
  185. package/dist/las-copc-loader-types.d.ts +2 -0
  186. package/dist/las-copc-loader-types.d.ts.map +1 -0
  187. package/dist/las-copc-loader-types.js +2 -0
  188. package/dist/las-copc-loader-types.js.map +1 -0
  189. package/dist/las-copc-loader.cjs +59 -0
  190. package/dist/las-copc-loader.cjs.map +7 -0
  191. package/dist/las-copc-loader.d.ts +2 -0
  192. package/dist/las-copc-loader.d.ts.map +1 -0
  193. package/dist/las-copc-loader.js +2 -0
  194. package/dist/las-copc-loader.js.map +1 -0
  195. package/dist/las-loader-types.cjs +56 -0
  196. package/dist/las-loader-types.cjs.map +7 -0
  197. package/dist/las-loader-types.d.ts +2 -0
  198. package/dist/las-loader-types.d.ts.map +1 -0
  199. package/dist/las-loader-types.js +2 -0
  200. package/dist/las-loader-types.js.map +1 -0
  201. package/dist/las-loader.cjs +82 -0
  202. package/dist/las-loader.cjs.map +7 -0
  203. package/dist/las-loader.d.ts +2 -0
  204. package/dist/las-loader.d.ts.map +1 -0
  205. package/dist/las-loader.js +2 -0
  206. package/dist/las-loader.js.map +1 -0
  207. package/dist/las-worker.js +23169 -0
  208. package/dist/las-writer.cjs +1056 -0
  209. package/dist/las-writer.cjs.map +7 -0
  210. package/dist/las-writer.d.ts +2 -0
  211. package/dist/las-writer.d.ts.map +1 -0
  212. package/dist/las-writer.js +2 -0
  213. package/dist/las-writer.js.map +1 -0
  214. package/dist/laz-rs-loader-types.cjs +51 -0
  215. package/dist/laz-rs-loader-types.cjs.map +7 -0
  216. package/dist/laz-rs-loader-types.d.ts +2 -0
  217. package/dist/laz-rs-loader-types.d.ts.map +1 -0
  218. package/dist/laz-rs-loader-types.js +2 -0
  219. package/dist/laz-rs-loader-types.js.map +1 -0
  220. package/dist/laz-rs-loader.cjs +274 -0
  221. package/dist/laz-rs-loader.cjs.map +7 -0
  222. package/dist/laz-rs-loader.d.ts +2 -0
  223. package/dist/laz-rs-loader.d.ts.map +1 -0
  224. package/dist/laz-rs-loader.js +2 -0
  225. package/dist/laz-rs-loader.js.map +1 -0
  226. package/dist/lazperf-loader-types.cjs +51 -0
  227. package/dist/lazperf-loader-types.cjs.map +7 -0
  228. package/dist/lazperf-loader-types.d.ts +2 -0
  229. package/dist/lazperf-loader-types.d.ts.map +1 -0
  230. package/dist/lazperf-loader-types.js +2 -0
  231. package/dist/lazperf-loader-types.js.map +1 -0
  232. package/dist/lazperf-loader.cjs +62 -0
  233. package/dist/lazperf-loader.cjs.map +7 -0
  234. package/dist/lazperf-loader.d.ts +2 -0
  235. package/dist/lazperf-loader.d.ts.map +1 -0
  236. package/dist/lazperf-loader.js +2 -0
  237. package/dist/lazperf-loader.js.map +1 -0
  238. package/dist/pcd/bundled.cjs +33 -0
  239. package/dist/pcd/bundled.cjs.map +7 -0
  240. package/dist/pcd/bundled.d.ts +3 -0
  241. package/dist/pcd/bundled.d.ts.map +1 -0
  242. package/dist/pcd/bundled.js +5 -0
  243. package/dist/pcd/bundled.js.map +1 -0
  244. package/dist/pcd/index.cjs +40 -0
  245. package/dist/pcd/index.cjs.map +7 -0
  246. package/dist/pcd/index.d.ts +8 -0
  247. package/dist/pcd/index.d.ts.map +1 -0
  248. package/dist/pcd/index.js +10 -0
  249. package/dist/pcd/index.js.map +1 -0
  250. package/dist/pcd/lib/decompress-lzf.cjs +80 -0
  251. package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
  252. package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
  253. package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
  254. package/dist/pcd/lib/decompress-lzf.js +62 -0
  255. package/dist/pcd/lib/decompress-lzf.js.map +1 -0
  256. package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
  257. package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
  258. package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
  259. package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
  260. package/dist/pcd/lib/get-pcd-schema.js +53 -0
  261. package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
  262. package/dist/pcd/lib/parse-pcd.cjs +354 -0
  263. package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
  264. package/dist/pcd/lib/parse-pcd.d.ts +20 -0
  265. package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
  266. package/dist/pcd/lib/parse-pcd.js +341 -0
  267. package/dist/pcd/lib/parse-pcd.js.map +1 -0
  268. package/dist/pcd/lib/pcd-types.cjs +19 -0
  269. package/dist/pcd/lib/pcd-types.cjs.map +7 -0
  270. package/dist/pcd/lib/pcd-types.d.ts +31 -0
  271. package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
  272. package/dist/pcd/lib/pcd-types.js +5 -0
  273. package/dist/pcd/lib/pcd-types.js.map +1 -0
  274. package/dist/pcd/pcd-format.cjs +42 -0
  275. package/dist/pcd/pcd-format.cjs.map +7 -0
  276. package/dist/pcd/pcd-format.d.ts +16 -0
  277. package/dist/pcd/pcd-format.d.ts.map +1 -0
  278. package/dist/pcd/pcd-format.js +19 -0
  279. package/dist/pcd/pcd-format.js.map +1 -0
  280. package/dist/pcd/pcd-loader-types.cjs +64 -0
  281. package/dist/pcd/pcd-loader-types.cjs.map +7 -0
  282. package/dist/pcd/pcd-loader-types.d.ts +105 -0
  283. package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
  284. package/dist/pcd/pcd-loader-types.js +35 -0
  285. package/dist/pcd/pcd-loader-types.js.map +1 -0
  286. package/dist/pcd/pcd-loader.cjs +144 -0
  287. package/dist/pcd/pcd-loader.cjs.map +7 -0
  288. package/dist/pcd/pcd-loader.d.ts +44 -0
  289. package/dist/pcd/pcd-loader.d.ts.map +1 -0
  290. package/dist/pcd/pcd-loader.js +128 -0
  291. package/dist/pcd/pcd-loader.js.map +1 -0
  292. package/dist/pcd/pcd-writer.cjs +134 -0
  293. package/dist/pcd/pcd-writer.cjs.map +7 -0
  294. package/dist/pcd/pcd-writer.d.ts +37 -0
  295. package/dist/pcd/pcd-writer.d.ts.map +1 -0
  296. package/dist/pcd/pcd-writer.js +115 -0
  297. package/dist/pcd/pcd-writer.js.map +1 -0
  298. package/dist/pcd/unbundled.cjs +33 -0
  299. package/dist/pcd/unbundled.cjs.map +7 -0
  300. package/dist/pcd/unbundled.d.ts +3 -0
  301. package/dist/pcd/unbundled.d.ts.map +1 -0
  302. package/dist/pcd/unbundled.js +5 -0
  303. package/dist/pcd/unbundled.js.map +1 -0
  304. package/dist/pcd/workers/pcd-worker.cjs +23 -0
  305. package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
  306. package/dist/pcd/workers/pcd-worker.d.ts +2 -0
  307. package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
  308. package/dist/pcd/workers/pcd-worker.js +23 -0
  309. package/dist/pcd/workers/pcd-worker.js.map +1 -0
  310. package/dist/pcd-loader-types.cjs +66 -0
  311. package/dist/pcd-loader-types.cjs.map +7 -0
  312. package/dist/pcd-loader-types.d.ts +2 -0
  313. package/dist/pcd-loader-types.d.ts.map +1 -0
  314. package/dist/pcd-loader-types.js +2 -0
  315. package/dist/pcd-loader-types.js.map +1 -0
  316. package/dist/pcd-loader.cjs +146 -0
  317. package/dist/pcd-loader.cjs.map +7 -0
  318. package/dist/pcd-loader.d.ts +2 -0
  319. package/dist/pcd-loader.d.ts.map +1 -0
  320. package/dist/pcd-loader.js +2 -0
  321. package/dist/pcd-loader.js.map +1 -0
  322. package/dist/pcd-worker.js +17655 -0
  323. package/dist/pcd-writer.cjs +136 -0
  324. package/dist/pcd-writer.cjs.map +7 -0
  325. package/dist/pcd-writer.d.ts +2 -0
  326. package/dist/pcd-writer.d.ts.map +1 -0
  327. package/dist/pcd-writer.js +2 -0
  328. package/dist/pcd-writer.js.map +1 -0
  329. package/dist/ply/bundled.cjs +33 -0
  330. package/dist/ply/bundled.cjs.map +7 -0
  331. package/dist/ply/bundled.d.ts +3 -0
  332. package/dist/ply/bundled.d.ts.map +1 -0
  333. package/dist/ply/bundled.js +5 -0
  334. package/dist/ply/bundled.js.map +1 -0
  335. package/dist/ply/index.cjs +40 -0
  336. package/dist/ply/index.cjs.map +7 -0
  337. package/dist/ply/index.d.ts +8 -0
  338. package/dist/ply/index.d.ts.map +1 -0
  339. package/dist/ply/index.js +11 -0
  340. package/dist/ply/index.js.map +1 -0
  341. package/dist/ply/lib/get-ply-schema.cjs +126 -0
  342. package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
  343. package/dist/ply/lib/get-ply-schema.d.ts +10 -0
  344. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
  345. package/dist/ply/lib/get-ply-schema.js +117 -0
  346. package/dist/ply/lib/get-ply-schema.js.map +1 -0
  347. package/dist/ply/lib/normalize-ply.cjs +96 -0
  348. package/dist/ply/lib/normalize-ply.cjs.map +7 -0
  349. package/dist/ply/lib/normalize-ply.d.ts +8 -0
  350. package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
  351. package/dist/ply/lib/normalize-ply.js +89 -0
  352. package/dist/ply/lib/normalize-ply.js.map +1 -0
  353. package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
  354. package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
  355. package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
  356. package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
  357. package/dist/ply/lib/parse-ply-arrow.js +493 -0
  358. package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
  359. package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
  360. package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
  361. package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
  362. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
  363. package/dist/ply/lib/parse-ply-in-batches.js +625 -0
  364. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
  365. package/dist/ply/lib/parse-ply.cjs +755 -0
  366. package/dist/ply/lib/parse-ply.cjs.map +7 -0
  367. package/dist/ply/lib/parse-ply.d.ts +69 -0
  368. package/dist/ply/lib/parse-ply.d.ts.map +1 -0
  369. package/dist/ply/lib/parse-ply.js +851 -0
  370. package/dist/ply/lib/parse-ply.js.map +1 -0
  371. package/dist/ply/lib/ply-types.cjs +19 -0
  372. package/dist/ply/lib/ply-types.cjs.map +7 -0
  373. package/dist/ply/lib/ply-types.d.ts +37 -0
  374. package/dist/ply/lib/ply-types.d.ts.map +1 -0
  375. package/dist/ply/lib/ply-types.js +2 -0
  376. package/dist/ply/lib/ply-types.js.map +1 -0
  377. package/dist/ply/ply-format.cjs +43 -0
  378. package/dist/ply/ply-format.cjs.map +7 -0
  379. package/dist/ply/ply-format.d.ts +18 -0
  380. package/dist/ply/ply-format.d.ts.map +1 -0
  381. package/dist/ply/ply-format.js +22 -0
  382. package/dist/ply/ply-format.js.map +1 -0
  383. package/dist/ply/ply-loader-types.cjs +65 -0
  384. package/dist/ply/ply-loader-types.cjs.map +7 -0
  385. package/dist/ply/ply-loader-types.d.ts +111 -0
  386. package/dist/ply/ply-loader-types.d.ts.map +1 -0
  387. package/dist/ply/ply-loader-types.js +38 -0
  388. package/dist/ply/ply-loader-types.js.map +1 -0
  389. package/dist/ply/ply-loader.cjs +134 -0
  390. package/dist/ply/ply-loader.cjs.map +7 -0
  391. package/dist/ply/ply-loader.d.ts +44 -0
  392. package/dist/ply/ply-loader.d.ts.map +1 -0
  393. package/dist/ply/ply-loader.js +121 -0
  394. package/dist/ply/ply-loader.js.map +1 -0
  395. package/dist/ply/ply-writer.cjs +175 -0
  396. package/dist/ply/ply-writer.cjs.map +7 -0
  397. package/dist/ply/ply-writer.d.ts +37 -0
  398. package/dist/ply/ply-writer.d.ts.map +1 -0
  399. package/dist/ply/ply-writer.js +140 -0
  400. package/dist/ply/ply-writer.js.map +1 -0
  401. package/dist/ply/unbundled.cjs +33 -0
  402. package/dist/ply/unbundled.cjs.map +7 -0
  403. package/dist/ply/unbundled.d.ts +3 -0
  404. package/dist/ply/unbundled.d.ts.map +1 -0
  405. package/dist/ply/unbundled.js +5 -0
  406. package/dist/ply/unbundled.js.map +1 -0
  407. package/dist/ply/workers/ply-worker.cjs +34 -0
  408. package/dist/ply/workers/ply-worker.cjs.map +7 -0
  409. package/dist/ply/workers/ply-worker.d.ts +2 -0
  410. package/dist/ply/workers/ply-worker.d.ts.map +1 -0
  411. package/dist/ply/workers/ply-worker.js +37 -0
  412. package/dist/ply/workers/ply-worker.js.map +1 -0
  413. package/dist/ply-loader-types.cjs +67 -0
  414. package/dist/ply-loader-types.cjs.map +7 -0
  415. package/dist/ply-loader-types.d.ts +2 -0
  416. package/dist/ply-loader-types.d.ts.map +1 -0
  417. package/dist/ply-loader-types.js +2 -0
  418. package/dist/ply-loader-types.js.map +1 -0
  419. package/dist/ply-loader.cjs +136 -0
  420. package/dist/ply-loader.cjs.map +7 -0
  421. package/dist/ply-loader.d.ts +2 -0
  422. package/dist/ply-loader.d.ts.map +1 -0
  423. package/dist/ply-loader.js +2 -0
  424. package/dist/ply-loader.js.map +1 -0
  425. package/dist/ply-worker.js +19308 -0
  426. package/dist/ply-writer.cjs +177 -0
  427. package/dist/ply-writer.cjs.map +7 -0
  428. package/dist/ply-writer.d.ts +2 -0
  429. package/dist/ply-writer.d.ts.map +1 -0
  430. package/dist/ply-writer.js +2 -0
  431. package/dist/ply-writer.js.map +1 -0
  432. package/package.json +237 -4
  433. package/src/index.ts +19 -0
  434. package/src/las/bundled.ts +39 -0
  435. package/src/las/index.ts +70 -0
  436. package/src/las/las-copc-loader-types.ts +18 -0
  437. package/src/las/las-copc-loader.ts +61 -0
  438. package/src/las/las-format.ts +21 -0
  439. package/src/las/las-loader-shared.ts +124 -0
  440. package/src/las/las-loader-types.ts +27 -0
  441. package/src/las/las-loader.ts +109 -0
  442. package/src/las/las-writer.ts +1473 -0
  443. package/src/las/laz-rs-loader-types.ts +21 -0
  444. package/src/las/laz-rs-loader.ts +53 -0
  445. package/src/las/lazperf-loader-types.ts +22 -0
  446. package/src/las/lazperf-loader.ts +65 -0
  447. package/src/las/lib/LASZIP-LICENSE +202 -0
  448. package/src/las/lib/LASZIP-NOTICE +4 -0
  449. package/src/las/lib/copc/parse-las.ts +265 -0
  450. package/src/las/lib/get-las-schema.ts +50 -0
  451. package/src/las/lib/las-compatibility.ts +178 -0
  452. package/src/las/lib/las-extra-bytes.ts +274 -0
  453. package/src/las/lib/las-types.ts +206 -0
  454. package/src/las/lib/las-waveform.ts +292 -0
  455. package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
  456. package/src/las/lib/laz-perf/parse-las.ts +412 -0
  457. package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
  458. package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
  459. package/src/las/lib/typescript/parse-las.ts +3730 -0
  460. package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
  461. package/src/las/libs/laz-rs-wasm/README.md +5 -0
  462. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
  463. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
  464. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  465. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  466. package/src/las/libs/laz-rs-wasm/package.json +25 -0
  467. package/src/las/unbundled.ts +38 -0
  468. package/src/las/workers/las-worker.ts +24 -0
  469. package/src/las-copc-loader-types.ts +1 -0
  470. package/src/las-copc-loader.ts +1 -0
  471. package/src/las-loader-types.ts +1 -0
  472. package/src/las-loader.ts +1 -0
  473. package/src/las-writer.ts +1 -0
  474. package/src/laz-rs-loader-types.ts +1 -0
  475. package/src/laz-rs-loader.ts +1 -0
  476. package/src/lazperf-loader-types.ts +1 -0
  477. package/src/lazperf-loader.ts +1 -0
  478. package/src/pcd/bundled.ts +9 -0
  479. package/src/pcd/index.ts +13 -0
  480. package/src/pcd/lib/decompress-lzf.ts +68 -0
  481. package/src/pcd/lib/get-pcd-schema.ts +66 -0
  482. package/src/pcd/lib/parse-pcd.ts +474 -0
  483. package/src/pcd/lib/pcd-types.ts +34 -0
  484. package/src/pcd/pcd-format.ts +21 -0
  485. package/src/pcd/pcd-loader-types.ts +53 -0
  486. package/src/pcd/pcd-loader.ts +179 -0
  487. package/src/pcd/pcd-writer.ts +152 -0
  488. package/src/pcd/unbundled.ts +6 -0
  489. package/src/pcd/workers/pcd-worker.ts +24 -0
  490. package/src/pcd-loader-types.ts +1 -0
  491. package/src/pcd-loader.ts +1 -0
  492. package/src/pcd-writer.ts +1 -0
  493. package/src/ply/bundled.ts +9 -0
  494. package/src/ply/index.ts +15 -0
  495. package/src/ply/lib/get-ply-schema.ts +133 -0
  496. package/src/ply/lib/normalize-ply.ts +110 -0
  497. package/src/ply/lib/parse-ply-arrow.ts +676 -0
  498. package/src/ply/lib/parse-ply-in-batches.ts +827 -0
  499. package/src/ply/lib/parse-ply.ts +1081 -0
  500. package/src/ply/lib/ply-types.ts +47 -0
  501. package/src/ply/ply-format.ts +24 -0
  502. package/src/ply/ply-loader-types.ts +61 -0
  503. package/src/ply/ply-loader.ts +185 -0
  504. package/src/ply/ply-writer.ts +215 -0
  505. package/src/ply/unbundled.ts +6 -0
  506. package/src/ply/workers/ply-worker.ts +40 -0
  507. package/src/ply-loader-types.ts +1 -0
  508. package/src/ply-loader.ts +1 -0
  509. package/src/ply-writer.ts +1 -0
  510. package/third-party-licenses/plasio-LICENSE +21 -0
  511. package/third-party-licenses/three-LICENSE +21 -0
@@ -0,0 +1,193 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ const WAVEFORM_PACKET_REFERENCE_BYTE_LENGTH = 29;
5
+ const INTERNAL_WAVEFORM_DATA_MASK = 1 << 1;
6
+ const EXTERNAL_WAVEFORM_DATA_MASK = 1 << 2;
7
+ /**
8
+ * Parses one fixed-width LAS waveform packet reference without losing its 64-bit offset.
9
+ * @param data Buffer or view containing the reference.
10
+ * @param byteOffset Byte offset of the reference within `data`.
11
+ * @returns Parsed packet reference.
12
+ */
13
+ export function parseLASWaveformPacketReference(data, byteOffset = 0) {
14
+ const bytes = getUint8Array(data);
15
+ if (!Number.isInteger(byteOffset) ||
16
+ byteOffset < 0 ||
17
+ byteOffset + WAVEFORM_PACKET_REFERENCE_BYTE_LENGTH > bytes.byteLength) {
18
+ throw new Error('LAS waveform packet reference is truncated');
19
+ }
20
+ const dataView = new DataView(bytes.buffer, bytes.byteOffset + byteOffset, WAVEFORM_PACKET_REFERENCE_BYTE_LENGTH);
21
+ return {
22
+ descriptorIndex: dataView.getUint8(0),
23
+ byteOffset: dataView.getBigUint64(1, true),
24
+ byteLength: dataView.getUint32(9, true),
25
+ returnPointLocation: dataView.getFloat32(13, true),
26
+ parametricOffset: [
27
+ dataView.getFloat32(17, true),
28
+ dataView.getFloat32(21, true),
29
+ dataView.getFloat32(25, true)
30
+ ]
31
+ };
32
+ }
33
+ /**
34
+ * Returns the waveform storage selected by LAS global-encoding bits.
35
+ * @param metadata Parsed LAS metadata.
36
+ * @returns Internal or external storage, or `null` when the file declares neither.
37
+ */
38
+ export function getLASWaveformStorage(metadata) {
39
+ const hasInternalData = Boolean(metadata.globalEncoding & INTERNAL_WAVEFORM_DATA_MASK);
40
+ const hasExternalData = Boolean(metadata.globalEncoding & EXTERNAL_WAVEFORM_DATA_MASK);
41
+ if (hasInternalData && hasExternalData) {
42
+ throw new Error('LAS waveform data cannot be both internal and external');
43
+ }
44
+ return hasInternalData ? 'internal' : hasExternalData ? 'external' : null;
45
+ }
46
+ /**
47
+ * Decodes uncompressed 2-32 bit LAS waveform samples.
48
+ * @param data Exact waveform packet bytes.
49
+ * @param descriptor Waveform descriptor selected by the point record.
50
+ * @returns Unsigned integer waveform samples.
51
+ */
52
+ export function decodeLASWaveformSamples(data, descriptor) {
53
+ const requiredByteLength = validateLASWaveformDescriptor(descriptor);
54
+ if (data.byteLength < requiredByteLength) {
55
+ throw new Error(`LAS waveform packet is truncated: expected ${requiredByteLength} bytes, received ${data.byteLength}`);
56
+ }
57
+ const bitsPerSample = descriptor.bitsPerSample;
58
+ const samples = new Uint32Array(descriptor.numberOfSamples);
59
+ const sampleDivisor = 2 ** bitsPerSample;
60
+ let bitBuffer = 0;
61
+ let availableBitCount = 0;
62
+ let sourceByteIndex = 0;
63
+ for (let sampleIndex = 0; sampleIndex < samples.length; sampleIndex++) {
64
+ while (availableBitCount < bitsPerSample) {
65
+ bitBuffer += data[sourceByteIndex++] * 2 ** availableBitCount;
66
+ availableBitCount += 8;
67
+ }
68
+ samples[sampleIndex] = bitBuffer % sampleDivisor;
69
+ bitBuffer = Math.floor(bitBuffer / sampleDivisor);
70
+ availableBitCount -= bitsPerSample;
71
+ }
72
+ return samples;
73
+ }
74
+ /** Validates one waveform descriptor and returns its uncompressed packet byte length. */
75
+ function validateLASWaveformDescriptor(descriptor) {
76
+ if (descriptor.compressionType !== 0) {
77
+ throw new Error(`LAS waveform compression type ${descriptor.compressionType} is not supported`);
78
+ }
79
+ const bitsPerSample = descriptor.bitsPerSample;
80
+ if (!Number.isInteger(bitsPerSample) || bitsPerSample < 2 || bitsPerSample > 32) {
81
+ throw new Error(`LAS waveform bits per sample must be between 2 and 32; received ${bitsPerSample}`);
82
+ }
83
+ if (!Number.isInteger(descriptor.numberOfSamples) || descriptor.numberOfSamples < 0) {
84
+ throw new Error(`LAS waveform sample count ${descriptor.numberOfSamples} is invalid`);
85
+ }
86
+ const requiredByteLength = Math.ceil((descriptor.numberOfSamples * bitsPerSample) / 8);
87
+ if (!Number.isSafeInteger(requiredByteLength) || requiredByteLength < 0) {
88
+ throw new Error(`LAS waveform sample count ${descriptor.numberOfSamples} is invalid`);
89
+ }
90
+ return requiredByteLength;
91
+ }
92
+ /**
93
+ * Applies waveform descriptor gain and offset to integer samples.
94
+ * @param samples Unsigned integer waveform samples.
95
+ * @param descriptor Waveform descriptor containing gain and offset.
96
+ * @returns Scaled sample amplitudes.
97
+ */
98
+ export function scaleLASWaveformSamples(samples, descriptor) {
99
+ const amplitudes = new Float64Array(samples.length);
100
+ for (let sampleIndex = 0; sampleIndex < samples.length; sampleIndex++) {
101
+ amplitudes[sampleIndex] =
102
+ descriptor.digitizerOffset + descriptor.digitizerGain * samples[sampleIndex];
103
+ }
104
+ return amplitudes;
105
+ }
106
+ /**
107
+ * Range-reads and decodes one internal LAS or external WDP waveform packet.
108
+ *
109
+ * Supply the LAS file when `metadata.globalEncoding` declares internal waveform data and the
110
+ * companion WDP file when it declares external waveform data.
111
+ *
112
+ * @param source Random-access LAS or WDP source selected by the file's global-encoding field.
113
+ * @param reference Lossless waveform packet reference from a point record.
114
+ * @param metadata Parsed metadata from the owning LAS file.
115
+ * @param options Range-read options.
116
+ * @returns Decoded waveform packet.
117
+ */
118
+ export async function readLASWaveformPacket(source, reference, metadata, options = {}) {
119
+ const storage = getLASWaveformStorage(metadata);
120
+ if (!storage) {
121
+ throw new Error('LAS file does not declare internal or external waveform data');
122
+ }
123
+ if (reference.descriptorIndex === 0) {
124
+ throw new Error('LAS waveform descriptor index 0 does not reference a waveform packet');
125
+ }
126
+ const descriptorRecordId = reference.descriptorIndex + 99;
127
+ const descriptor = metadata.waveformPacketDescriptors.find(candidate => candidate.recordId === descriptorRecordId);
128
+ if (!descriptor) {
129
+ throw new Error(`LAS waveform descriptor VLR ${descriptorRecordId} is missing`);
130
+ }
131
+ const requiredByteLength = validateLASWaveformDescriptor(descriptor);
132
+ if (!Number.isInteger(reference.byteLength) || reference.byteLength < requiredByteLength) {
133
+ throw new Error(`LAS waveform packet size ${reference.byteLength} is smaller than the descriptor requires (${requiredByteLength})`);
134
+ }
135
+ const sourceByteOffset = storage === 'internal'
136
+ ? getInternalWaveformSourceOffset(metadata) + reference.byteOffset
137
+ : reference.byteOffset;
138
+ const arrayBuffer = await source.read(sourceByteOffset, reference.byteLength, options.signal);
139
+ if (arrayBuffer.byteLength !== reference.byteLength) {
140
+ throw new Error(`LAS waveform range read returned ${arrayBuffer.byteLength} bytes; expected ${reference.byteLength}`);
141
+ }
142
+ const data = new Uint8Array(arrayBuffer);
143
+ const samples = decodeLASWaveformSamples(data, descriptor);
144
+ return {
145
+ reference,
146
+ descriptor,
147
+ sourceByteOffset,
148
+ data,
149
+ samples,
150
+ amplitudes: scaleLASWaveformSamples(samples, descriptor)
151
+ };
152
+ }
153
+ /**
154
+ * Range-reads multiple waveform packets with bounded concurrency.
155
+ * @param source Random-access LAS or WDP source selected by the file's global-encoding field.
156
+ * @param references Waveform packet references in desired result order.
157
+ * @param metadata Parsed metadata from the owning LAS file.
158
+ * @param options Range-read and concurrency options.
159
+ * @returns Decoded waveform packets in input order.
160
+ */
161
+ export async function readLASWaveformPackets(source, references, metadata, options = {}) {
162
+ const referenceArray = Array.from(references);
163
+ const concurrency = options.concurrency ?? 8;
164
+ if (!Number.isInteger(concurrency) || concurrency < 1) {
165
+ throw new Error(`LAS waveform read concurrency must be a positive integer; received ${concurrency}`);
166
+ }
167
+ const packets = new Array(referenceArray.length);
168
+ let nextReferenceIndex = 0;
169
+ /** Reads packet references from the shared index until none remain. */
170
+ const readNextPackets = async () => {
171
+ while (nextReferenceIndex < referenceArray.length) {
172
+ const referenceIndex = nextReferenceIndex++;
173
+ packets[referenceIndex] = await readLASWaveformPacket(source, referenceArray[referenceIndex], metadata, options);
174
+ }
175
+ };
176
+ const workerCount = Math.min(concurrency, referenceArray.length);
177
+ await Promise.all(Array.from({ length: workerCount }, () => readNextPackets()));
178
+ return packets;
179
+ }
180
+ /** Return the exact internal waveform packet-record base offset from the LAS public header. */
181
+ function getInternalWaveformSourceOffset(metadata) {
182
+ if (metadata.waveformDataOffset === undefined) {
183
+ throw new Error('LAS internal waveform data offset is missing from the public header');
184
+ }
185
+ return metadata.waveformDataOffset;
186
+ }
187
+ /** Create a byte view that preserves an input view's byte offset and byte length. */
188
+ function getUint8Array(data) {
189
+ return data instanceof ArrayBuffer
190
+ ? new Uint8Array(data)
191
+ : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
192
+ }
193
+ //# sourceMappingURL=las-waveform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"las-waveform.js","sourceRoot":"","sources":["../../../src/las/lib/las-waveform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/las/lib/laz-perf/laslaz-decoder.ts
31
+ var laslaz_decoder_exports = {};
32
+ __export(laslaz_decoder_exports, {
33
+ LASFile: () => LASFile,
34
+ LASModuleWasLoaded: () => LASModuleWasLoaded
35
+ });
36
+ module.exports = __toCommonJS(laslaz_decoder_exports);
37
+ var import_laz_perf = __toESM(require("../../libs/laz-perf/laz-perf.cjs"), 1);
38
+ var Module = null;
39
+ var POINT_FORMAT_READERS = {
40
+ 0: (dv) => {
41
+ return {
42
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
43
+ intensity: dv.getUint16(12, true),
44
+ classification: dv.getUint8(15)
45
+ };
46
+ },
47
+ 1: (dv) => {
48
+ return {
49
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
50
+ intensity: dv.getUint16(12, true),
51
+ classification: dv.getUint8(15)
52
+ };
53
+ },
54
+ 2: (dv) => {
55
+ return {
56
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
57
+ intensity: dv.getUint16(12, true),
58
+ classification: dv.getUint8(15),
59
+ color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]
60
+ };
61
+ },
62
+ 3: (dv) => {
63
+ return {
64
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
65
+ intensity: dv.getUint16(12, true),
66
+ classification: dv.getUint8(15),
67
+ color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]
68
+ };
69
+ }
70
+ };
71
+ function readAs(buf, Type = {}, offset, count) {
72
+ count = count === void 0 || count === 0 ? 1 : count;
73
+ const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);
74
+ const r = new Type(sub);
75
+ if (count === 1) {
76
+ return r[0];
77
+ }
78
+ const ret = [];
79
+ for (let i = 0; i < count; i++) {
80
+ ret.push(r[i]);
81
+ }
82
+ return ret;
83
+ }
84
+ function parseLASHeader(arraybuffer) {
85
+ let start = 32 * 3 + 35;
86
+ const o = {
87
+ pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),
88
+ pointsFormatId: readAs(arraybuffer, Uint8Array, 32 * 3 + 8),
89
+ pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),
90
+ pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),
91
+ scale: readAs(arraybuffer, Float64Array, start, 3)
92
+ };
93
+ start += 24;
94
+ o.offset = readAs(arraybuffer, Float64Array, start, 3);
95
+ start += 24;
96
+ const bounds = readAs(arraybuffer, Float64Array, start, 6);
97
+ start += 48;
98
+ o.maxs = [bounds[0], bounds[2], bounds[4]];
99
+ o.mins = [bounds[1], bounds[3], bounds[5]];
100
+ const colorPointFormats = /* @__PURE__ */ new Set([2, 3]);
101
+ o.hasColor = colorPointFormats.has(o.pointsFormatId & 63);
102
+ return o;
103
+ }
104
+ var LASLoader = class {
105
+ arraybuffer;
106
+ readOffset = 0;
107
+ header = {
108
+ pointsOffset: 0,
109
+ pointsFormatId: 0,
110
+ pointsStructSize: 0,
111
+ pointsCount: 0,
112
+ scale: [0, 0, 0],
113
+ offset: [0, 0, 0],
114
+ maxs: [0],
115
+ mins: [0],
116
+ totalToRead: 0,
117
+ totalRead: 0,
118
+ versionAsString: "",
119
+ isCompressed: true,
120
+ hasColor: false
121
+ };
122
+ constructor(arraybuffer) {
123
+ this.arraybuffer = arraybuffer;
124
+ }
125
+ /**
126
+ * @returns boolean
127
+ */
128
+ open() {
129
+ return true;
130
+ }
131
+ /**
132
+ * Parsing of incoming binary
133
+ * @returns LASHeader
134
+ */
135
+ getHeader() {
136
+ this.header = parseLASHeader(this.arraybuffer);
137
+ return this.header;
138
+ }
139
+ /**
140
+ * Reading data
141
+ * @param count
142
+ * @returns new ArrayBuffer, count, hasMoreData
143
+ */
144
+ readData(count) {
145
+ const { header, arraybuffer } = this;
146
+ if (!header) {
147
+ throw new Error("Cannot start reading data till a header request is issued");
148
+ }
149
+ let { readOffset } = this;
150
+ count = Math.min(count, header.pointsCount - readOffset);
151
+ const start = header.pointsOffset + readOffset * header.pointsStructSize;
152
+ const end = start + count * header.pointsStructSize;
153
+ readOffset += count;
154
+ this.readOffset = readOffset;
155
+ return {
156
+ buffer: arraybuffer.slice(start, end),
157
+ count,
158
+ hasMoreData: readOffset < header.pointsCount
159
+ };
160
+ }
161
+ /**
162
+ * Method which brings data to null to close the file
163
+ * @returns
164
+ */
165
+ close() {
166
+ this.arraybuffer = null;
167
+ return true;
168
+ }
169
+ };
170
+ var LAZLoader = class {
171
+ arraybuffer;
172
+ instance = null;
173
+ // LASZip instance
174
+ header = null;
175
+ constructor(arraybuffer) {
176
+ this.arraybuffer = arraybuffer;
177
+ if (!Module) {
178
+ Module = (0, import_laz_perf.default)();
179
+ }
180
+ }
181
+ /**
182
+ * Opens the file
183
+ * @returns boolean
184
+ */
185
+ open() {
186
+ try {
187
+ const { arraybuffer } = this;
188
+ this.instance = new Module.LASZip();
189
+ const abInt = new Uint8Array(arraybuffer);
190
+ const buf = Module._malloc(arraybuffer.byteLength);
191
+ this.instance.arraybuffer = arraybuffer;
192
+ this.instance.buf = buf;
193
+ Module.HEAPU8.set(abInt, buf);
194
+ this.instance.open(buf, arraybuffer.byteLength);
195
+ this.instance.readOffset = 0;
196
+ return true;
197
+ } catch (error) {
198
+ throw new Error(`Failed to open file: ${error.message}`);
199
+ }
200
+ }
201
+ getHeader() {
202
+ if (!this.instance) {
203
+ throw new Error("You need to open the file before trying to read header");
204
+ }
205
+ try {
206
+ const header = parseLASHeader(this.instance.arraybuffer);
207
+ header.pointsFormatId &= 63;
208
+ this.header = header;
209
+ return header;
210
+ } catch (error) {
211
+ throw new Error(`Failed to get header: ${error.message}`);
212
+ }
213
+ }
214
+ /**
215
+ * @param count
216
+ * @returns Data
217
+ */
218
+ readData(count) {
219
+ if (!this.instance) {
220
+ throw new Error("You need to open the file before trying to read stuff");
221
+ }
222
+ const { header, instance } = this;
223
+ if (!header) {
224
+ throw new Error(
225
+ "You need to query header before reading, I maintain state that way, sorry :("
226
+ );
227
+ }
228
+ try {
229
+ const pointsToRead = Math.min(count, header.pointsCount - instance.readOffset);
230
+ const thisBuf = new Uint8Array(pointsToRead * header.pointsStructSize);
231
+ const bufRead = Module._malloc(header.pointsStructSize);
232
+ for (let i = 0; i < pointsToRead; i++) {
233
+ instance.getPoint(bufRead);
234
+ const a = new Uint8Array(Module.HEAPU8.buffer, bufRead, header.pointsStructSize);
235
+ thisBuf.set(a, i * header.pointsStructSize);
236
+ instance.readOffset++;
237
+ }
238
+ Module._free(bufRead);
239
+ return {
240
+ buffer: thisBuf.buffer,
241
+ count: pointsToRead,
242
+ hasMoreData: instance.readOffset < header.pointsCount
243
+ };
244
+ } catch (error) {
245
+ throw new Error(`Failed to read data: ${error.message}`);
246
+ }
247
+ }
248
+ /**
249
+ * Deletes the instance
250
+ * @returns boolean
251
+ */
252
+ close() {
253
+ try {
254
+ if (this.instance !== null) {
255
+ Module._free(this.instance.buf);
256
+ this.instance.delete();
257
+ this.instance = null;
258
+ }
259
+ return true;
260
+ } catch (error) {
261
+ throw new Error(`Failed to close file: ${error.message}`);
262
+ }
263
+ }
264
+ };
265
+ var LASDecoder = class {
266
+ arrayb;
267
+ decoder;
268
+ pointsCount;
269
+ pointSize;
270
+ scale;
271
+ offset;
272
+ mins;
273
+ maxs;
274
+ constructor(buffer, len, header) {
275
+ this.arrayb = buffer;
276
+ this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];
277
+ this.pointsCount = len;
278
+ this.pointSize = header.pointsStructSize;
279
+ this.scale = header.scale;
280
+ this.offset = header.offset;
281
+ this.mins = header.mins;
282
+ this.maxs = header.maxs;
283
+ }
284
+ /**
285
+ * Decodes data depends on this point size
286
+ * @param index
287
+ * @returns New object
288
+ */
289
+ getPoint(index) {
290
+ if (index < 0 || index >= this.pointsCount) {
291
+ throw new Error("Point index out of range");
292
+ }
293
+ const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);
294
+ return this.decoder(dv);
295
+ }
296
+ };
297
+ var LASFile = class {
298
+ arraybuffer;
299
+ formatId = 0;
300
+ loader;
301
+ isCompressed = true;
302
+ isOpen = false;
303
+ version = 0;
304
+ versionAsString = "";
305
+ constructor(arraybuffer) {
306
+ this.arraybuffer = arraybuffer;
307
+ if (this.determineVersion() > 13) {
308
+ throw new Error("Only file versions <= 1.3 are supported at this time");
309
+ }
310
+ this.determineFormat();
311
+ if (POINT_FORMAT_READERS[this.formatId] === void 0) {
312
+ throw new Error("The point format ID is not supported");
313
+ }
314
+ this.loader = this.isCompressed ? new LAZLoader(this.arraybuffer) : new LASLoader(this.arraybuffer);
315
+ }
316
+ /**
317
+ * Determines format in parameters of LASHeaer
318
+ */
319
+ determineFormat() {
320
+ const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);
321
+ const bit7 = (formatId & 128) >> 7;
322
+ const bit6 = (formatId & 64) >> 6;
323
+ if (bit7 === 1 && bit6 === 1) {
324
+ throw new Error("Old style compression not supported");
325
+ }
326
+ this.formatId = formatId & 63;
327
+ this.isCompressed = bit7 === 1 || bit6 === 1;
328
+ }
329
+ /**
330
+ * Determines version
331
+ * @returns version
332
+ */
333
+ determineVersion() {
334
+ const ver = new Int8Array(this.arraybuffer, 24, 2);
335
+ this.version = ver[0] * 10 + ver[1];
336
+ this.versionAsString = `${ver[0]}.${ver[1]}`;
337
+ return this.version;
338
+ }
339
+ /**
340
+ * Reads if the file is open
341
+ * @returns boolean
342
+ */
343
+ open() {
344
+ if (this.loader.open()) {
345
+ this.isOpen = true;
346
+ }
347
+ }
348
+ /**
349
+ * Gets the header
350
+ * @returns Header
351
+ */
352
+ getHeader() {
353
+ return this.loader.getHeader();
354
+ }
355
+ /**
356
+ * @param count
357
+ * @returns Data
358
+ */
359
+ readData(count) {
360
+ return this.loader.readData(count);
361
+ }
362
+ /**
363
+ * Closes the file
364
+ */
365
+ close() {
366
+ if (this.loader.close()) {
367
+ this.isOpen = false;
368
+ }
369
+ }
370
+ /**
371
+ */
372
+ getUnpacker() {
373
+ return LASDecoder;
374
+ }
375
+ };
376
+ var LASModuleWasLoaded = false;
377
+ // Annotate the CommonJS export names for ESM import in node:
378
+ 0 && (module.exports = {
379
+ LASFile,
380
+ LASModuleWasLoaded
381
+ });
382
+ //# sourceMappingURL=laslaz-decoder.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/las/lib/laz-perf/laslaz-decoder.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/*\n Modified from Uday Verma and Howard Butler's plasio\n https://github.com/verma/plasio/\n MIT License\n*/\n// laslaz.js - treat as compiled code\nimport type {LASHeader} from '../las-types';\nimport getModule from '../../libs/laz-perf/laz-perf';\n\nlet Module: any = null;\n\ntype LASReader = (dv: DataView) => {\n [LASAttribute: string]: number | number[];\n};\n\ntype LASReaders = {\n [key: number]: LASReader;\n};\n\ntype LASData = {\n buffer: ArrayBuffer;\n count: number;\n hasMoreData: boolean;\n};\n\nconst POINT_FORMAT_READERS: LASReaders = {\n 0: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 1: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 2: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]\n };\n },\n 3: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]\n };\n }\n};\n\n/**\n * Reads incoming binary data depends on the Type parameter\n * @param buf\n * @param Type\n * @param offset\n * @param count\n * @returns number | number[] from incoming binary data\n */\nfunction readAs(buf: ArrayBuffer, Type: any = {}, offset: number, count?: number) {\n count = count === undefined || count === 0 ? 1 : count;\n const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);\n\n const r = new Type(sub);\n if (count === 1) {\n return r[0];\n }\n\n const ret: number[] = [];\n for (let i = 0; i < count; i++) {\n ret.push(r[i]);\n }\n\n return ret;\n}\n\n/**\n * Parsing of header's attributes\n * @param arraybuffer\n * @returns header as LASHeader\n */\nfunction parseLASHeader(arraybuffer: ArrayBuffer): LASHeader {\n let start = 32 * 3 + 35;\n\n const o: Partial<LASHeader> = {\n pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),\n pointsFormatId: readAs(arraybuffer, Uint8Array, 32 * 3 + 8),\n pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),\n pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),\n scale: readAs(arraybuffer, Float64Array, start, 3)\n };\n start += 24; // 8*3\n o.offset = readAs(arraybuffer, Float64Array, start, 3);\n start += 24;\n\n const bounds = readAs(arraybuffer, Float64Array, start, 6);\n start += 48; // 8*6;\n o.maxs = [bounds[0], bounds[2], bounds[4]];\n o.mins = [bounds[1], bounds[3], bounds[5]];\n\n const colorPointFormats = new Set([2, 3]);\n o.hasColor = colorPointFormats.has(o.pointsFormatId! & 0x3f);\n\n return o as LASHeader;\n}\n\n// LAS Loader\n// Loads uncompressed files\n//\nclass LASLoader {\n arraybuffer: ArrayBuffer;\n readOffset: number = 0;\n header: LASHeader = {\n pointsOffset: 0,\n pointsFormatId: 0,\n pointsStructSize: 0,\n pointsCount: 0,\n scale: [0, 0, 0],\n offset: [0, 0, 0],\n maxs: [0],\n mins: [0],\n totalToRead: 0,\n totalRead: 0,\n versionAsString: '',\n isCompressed: true,\n hasColor: false\n };\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n }\n\n /**\n * @returns boolean\n */\n open() {\n // Nothing needs to be done to open this\n return true;\n }\n /**\n * Parsing of incoming binary\n * @returns LASHeader\n */\n getHeader() {\n this.header = parseLASHeader(this.arraybuffer);\n return this.header;\n }\n\n /**\n * Reading data\n * @param count\n * @returns new ArrayBuffer, count, hasMoreData\n */\n readData(count: number) {\n const {header, arraybuffer} = this;\n if (!header) {\n throw new Error('Cannot start reading data till a header request is issued');\n }\n\n let {readOffset} = this;\n count = Math.min(count, header.pointsCount - readOffset);\n const start = header.pointsOffset + readOffset * header.pointsStructSize;\n const end = start + count * header.pointsStructSize;\n readOffset += count;\n this.readOffset = readOffset;\n return {\n buffer: arraybuffer.slice(start, end),\n count,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n /**\n * Method which brings data to null to close the file\n * @returns\n */\n close() {\n // @ts-ignore Possibly null\n this.arraybuffer = null;\n return true;\n }\n}\n\n/**\n * LAZ Loader\n * Uses NaCL module to load LAZ files\n */\nclass LAZLoader {\n arraybuffer: ArrayBuffer;\n instance: any = null; // LASZip instance\n header: LASHeader | null = null;\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (!Module) {\n // Avoid executing laz-perf on import\n Module = getModule();\n }\n }\n\n /**\n * Opens the file\n * @returns boolean\n */\n open(): boolean {\n try {\n const {arraybuffer} = this;\n this.instance = new Module.LASZip();\n const abInt = new Uint8Array(arraybuffer);\n const buf = Module._malloc(arraybuffer.byteLength);\n\n this.instance.arraybuffer = arraybuffer;\n this.instance.buf = buf;\n Module.HEAPU8.set(abInt, buf);\n this.instance.open(buf, arraybuffer.byteLength);\n\n this.instance.readOffset = 0;\n\n return true;\n } catch (error) {\n throw new Error(`Failed to open file: ${(error as Error).message}`);\n }\n }\n\n getHeader(): LASHeader {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read header');\n }\n\n try {\n const header = parseLASHeader(this.instance.arraybuffer);\n header.pointsFormatId &= 0x3f;\n this.header = header;\n return header;\n } catch (error) {\n throw new Error(`Failed to get header: ${(error as Error).message}`);\n }\n }\n /**\n * @param count\n * @returns Data\n */\n readData(count: number): LASData {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read stuff');\n }\n\n const {header, instance} = this;\n\n if (!header) {\n throw new Error(\n 'You need to query header before reading, I maintain state that way, sorry :('\n );\n }\n\n try {\n const pointsToRead = Math.min(count, header.pointsCount - instance.readOffset);\n const thisBuf = new Uint8Array(pointsToRead * header.pointsStructSize);\n const bufRead = Module._malloc(header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n instance.getPoint(bufRead);\n const a = new Uint8Array(Module.HEAPU8.buffer, bufRead, header.pointsStructSize);\n thisBuf.set(a, i * header.pointsStructSize);\n instance.readOffset++;\n }\n Module._free(bufRead);\n return {\n buffer: thisBuf.buffer,\n count: pointsToRead,\n hasMoreData: instance.readOffset < header.pointsCount\n };\n } catch (error) {\n throw new Error(`Failed to read data: ${(error as Error).message}`);\n }\n }\n\n /**\n * Deletes the instance\n * @returns boolean\n */\n close(): boolean {\n try {\n if (this.instance !== null) {\n Module._free(this.instance.buf);\n this.instance.delete();\n this.instance = null;\n }\n return true;\n } catch (error) {\n throw new Error(`Failed to close file: ${(error as Error).message}`);\n }\n }\n}\n\n/**\n * Helper class: Decodes LAS records into points\n */\nclass LASDecoder {\n arrayb: ArrayBuffer;\n decoder: (dv: DataView) => {};\n pointsCount: number;\n pointSize: number;\n scale: [number, number, number];\n offset?: [number, number, number];\n mins?: number[];\n maxs?: number[];\n\n constructor(buffer: ArrayBuffer, len: number, header: LASHeader) {\n this.arrayb = buffer;\n this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];\n this.pointsCount = len;\n this.pointSize = header.pointsStructSize;\n this.scale = header.scale;\n this.offset = header.offset;\n this.mins = header.mins;\n this.maxs = header.maxs;\n }\n\n /**\n * Decodes data depends on this point size\n * @param index\n * @returns New object\n */\n getPoint(index: number): {} {\n if (index < 0 || index >= this.pointsCount) {\n throw new Error('Point index out of range');\n }\n\n const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);\n return this.decoder(dv);\n }\n}\n\n/**\n * A single consistent interface for loading LAS/LAZ files\n */\nexport class LASFile {\n arraybuffer: ArrayBuffer;\n formatId: number = 0;\n loader: LASLoader | LAZLoader;\n isCompressed: boolean = true;\n isOpen: boolean = false;\n version: number = 0;\n versionAsString: string = '';\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (this.determineVersion() > 13) {\n throw new Error('Only file versions <= 1.3 are supported at this time');\n }\n\n this.determineFormat();\n if (POINT_FORMAT_READERS[this.formatId] === undefined) {\n throw new Error('The point format ID is not supported');\n }\n\n this.loader = this.isCompressed\n ? new LAZLoader(this.arraybuffer)\n : new LASLoader(this.arraybuffer);\n }\n\n /**\n * Determines format in parameters of LASHeaer\n */\n determineFormat(): void {\n const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);\n const bit7 = (formatId & 0x80) >> 7;\n const bit6 = (formatId & 0x40) >> 6;\n\n if (bit7 === 1 && bit6 === 1) {\n throw new Error('Old style compression not supported');\n }\n\n this.formatId = formatId & 0x3f;\n this.isCompressed = bit7 === 1 || bit6 === 1;\n }\n\n /**\n * Determines version\n * @returns version\n */\n determineVersion(): number {\n const ver = new Int8Array(this.arraybuffer, 24, 2);\n this.version = ver[0] * 10 + ver[1];\n this.versionAsString = `${ver[0]}.${ver[1]}`;\n return this.version;\n }\n\n /**\n * Reads if the file is open\n * @returns boolean\n */\n open(): void {\n if (this.loader.open()) {\n this.isOpen = true;\n }\n }\n /**\n * Gets the header\n * @returns Header\n */\n getHeader(): LASHeader {\n return this.loader.getHeader();\n }\n\n /**\n * @param count\n * @returns Data\n */\n readData(count: number): LASData {\n return this.loader.readData(count);\n }\n\n /**\n * Closes the file\n */\n close(): void {\n if (this.loader.close()) {\n this.isOpen = false;\n }\n }\n /**\n */\n getUnpacker(): typeof LASDecoder {\n return LASDecoder;\n }\n}\n\nexport const LASModuleWasLoaded = false;\n\n/* eslint no-use-before-define: 2 */\n"],
5
+ "mappings": "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",
6
+ "names": ["getModule"]
7
+ }