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

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 (405) 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 +7 -2
  6. package/THIRD-PARTY-NOTICES.md +27 -0
  7. package/dist/dist.dev.js +30141 -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-worker.js +23058 -0
  184. package/dist/pcd/bundled.cjs +33 -0
  185. package/dist/pcd/bundled.cjs.map +7 -0
  186. package/dist/pcd/bundled.d.ts +3 -0
  187. package/dist/pcd/bundled.d.ts.map +1 -0
  188. package/dist/pcd/bundled.js +5 -0
  189. package/dist/pcd/bundled.js.map +1 -0
  190. package/dist/pcd/index.cjs +40 -0
  191. package/dist/pcd/index.cjs.map +7 -0
  192. package/dist/pcd/index.d.ts +8 -0
  193. package/dist/pcd/index.d.ts.map +1 -0
  194. package/dist/pcd/index.js +10 -0
  195. package/dist/pcd/index.js.map +1 -0
  196. package/dist/pcd/lib/decompress-lzf.cjs +80 -0
  197. package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
  198. package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
  199. package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
  200. package/dist/pcd/lib/decompress-lzf.js +62 -0
  201. package/dist/pcd/lib/decompress-lzf.js.map +1 -0
  202. package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
  203. package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
  204. package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
  205. package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
  206. package/dist/pcd/lib/get-pcd-schema.js +53 -0
  207. package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
  208. package/dist/pcd/lib/parse-pcd.cjs +354 -0
  209. package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
  210. package/dist/pcd/lib/parse-pcd.d.ts +20 -0
  211. package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
  212. package/dist/pcd/lib/parse-pcd.js +341 -0
  213. package/dist/pcd/lib/parse-pcd.js.map +1 -0
  214. package/dist/pcd/lib/pcd-types.cjs +19 -0
  215. package/dist/pcd/lib/pcd-types.cjs.map +7 -0
  216. package/dist/pcd/lib/pcd-types.d.ts +31 -0
  217. package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
  218. package/dist/pcd/lib/pcd-types.js +5 -0
  219. package/dist/pcd/lib/pcd-types.js.map +1 -0
  220. package/dist/pcd/pcd-format.cjs +42 -0
  221. package/dist/pcd/pcd-format.cjs.map +7 -0
  222. package/dist/pcd/pcd-format.d.ts +16 -0
  223. package/dist/pcd/pcd-format.d.ts.map +1 -0
  224. package/dist/pcd/pcd-format.js +19 -0
  225. package/dist/pcd/pcd-format.js.map +1 -0
  226. package/dist/pcd/pcd-loader-types.cjs +64 -0
  227. package/dist/pcd/pcd-loader-types.cjs.map +7 -0
  228. package/dist/pcd/pcd-loader-types.d.ts +105 -0
  229. package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
  230. package/dist/pcd/pcd-loader-types.js +35 -0
  231. package/dist/pcd/pcd-loader-types.js.map +1 -0
  232. package/dist/pcd/pcd-loader.cjs +144 -0
  233. package/dist/pcd/pcd-loader.cjs.map +7 -0
  234. package/dist/pcd/pcd-loader.d.ts +44 -0
  235. package/dist/pcd/pcd-loader.d.ts.map +1 -0
  236. package/dist/pcd/pcd-loader.js +128 -0
  237. package/dist/pcd/pcd-loader.js.map +1 -0
  238. package/dist/pcd/pcd-writer.cjs +134 -0
  239. package/dist/pcd/pcd-writer.cjs.map +7 -0
  240. package/dist/pcd/pcd-writer.d.ts +37 -0
  241. package/dist/pcd/pcd-writer.d.ts.map +1 -0
  242. package/dist/pcd/pcd-writer.js +115 -0
  243. package/dist/pcd/pcd-writer.js.map +1 -0
  244. package/dist/pcd/unbundled.cjs +33 -0
  245. package/dist/pcd/unbundled.cjs.map +7 -0
  246. package/dist/pcd/unbundled.d.ts +3 -0
  247. package/dist/pcd/unbundled.d.ts.map +1 -0
  248. package/dist/pcd/unbundled.js +5 -0
  249. package/dist/pcd/unbundled.js.map +1 -0
  250. package/dist/pcd/workers/pcd-worker.cjs +23 -0
  251. package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
  252. package/dist/pcd/workers/pcd-worker.d.ts +2 -0
  253. package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
  254. package/dist/pcd/workers/pcd-worker.js +23 -0
  255. package/dist/pcd/workers/pcd-worker.js.map +1 -0
  256. package/dist/pcd-worker.js +17522 -0
  257. package/dist/ply/bundled.cjs +33 -0
  258. package/dist/ply/bundled.cjs.map +7 -0
  259. package/dist/ply/bundled.d.ts +3 -0
  260. package/dist/ply/bundled.d.ts.map +1 -0
  261. package/dist/ply/bundled.js +5 -0
  262. package/dist/ply/bundled.js.map +1 -0
  263. package/dist/ply/index.cjs +40 -0
  264. package/dist/ply/index.cjs.map +7 -0
  265. package/dist/ply/index.d.ts +8 -0
  266. package/dist/ply/index.d.ts.map +1 -0
  267. package/dist/ply/index.js +11 -0
  268. package/dist/ply/index.js.map +1 -0
  269. package/dist/ply/lib/get-ply-schema.cjs +126 -0
  270. package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
  271. package/dist/ply/lib/get-ply-schema.d.ts +10 -0
  272. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
  273. package/dist/ply/lib/get-ply-schema.js +117 -0
  274. package/dist/ply/lib/get-ply-schema.js.map +1 -0
  275. package/dist/ply/lib/normalize-ply.cjs +96 -0
  276. package/dist/ply/lib/normalize-ply.cjs.map +7 -0
  277. package/dist/ply/lib/normalize-ply.d.ts +8 -0
  278. package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
  279. package/dist/ply/lib/normalize-ply.js +89 -0
  280. package/dist/ply/lib/normalize-ply.js.map +1 -0
  281. package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
  282. package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
  283. package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
  284. package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
  285. package/dist/ply/lib/parse-ply-arrow.js +493 -0
  286. package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
  287. package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
  288. package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
  289. package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
  290. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
  291. package/dist/ply/lib/parse-ply-in-batches.js +625 -0
  292. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
  293. package/dist/ply/lib/parse-ply.cjs +755 -0
  294. package/dist/ply/lib/parse-ply.cjs.map +7 -0
  295. package/dist/ply/lib/parse-ply.d.ts +69 -0
  296. package/dist/ply/lib/parse-ply.d.ts.map +1 -0
  297. package/dist/ply/lib/parse-ply.js +851 -0
  298. package/dist/ply/lib/parse-ply.js.map +1 -0
  299. package/dist/ply/lib/ply-types.cjs +19 -0
  300. package/dist/ply/lib/ply-types.cjs.map +7 -0
  301. package/dist/ply/lib/ply-types.d.ts +37 -0
  302. package/dist/ply/lib/ply-types.d.ts.map +1 -0
  303. package/dist/ply/lib/ply-types.js +2 -0
  304. package/dist/ply/lib/ply-types.js.map +1 -0
  305. package/dist/ply/ply-format.cjs +43 -0
  306. package/dist/ply/ply-format.cjs.map +7 -0
  307. package/dist/ply/ply-format.d.ts +18 -0
  308. package/dist/ply/ply-format.d.ts.map +1 -0
  309. package/dist/ply/ply-format.js +22 -0
  310. package/dist/ply/ply-format.js.map +1 -0
  311. package/dist/ply/ply-loader-types.cjs +65 -0
  312. package/dist/ply/ply-loader-types.cjs.map +7 -0
  313. package/dist/ply/ply-loader-types.d.ts +111 -0
  314. package/dist/ply/ply-loader-types.d.ts.map +1 -0
  315. package/dist/ply/ply-loader-types.js +38 -0
  316. package/dist/ply/ply-loader-types.js.map +1 -0
  317. package/dist/ply/ply-loader.cjs +134 -0
  318. package/dist/ply/ply-loader.cjs.map +7 -0
  319. package/dist/ply/ply-loader.d.ts +44 -0
  320. package/dist/ply/ply-loader.d.ts.map +1 -0
  321. package/dist/ply/ply-loader.js +121 -0
  322. package/dist/ply/ply-loader.js.map +1 -0
  323. package/dist/ply/ply-writer.cjs +175 -0
  324. package/dist/ply/ply-writer.cjs.map +7 -0
  325. package/dist/ply/ply-writer.d.ts +37 -0
  326. package/dist/ply/ply-writer.d.ts.map +1 -0
  327. package/dist/ply/ply-writer.js +140 -0
  328. package/dist/ply/ply-writer.js.map +1 -0
  329. package/dist/ply/unbundled.cjs +33 -0
  330. package/dist/ply/unbundled.cjs.map +7 -0
  331. package/dist/ply/unbundled.d.ts +3 -0
  332. package/dist/ply/unbundled.d.ts.map +1 -0
  333. package/dist/ply/unbundled.js +5 -0
  334. package/dist/ply/unbundled.js.map +1 -0
  335. package/dist/ply/workers/ply-worker.cjs +34 -0
  336. package/dist/ply/workers/ply-worker.cjs.map +7 -0
  337. package/dist/ply/workers/ply-worker.d.ts +2 -0
  338. package/dist/ply/workers/ply-worker.d.ts.map +1 -0
  339. package/dist/ply/workers/ply-worker.js +37 -0
  340. package/dist/ply/workers/ply-worker.js.map +1 -0
  341. package/dist/ply-worker.js +19175 -0
  342. package/package.json +234 -4
  343. package/src/index.ts +19 -0
  344. package/src/las/bundled.ts +39 -0
  345. package/src/las/index.ts +70 -0
  346. package/src/las/las-copc-loader-types.ts +18 -0
  347. package/src/las/las-copc-loader.ts +61 -0
  348. package/src/las/las-format.ts +21 -0
  349. package/src/las/las-loader-shared.ts +124 -0
  350. package/src/las/las-loader-types.ts +27 -0
  351. package/src/las/las-loader.ts +109 -0
  352. package/src/las/las-writer.ts +1473 -0
  353. package/src/las/laz-rs-loader-types.ts +21 -0
  354. package/src/las/laz-rs-loader.ts +53 -0
  355. package/src/las/lazperf-loader-types.ts +22 -0
  356. package/src/las/lazperf-loader.ts +65 -0
  357. package/src/las/lib/LASZIP-LICENSE +202 -0
  358. package/src/las/lib/LASZIP-NOTICE +4 -0
  359. package/src/las/lib/copc/parse-las.ts +265 -0
  360. package/src/las/lib/get-las-schema.ts +50 -0
  361. package/src/las/lib/las-compatibility.ts +178 -0
  362. package/src/las/lib/las-extra-bytes.ts +274 -0
  363. package/src/las/lib/las-types.ts +206 -0
  364. package/src/las/lib/las-waveform.ts +292 -0
  365. package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
  366. package/src/las/lib/laz-perf/parse-las.ts +412 -0
  367. package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
  368. package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
  369. package/src/las/lib/typescript/parse-las.ts +3730 -0
  370. package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
  371. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
  372. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
  373. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  374. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  375. package/src/las/libs/laz-rs-wasm/package.json +19 -0
  376. package/src/las/unbundled.ts +38 -0
  377. package/src/las/workers/las-worker.ts +24 -0
  378. package/src/pcd/bundled.ts +9 -0
  379. package/src/pcd/index.ts +13 -0
  380. package/src/pcd/lib/decompress-lzf.ts +68 -0
  381. package/src/pcd/lib/get-pcd-schema.ts +66 -0
  382. package/src/pcd/lib/parse-pcd.ts +474 -0
  383. package/src/pcd/lib/pcd-types.ts +34 -0
  384. package/src/pcd/pcd-format.ts +21 -0
  385. package/src/pcd/pcd-loader-types.ts +53 -0
  386. package/src/pcd/pcd-loader.ts +179 -0
  387. package/src/pcd/pcd-writer.ts +152 -0
  388. package/src/pcd/unbundled.ts +6 -0
  389. package/src/pcd/workers/pcd-worker.ts +24 -0
  390. package/src/ply/bundled.ts +9 -0
  391. package/src/ply/index.ts +15 -0
  392. package/src/ply/lib/get-ply-schema.ts +133 -0
  393. package/src/ply/lib/normalize-ply.ts +110 -0
  394. package/src/ply/lib/parse-ply-arrow.ts +676 -0
  395. package/src/ply/lib/parse-ply-in-batches.ts +827 -0
  396. package/src/ply/lib/parse-ply.ts +1081 -0
  397. package/src/ply/lib/ply-types.ts +47 -0
  398. package/src/ply/ply-format.ts +24 -0
  399. package/src/ply/ply-loader-types.ts +61 -0
  400. package/src/ply/ply-loader.ts +185 -0
  401. package/src/ply/ply-writer.ts +215 -0
  402. package/src/ply/unbundled.ts +6 -0
  403. package/src/ply/workers/ply-worker.ts +40 -0
  404. package/third-party-licenses/plasio-LICENSE +21 -0
  405. package/third-party-licenses/three-LICENSE +21 -0
@@ -0,0 +1,412 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ // ported and es6-ified from https://github.com/verma/plasio/
6
+ // import type {ArrowTable, ColumnarTable} from '@loaders.gl/core/schema';
7
+ import type {LASLoaderOptions} from '../../las-loader-types';
8
+ import type {LASMesh, LASHeader} from '../las-types';
9
+ import type {MeshAttributes} from '@loaders.gl/core/schema';
10
+ import {getMeshBoundingBox /* , convertMeshToTable */} from '@loaders.gl/core/schema-utils';
11
+ import {concatenateArrayBuffersAsync} from '@loaders.gl/core/loader-utils';
12
+ import {getLASSchema} from '../get-las-schema';
13
+ import {LASFile} from './laslaz-decoder';
14
+
15
+ type LASChunk = {
16
+ count: number;
17
+ buffer: ArrayBuffer;
18
+ hasMoreData: boolean;
19
+ };
20
+
21
+ type LASDecoder = {
22
+ pointsCount: number;
23
+ getPoint(index: number): {
24
+ position: [number, number, number];
25
+ color?: [number, number, number];
26
+ intensity: number;
27
+ classification: number;
28
+ };
29
+ };
30
+
31
+ type LASDecodedChunk = {
32
+ decoder: LASDecoder;
33
+ header: LASHeader;
34
+ };
35
+
36
+ const DEFAULT_BATCH_SIZE = 1000 * 100;
37
+
38
+ /**
39
+ * Parsing of .las file
40
+ * @param arrayBuffer
41
+ * @param options
42
+ * @returns LASMesh
43
+ */
44
+ export function parseLAS(arrayBuffer: ArrayBuffer, options?: LASLoaderOptions): LASMesh {
45
+ return parseLASMesh(arrayBuffer, options);
46
+ // This code breaks pointcloud example on the website
47
+ // const mesh = parseLASMesh(arrayBuffer, options);
48
+ // return convertMeshToTable(mesh, options?.las?.shape || 'mesh') as LASMesh | ArrowTable | ColumnarTable;
49
+ }
50
+
51
+ /**
52
+ * Parse LAS/LAZ data in decoded point batches.
53
+ * @param arrayBufferIterator Iterator yielding LAS/LAZ binary chunks
54
+ * @param options LAS loader options
55
+ * @returns Async iterable of mesh batches
56
+ */
57
+ export async function* parseLASInBatches(
58
+ arrayBufferIterator:
59
+ | AsyncIterable<ArrayBufferLike | ArrayBufferView>
60
+ | Iterable<ArrayBufferLike | ArrayBufferView>,
61
+ options: LASLoaderOptions = {}
62
+ ): AsyncIterable<LASMesh> {
63
+ const arrayBuffer = await concatenateArrayBuffersAsync(arrayBufferIterator);
64
+ const batchSize = getBatchSize(options);
65
+
66
+ for (const {decoder, header} of parseLASChunkedIterator(arrayBuffer, batchSize)) {
67
+ yield parseLASMeshBatch(decoder, header, options);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Parsing of .las file
73
+ * @param arrayBuffer
74
+ * @param options
75
+ * @returns LASHeader
76
+ */
77
+ function parseLASMesh(arrayBuffer: ArrayBuffer, options: LASLoaderOptions = {}): LASMesh {
78
+ let pointIndex: number = 0;
79
+
80
+ let positions: Float32Array | Float64Array;
81
+ let colors: Uint8Array | null;
82
+ let intensities: Uint16Array;
83
+ let classifications: Uint8Array;
84
+ let originalHeader: any;
85
+
86
+ const lasMesh: LASMesh = {
87
+ loader: 'las',
88
+ loaderData: {} as LASHeader,
89
+ // shape: 'mesh',
90
+ schema: {fields: [], metadata: {}},
91
+ header: {
92
+ vertexCount: 0,
93
+ boundingBox: [
94
+ [0, 0, 0],
95
+ [0, 0, 0]
96
+ ]
97
+ },
98
+ attributes: {},
99
+ topology: 'point-list',
100
+ mode: 0 // GL.POINTS
101
+ };
102
+
103
+ /* eslint-disable max-statements */
104
+ // @ts-ignore Possibly undefined
105
+ parseLASChunked(arrayBuffer, (decoder: any = {}, lasHeader: LASHeader) => {
106
+ if (!originalHeader) {
107
+ originalHeader = lasHeader;
108
+ const total = lasHeader.totalToRead;
109
+
110
+ const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
111
+ positions = new PositionsType(total * 3);
112
+ // laslaz-decoder.js `pointFormatReaders`
113
+ colors = lasHeader.hasColor ? new Uint8Array(total * 4) : null;
114
+ intensities = new Uint16Array(total);
115
+ classifications = new Uint8Array(total);
116
+
117
+ lasMesh.loaderData = lasHeader;
118
+ lasMesh.attributes = {
119
+ POSITION: {value: positions, size: 3},
120
+ // non-gltf attributes, use non-capitalized names for now
121
+ intensity: {value: intensities, size: 1},
122
+ classification: {value: classifications, size: 1}
123
+ };
124
+
125
+ if (colors) {
126
+ lasMesh.attributes.COLOR_0 = {value: colors, size: 4};
127
+ }
128
+ }
129
+
130
+ const batchSize = decoder.pointsCount;
131
+ const {
132
+ scale: [scaleX, scaleY, scaleZ],
133
+ offset: [offsetX, offsetY, offsetZ]
134
+ } = lasHeader;
135
+
136
+ const twoByteColor = detectTwoByteColors(decoder, batchSize, options.las?.colorDepth);
137
+
138
+ for (let i = 0; i < batchSize; i++) {
139
+ const {position, color, intensity, classification} = decoder.getPoint(i);
140
+
141
+ positions[pointIndex * 3] = position[0] * scaleX + offsetX;
142
+ positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
143
+ positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
144
+
145
+ if (color && colors) {
146
+ if (twoByteColor) {
147
+ colors[pointIndex * 4] = color[0] / 256;
148
+ colors[pointIndex * 4 + 1] = color[1] / 256;
149
+ colors[pointIndex * 4 + 2] = color[2] / 256;
150
+ } else {
151
+ colors[pointIndex * 4] = color[0];
152
+ colors[pointIndex * 4 + 1] = color[1];
153
+ colors[pointIndex * 4 + 2] = color[2];
154
+ }
155
+ colors[pointIndex * 4 + 3] = 255;
156
+ }
157
+
158
+ intensities[pointIndex] = intensity;
159
+ classifications[pointIndex] = classification;
160
+
161
+ pointIndex++;
162
+ }
163
+
164
+ const meshBatch = {
165
+ ...lasMesh,
166
+ header: {
167
+ vertexCount: lasHeader.totalRead
168
+ },
169
+ progress: lasHeader.totalRead / lasHeader.totalToRead
170
+ };
171
+
172
+ options?.onProgress?.({
173
+ ...meshBatch,
174
+ phase: 'decode',
175
+ completed: lasHeader.totalRead,
176
+ total: lasHeader.totalToRead,
177
+ unit: 'points'
178
+ });
179
+ });
180
+ /* eslint-enable max-statements */
181
+
182
+ lasMesh.header = {
183
+ vertexCount: originalHeader.totalToRead,
184
+ boundingBox: getMeshBoundingBox(lasMesh?.attributes || {}) ?? undefined
185
+ };
186
+
187
+ if (lasMesh) {
188
+ lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);
189
+ }
190
+ return lasMesh;
191
+ }
192
+
193
+ /**
194
+ * Convert one decoded LAS/LAZ chunk into a mesh.
195
+ * @param decoder Point decoder for the current chunk
196
+ * @param lasHeader LAS file header with current progress
197
+ * @param options LAS loader options
198
+ * @returns Mesh containing one decoded point batch
199
+ */
200
+ function parseLASMeshBatch(
201
+ decoder: LASDecoder,
202
+ lasHeader: LASHeader,
203
+ options: LASLoaderOptions = {}
204
+ ): LASMesh {
205
+ const batchSize = decoder.pointsCount;
206
+ const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
207
+ const positions = new PositionsType(batchSize * 3);
208
+ const colors = lasHeader.hasColor ? new Uint8Array(batchSize * 4) : null;
209
+ const intensities = new Uint16Array(batchSize);
210
+ const classifications = new Uint8Array(batchSize);
211
+
212
+ populateLASAttributes(decoder, lasHeader, options, {
213
+ positions,
214
+ colors,
215
+ intensities,
216
+ classifications,
217
+ pointOffset: 0
218
+ });
219
+
220
+ const attributes: MeshAttributes = {
221
+ POSITION: {value: positions, size: 3},
222
+ intensity: {value: intensities, size: 1},
223
+ classification: {value: classifications, size: 1}
224
+ };
225
+
226
+ if (colors) {
227
+ attributes.COLOR_0 = {value: colors, size: 4};
228
+ }
229
+
230
+ const batchHeader = {...lasHeader};
231
+ const lasMesh: LASMesh = {
232
+ loader: 'las',
233
+ loaderData: batchHeader,
234
+ schema: {fields: [], metadata: {}},
235
+ header: {
236
+ vertexCount: batchSize,
237
+ boundingBox: getMeshBoundingBox(attributes)
238
+ },
239
+ attributes,
240
+ topology: 'point-list',
241
+ mode: 0,
242
+ progress: lasHeader.totalRead / lasHeader.totalToRead
243
+ } as LASMesh & {progress: number};
244
+
245
+ lasMesh.schema = getLASSchema(batchHeader, lasMesh.attributes);
246
+ return lasMesh;
247
+ }
248
+
249
+ /**
250
+ * Fill typed LAS attribute arrays from a decoded chunk.
251
+ * @param decoder Point decoder for the current chunk
252
+ * @param lasHeader LAS file header
253
+ * @param options LAS loader options
254
+ * @param target Target attribute arrays and write offset
255
+ */
256
+ function populateLASAttributes(
257
+ decoder: LASDecoder,
258
+ lasHeader: LASHeader,
259
+ options: LASLoaderOptions,
260
+ target: {
261
+ positions: Float32Array | Float64Array;
262
+ colors: Uint8Array | null;
263
+ intensities: Uint16Array;
264
+ classifications: Uint8Array;
265
+ pointOffset: number;
266
+ }
267
+ ): void {
268
+ const batchSize = decoder.pointsCount;
269
+ const {
270
+ scale: [scaleX, scaleY, scaleZ],
271
+ offset: [offsetX, offsetY, offsetZ]
272
+ } = lasHeader;
273
+ const twoByteColor = detectTwoByteColors(decoder, batchSize, options.las?.colorDepth);
274
+
275
+ for (let i = 0; i < batchSize; i++) {
276
+ const {position, color, intensity, classification} = decoder.getPoint(i);
277
+ const pointIndex = target.pointOffset + i;
278
+
279
+ target.positions[pointIndex * 3] = position[0] * scaleX + offsetX;
280
+ target.positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
281
+ target.positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
282
+
283
+ if (color && target.colors) {
284
+ if (twoByteColor) {
285
+ target.colors[pointIndex * 4] = color[0] / 256;
286
+ target.colors[pointIndex * 4 + 1] = color[1] / 256;
287
+ target.colors[pointIndex * 4 + 2] = color[2] / 256;
288
+ } else {
289
+ target.colors[pointIndex * 4] = color[0];
290
+ target.colors[pointIndex * 4 + 1] = color[1];
291
+ target.colors[pointIndex * 4 + 2] = color[2];
292
+ }
293
+ target.colors[pointIndex * 4 + 3] = 255;
294
+ }
295
+
296
+ target.intensities[pointIndex] = intensity;
297
+ target.classifications[pointIndex] = classification;
298
+ }
299
+ }
300
+
301
+ /**
302
+ * parse laz data
303
+ * @param rawData
304
+ * @param onParseData
305
+ * @return parsed point cloud
306
+ */
307
+ /* eslint-enable max-statements */
308
+ export function parseLASChunked(
309
+ rawData: ArrayBuffer,
310
+ onParseData: any = {},
311
+ batchSize: number = DEFAULT_BATCH_SIZE
312
+ ): void {
313
+ for (const {decoder, header} of parseLASChunkedIterator(rawData, batchSize)) {
314
+ onParseData(decoder, header);
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Decode LAS/LAZ data into point chunks.
320
+ * @param rawData Complete LAS/LAZ file data
321
+ * @param batchSize Number of returned points per chunk
322
+ * @returns Iterable of decoded point chunks
323
+ */
324
+ function* parseLASChunkedIterator(
325
+ rawData: ArrayBuffer,
326
+ batchSize: number = DEFAULT_BATCH_SIZE
327
+ ): Iterable<LASDecodedChunk> {
328
+ const dataHandler = new LASFile(rawData);
329
+
330
+ try {
331
+ // open data
332
+ dataHandler.open();
333
+
334
+ const header = dataHandler.getHeader();
335
+ // start loading
336
+ const Unpacker = dataHandler.getUnpacker();
337
+
338
+ header.totalToRead = header.pointsCount;
339
+ let totalRead = 0;
340
+
341
+ /* eslint-disable no-constant-condition */
342
+ while (true) {
343
+ const chunk: LASChunk = dataHandler.readData(batchSize);
344
+
345
+ totalRead += chunk.count;
346
+
347
+ header.totalRead = totalRead;
348
+
349
+ const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
350
+
351
+ // surface unpacker and progress via call back
352
+ // use unpacker.pointsCount and unpacker.getPoint(i) to handle data in app
353
+ yield {decoder: unpacker as unknown as LASDecoder, header};
354
+
355
+ if (!chunk.hasMoreData || totalRead >= header.totalToRead) {
356
+ break;
357
+ }
358
+ }
359
+ } catch (e) {
360
+ throw e;
361
+ } finally {
362
+ dataHandler.close();
363
+ }
364
+ }
365
+
366
+ /**
367
+ * Get the requested LAS point batch size.
368
+ * @param options LAS loader options
369
+ * @returns Point count per decoded batch
370
+ */
371
+ function getBatchSize(options: LASLoaderOptions): number {
372
+ const batchSize = options.batchSize ?? options.core?.batchSize;
373
+ return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;
374
+ }
375
+
376
+ /**
377
+ * @param decoder
378
+ * @param batchSize
379
+ * @param colorDepth
380
+ * @returns boolean
381
+ */
382
+ function detectTwoByteColors(
383
+ decoder: any = {},
384
+ batchSize: number,
385
+ colorDepth?: number | string
386
+ ): boolean {
387
+ let twoByteColor = false;
388
+ switch (colorDepth) {
389
+ case 8:
390
+ twoByteColor = false;
391
+ break;
392
+ case 16:
393
+ twoByteColor = true;
394
+ break;
395
+ case 'auto':
396
+ if (decoder.getPoint(0).color) {
397
+ for (let i = 0; i < batchSize; i++) {
398
+ const {color} = decoder.getPoint(i);
399
+ // eslint-disable-next-line max-depth
400
+ if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
401
+ twoByteColor = true;
402
+ }
403
+ }
404
+ }
405
+ break;
406
+ default:
407
+ // eslint-disable-next-line
408
+ console.warn('las: illegal value for options.las.colorDepth');
409
+ break;
410
+ }
411
+ return twoByteColor;
412
+ }