@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,38 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
5
+ import { formatLASMeshColors, getLASShape, LAS_LOADER_METADATA } from "./las-loader-shared.js";
6
+ import { parseLAS, parseLASInBatches } from "./lib/laz-rs-wasm/parse-las.js";
7
+ import initLazRsWasm from "./libs/laz-rs-wasm/laz_rs_wasm.js";
8
+ /**
9
+ * Loader for the LAS (LASer) point cloud format
10
+ */
11
+ export const LAZRsLoaderWithParser = {
12
+ ...LAS_LOADER_METADATA,
13
+ name: 'LAS (laz-rs)',
14
+ parse: async (arrayBuffer, options) => {
15
+ await initLazRsWasm();
16
+ return convertLASMesh(parseLAS(arrayBuffer, { ...options }), options);
17
+ },
18
+ parseInBatches: async function* (arrayBufferIterator, options) {
19
+ await initLazRsWasm();
20
+ for await (const mesh of parseLASInBatches(arrayBufferIterator, options)) {
21
+ yield convertLASMesh(mesh, options);
22
+ }
23
+ }
24
+ };
25
+ function convertLASMesh(mesh, options) {
26
+ const formattedMesh = formatLASMeshColors(mesh, options?.las?.colorFormat || 'uint8norm');
27
+ const table = convertMeshToTable(formattedMesh, 'arrow-table');
28
+ if (getLASShape(options) === 'arrow-table') {
29
+ return table;
30
+ }
31
+ return {
32
+ ...convertTableToMesh(table),
33
+ loader: mesh.loader,
34
+ loaderData: mesh.loaderData,
35
+ progress: mesh.progress
36
+ };
37
+ }
38
+ //# sourceMappingURL=laz-rs-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laz-rs-loader.js","sourceRoot":"","sources":["../../src/las/laz-rs-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAKpC,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EAEpB,+BAA4B;AAE7B,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAC,uCAAoC;AACxE,OAAO,aAAa,0CAAuC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,mBAAmB;IACtB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAA0B,EAAE,EAAE;QACpE,MAAM,aAAa,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAC,GAAG,OAAO,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,cAAc,EAAE,KAAK,SAAS,CAAC,EAAE,mBAAmB,EAAE,OAA0B;QAC9E,MAAM,aAAa,EAAE,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC;YACzE,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CAKF,CAAC;AAEF,SAAS,cAAc,CAAC,IAAa,EAAE,OAA0B;IAC/D,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,IAAI,WAAW,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAmB,CAAC;IACjF,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO;QACL,GAAI,kBAAkB,CAAC,KAAK,CAAa;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAG,IAAsC,CAAC,QAAQ;KAC1B,CAAC;AACrC,CAAC"}
@@ -0,0 +1,49 @@
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/lazperf-loader-types.ts
31
+ var lazperf_loader_types_exports = {};
32
+ __export(lazperf_loader_types_exports, {
33
+ LAZPerfLoader: () => LAZPerfLoader
34
+ });
35
+ module.exports = __toCommonJS(lazperf_loader_types_exports);
36
+ var import_las_loader_shared = require("./las-loader-shared.cjs");
37
+ var LAZPerfLoader = {
38
+ ...import_las_loader_shared.LAS_LOADER_METADATA,
39
+ name: "LAS (laz-perf)",
40
+ preload: async () => {
41
+ const { LAZPerfLoaderWithParser } = await import("@loaders.gl/pointclouds/las/lazperf-loader");
42
+ return LAZPerfLoaderWithParser;
43
+ }
44
+ };
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ LAZPerfLoader
48
+ });
49
+ //# sourceMappingURL=lazperf-loader-types.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/las/lazperf-loader-types.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// LASER (LAS) FILE FORMAT\nimport type {Loader} from '@loaders.gl/core/loader-utils';\nimport type {MeshArrowTable} from '@loaders.gl/core/schema';\nimport {LAS_LOADER_METADATA, type LASLoaderOptions} from './las-loader-shared';\nimport type {LASMesh} from './lib/las-types';\n\n/**\n * Metadata-only loader for the LAS (LASer) point cloud format.\n * @note Does not support LAS v1.4\n */\nexport const LAZPerfLoader = {\n ...LAS_LOADER_METADATA,\n name: 'LAS (laz-perf)',\n preload: async () => {\n const {LAZPerfLoaderWithParser} = await import('@loaders.gl/pointclouds/las/lazperf-loader');\n return LAZPerfLoaderWithParser;\n }\n} as const satisfies Loader<LASMesh | MeshArrowTable, LASMesh | MeshArrowTable, LASLoaderOptions>;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,+BAAyD;AAOlD,IAAM,gBAAgB;AAAA,EAC3B,GAAG;AAAA,EACH,MAAM;AAAA,EACN,SAAS,YAAY;AACnB,UAAM,EAAC,wBAAuB,IAAI,MAAM,OAAO,4CAA4C;AAC3F,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,67 @@
1
+ import type { MeshArrowTable } from '@loaders.gl/core/schema';
2
+ import { type LASLoaderOptions } from "./las-loader-shared.js";
3
+ import type { LASMesh } from "./lib/las-types.js";
4
+ /**
5
+ * Metadata-only loader for the LAS (LASer) point cloud format.
6
+ * @note Does not support LAS v1.4
7
+ */
8
+ export declare const LAZPerfLoader: {
9
+ readonly name: "LAS (laz-perf)";
10
+ readonly preload: () => Promise<{
11
+ readonly name: "LAS (laz-perf)";
12
+ readonly parse: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => Promise<LASMesh | MeshArrowTable>;
13
+ readonly parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => LASMesh | MeshArrowTable;
14
+ readonly parseInBatches: (arrayBufferIterator: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options?: LASLoaderOptions) => AsyncGenerator<LASMesh | MeshArrowTable, void, any>;
15
+ readonly dataType: LASMesh | MeshArrowTable;
16
+ readonly batchType: LASMesh | MeshArrowTable;
17
+ readonly version: any;
18
+ readonly worker: false;
19
+ readonly options: {
20
+ readonly las: {
21
+ readonly shape: "arrow-table";
22
+ readonly fp64: false;
23
+ readonly colorDepth: 8;
24
+ readonly colorFormat: "uint8norm";
25
+ readonly columns: undefined;
26
+ readonly extraBytes: "raw";
27
+ readonly recoverMissingChunkTable: false;
28
+ readonly compatibilityMode: "auto";
29
+ };
30
+ };
31
+ readonly id: "las";
32
+ readonly module: "pointclouds";
33
+ readonly encoding: "binary";
34
+ readonly format: "las";
35
+ readonly extensions: ["las", "laz"];
36
+ readonly mimeTypes: ["application/octet-stream"];
37
+ readonly text: false;
38
+ readonly binary: true;
39
+ readonly tests: ["LASF"];
40
+ }>;
41
+ readonly dataType: LASMesh | MeshArrowTable;
42
+ readonly batchType: LASMesh | MeshArrowTable;
43
+ readonly version: any;
44
+ readonly worker: false;
45
+ readonly options: {
46
+ readonly las: {
47
+ readonly shape: "arrow-table";
48
+ readonly fp64: false;
49
+ readonly colorDepth: 8;
50
+ readonly colorFormat: "uint8norm";
51
+ readonly columns: undefined;
52
+ readonly extraBytes: "raw";
53
+ readonly recoverMissingChunkTable: false;
54
+ readonly compatibilityMode: "auto";
55
+ };
56
+ };
57
+ readonly id: "las";
58
+ readonly module: "pointclouds";
59
+ readonly encoding: "binary";
60
+ readonly format: "las";
61
+ readonly extensions: ["las", "laz"];
62
+ readonly mimeTypes: ["application/octet-stream"];
63
+ readonly text: false;
64
+ readonly binary: true;
65
+ readonly tests: ["LASF"];
66
+ };
67
+ //# sourceMappingURL=lazperf-loader-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazperf-loader-types.d.ts","sourceRoot":"","sources":["../../src/las/lazperf-loader-types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAsB,KAAK,gBAAgB,EAAC,+BAA4B;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,2BAAwB;AAE7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOuE,CAAC"}
@@ -0,0 +1,17 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { LAS_LOADER_METADATA } from "./las-loader-shared.js";
5
+ /**
6
+ * Metadata-only loader for the LAS (LASer) point cloud format.
7
+ * @note Does not support LAS v1.4
8
+ */
9
+ export const LAZPerfLoader = {
10
+ ...LAS_LOADER_METADATA,
11
+ name: 'LAS (laz-perf)',
12
+ preload: async () => {
13
+ const { LAZPerfLoaderWithParser } = await import('@loaders.gl/pointclouds/las/lazperf-loader');
14
+ return LAZPerfLoaderWithParser;
15
+ }
16
+ };
17
+ //# sourceMappingURL=lazperf-loader-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazperf-loader-types.js","sourceRoot":"","sources":["../../src/las/lazperf-loader-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAKpC,OAAO,EAAC,mBAAmB,EAAwB,+BAA4B;AAG/E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,mBAAmB;IACtB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAC,uBAAuB,EAAC,GAAG,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAC;QAC7F,OAAO,uBAAuB,CAAC;IACjC,CAAC;CAC8F,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/las/lazperf-loader.ts
21
+ var lazperf_loader_exports = {};
22
+ __export(lazperf_loader_exports, {
23
+ LAZPerfLoaderWithParser: () => LAZPerfLoaderWithParser
24
+ });
25
+ module.exports = __toCommonJS(lazperf_loader_exports);
26
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
+ var import_las_loader_shared = require("./las-loader-shared.cjs");
28
+ var import_parse_las = require("./lib/laz-perf/parse-las.cjs");
29
+ var LAZPerfLoaderWithParser = {
30
+ ...import_las_loader_shared.LAS_LOADER_METADATA,
31
+ name: "LAS (laz-perf)",
32
+ parse: async (arrayBuffer, options) => convertLASMesh((0, import_parse_las.parseLAS)(arrayBuffer, options), options),
33
+ parseSync: (arrayBuffer, options) => convertLASMesh((0, import_parse_las.parseLAS)(arrayBuffer, options), options),
34
+ parseInBatches: async function* (arrayBufferIterator, options) {
35
+ yield* convertLASMeshBatches((0, import_parse_las.parseLASInBatches)(arrayBufferIterator, options), options);
36
+ }
37
+ };
38
+ function convertLASMesh(mesh, options) {
39
+ const formattedMesh = (0, import_las_loader_shared.formatLASMeshColors)(mesh, options?.las?.colorFormat || "uint8norm");
40
+ const table = (0, import_schema_utils.convertMeshToTable)(formattedMesh, "arrow-table");
41
+ if ((0, import_las_loader_shared.getLASShape)(options) === "arrow-table") {
42
+ return table;
43
+ }
44
+ return {
45
+ ...(0, import_schema_utils.convertTableToMesh)(table),
46
+ loader: mesh.loader,
47
+ loaderData: mesh.loaderData,
48
+ progress: mesh.progress
49
+ };
50
+ }
51
+ async function* convertLASMeshBatches(meshBatches, options) {
52
+ for await (const mesh of meshBatches) {
53
+ yield convertLASMesh(mesh, options);
54
+ }
55
+ }
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ LAZPerfLoaderWithParser
59
+ });
60
+ //# sourceMappingURL=lazperf-loader.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/las/lazperf-loader.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// LASER (LAS) FILE FORMAT\nimport type {LoaderWithParser} from '@loaders.gl/core/loader-utils';\nimport type {MeshArrowTable} from '@loaders.gl/core/schema';\nimport {convertMeshToTable, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {\n formatLASMeshColors,\n getLASShape,\n LAS_LOADER_METADATA,\n type LASLoaderOptions\n} from './las-loader-shared';\nimport type {LASMesh} from './lib/las-types';\nimport {parseLAS, parseLASInBatches} from './lib/laz-perf/parse-las';\n\n/**\n * Loader for the LAS (LASer) point cloud format\n * @note Does not support LAS v1.4\n */\nexport const LAZPerfLoaderWithParser = {\n ...LAS_LOADER_METADATA,\n name: 'LAS (laz-perf)',\n parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n convertLASMesh(parseLAS(arrayBuffer, options), options),\n parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n convertLASMesh(parseLAS(arrayBuffer, options), options),\n parseInBatches: async function* (arrayBufferIterator, options?: LASLoaderOptions) {\n yield* convertLASMeshBatches(parseLASInBatches(arrayBufferIterator, options), options);\n }\n} as const satisfies LoaderWithParser<\n LASMesh | MeshArrowTable,\n LASMesh | MeshArrowTable,\n LASLoaderOptions\n>;\n\nfunction convertLASMesh(mesh: LASMesh, options?: LASLoaderOptions): LASMesh | MeshArrowTable {\n const formattedMesh = formatLASMeshColors(mesh, options?.las?.colorFormat || 'uint8norm');\n const table = convertMeshToTable(formattedMesh, 'arrow-table') as MeshArrowTable;\n if (getLASShape(options) === 'arrow-table') {\n return table;\n }\n return {\n ...(convertTableToMesh(table) as LASMesh),\n loader: mesh.loader,\n loaderData: mesh.loaderData,\n progress: (mesh as LASMesh & {progress?: number}).progress\n } as LASMesh & {progress?: number};\n}\n\n/**\n * Convert LAS mesh batches to the requested output shape.\n * @param meshBatches Decoded LAS mesh batches\n * @param options LAS loader options\n * @returns Converted LAS batches\n */\nasync function* convertLASMeshBatches(\n meshBatches: AsyncIterable<LASMesh>,\n options?: LASLoaderOptions\n): AsyncIterable<LASMesh | MeshArrowTable> {\n for await (const mesh of meshBatches) {\n yield convertLASMesh(mesh, options);\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,0BAAqD;AACrD,+BAKO;AAEP,uBAA0C;AAMnC,IAAM,0BAA0B;AAAA,EACrC,GAAG;AAAA,EACH,MAAM;AAAA,EACN,OAAO,OAAO,aAA0B,YACtC,mBAAe,2BAAS,aAAa,OAAO,GAAG,OAAO;AAAA,EACxD,WAAW,CAAC,aAA0B,YACpC,mBAAe,2BAAS,aAAa,OAAO,GAAG,OAAO;AAAA,EACxD,gBAAgB,iBAAiB,qBAAqB,SAA4B;AAChF,WAAO,0BAAsB,oCAAkB,qBAAqB,OAAO,GAAG,OAAO;AAAA,EACvF;AACF;AAMA,SAAS,eAAe,MAAe,SAAsD;AAC3F,QAAM,oBAAgB,8CAAoB,MAAM,SAAS,KAAK,eAAe,WAAW;AACxF,QAAM,YAAQ,wCAAmB,eAAe,aAAa;AAC7D,UAAI,sCAAY,OAAO,MAAM,eAAe;AAC1C,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,OAAI,wCAAmB,KAAK;AAAA,IAC5B,QAAQ,KAAK;AAAA,IACb,YAAY,KAAK;AAAA,IACjB,UAAW,KAAuC;AAAA,EACpD;AACF;AAQA,gBAAgB,sBACd,aACA,SACyC;AACzC,mBAAiB,QAAQ,aAAa;AACpC,UAAM,eAAe,MAAM,OAAO;AAAA,EACpC;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,39 @@
1
+ import type { MeshArrowTable } from '@loaders.gl/core/schema';
2
+ import { type LASLoaderOptions } from "./las-loader-shared.js";
3
+ import type { LASMesh } from "./lib/las-types.js";
4
+ /**
5
+ * Loader for the LAS (LASer) point cloud format
6
+ * @note Does not support LAS v1.4
7
+ */
8
+ export declare const LAZPerfLoaderWithParser: {
9
+ readonly name: "LAS (laz-perf)";
10
+ readonly parse: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => Promise<LASMesh | MeshArrowTable>;
11
+ readonly parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => LASMesh | MeshArrowTable;
12
+ readonly parseInBatches: (arrayBufferIterator: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options?: LASLoaderOptions) => AsyncGenerator<LASMesh | MeshArrowTable, void, any>;
13
+ readonly dataType: LASMesh | MeshArrowTable;
14
+ readonly batchType: LASMesh | MeshArrowTable;
15
+ readonly version: any;
16
+ readonly worker: false;
17
+ readonly options: {
18
+ readonly las: {
19
+ readonly shape: "arrow-table";
20
+ readonly fp64: false;
21
+ readonly colorDepth: 8;
22
+ readonly colorFormat: "uint8norm";
23
+ readonly columns: undefined;
24
+ readonly extraBytes: "raw";
25
+ readonly recoverMissingChunkTable: false;
26
+ readonly compatibilityMode: "auto";
27
+ };
28
+ };
29
+ readonly id: "las";
30
+ readonly module: "pointclouds";
31
+ readonly encoding: "binary";
32
+ readonly format: "las";
33
+ readonly extensions: ["las", "laz"];
34
+ readonly mimeTypes: ["application/octet-stream"];
35
+ readonly text: false;
36
+ readonly binary: true;
37
+ readonly tests: ["LASF"];
38
+ };
39
+ //# sourceMappingURL=lazperf-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazperf-loader.d.ts","sourceRoot":"","sources":["../../src/las/lazperf-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAIL,KAAK,gBAAgB,EACtB,+BAA4B;AAC7B,OAAO,KAAK,EAAC,OAAO,EAAC,2BAAwB;AAG7C;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;kCAGP,WAAW,YAAY,gBAAgB;sCAEzC,WAAW,YAAY,gBAAgB;+LAEA,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;CAOjF,CAAC"}
@@ -0,0 +1,44 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
5
+ import { formatLASMeshColors, getLASShape, LAS_LOADER_METADATA } from "./las-loader-shared.js";
6
+ import { parseLAS, parseLASInBatches } from "./lib/laz-perf/parse-las.js";
7
+ /**
8
+ * Loader for the LAS (LASer) point cloud format
9
+ * @note Does not support LAS v1.4
10
+ */
11
+ export const LAZPerfLoaderWithParser = {
12
+ ...LAS_LOADER_METADATA,
13
+ name: 'LAS (laz-perf)',
14
+ parse: async (arrayBuffer, options) => convertLASMesh(parseLAS(arrayBuffer, options), options),
15
+ parseSync: (arrayBuffer, options) => convertLASMesh(parseLAS(arrayBuffer, options), options),
16
+ parseInBatches: async function* (arrayBufferIterator, options) {
17
+ yield* convertLASMeshBatches(parseLASInBatches(arrayBufferIterator, options), options);
18
+ }
19
+ };
20
+ function convertLASMesh(mesh, options) {
21
+ const formattedMesh = formatLASMeshColors(mesh, options?.las?.colorFormat || 'uint8norm');
22
+ const table = convertMeshToTable(formattedMesh, 'arrow-table');
23
+ if (getLASShape(options) === 'arrow-table') {
24
+ return table;
25
+ }
26
+ return {
27
+ ...convertTableToMesh(table),
28
+ loader: mesh.loader,
29
+ loaderData: mesh.loaderData,
30
+ progress: mesh.progress
31
+ };
32
+ }
33
+ /**
34
+ * Convert LAS mesh batches to the requested output shape.
35
+ * @param meshBatches Decoded LAS mesh batches
36
+ * @param options LAS loader options
37
+ * @returns Converted LAS batches
38
+ */
39
+ async function* convertLASMeshBatches(meshBatches, options) {
40
+ for await (const mesh of meshBatches) {
41
+ yield convertLASMesh(mesh, options);
42
+ }
43
+ }
44
+ //# sourceMappingURL=lazperf-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazperf-loader.js","sourceRoot":"","sources":["../../src/las/lazperf-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAKpC,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EAEpB,+BAA4B;AAE7B,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAC,oCAAiC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,mBAAmB;IACtB,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAA0B,EAAE,EAAE,CACpE,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACzD,SAAS,EAAE,CAAC,WAAwB,EAAE,OAA0B,EAAE,EAAE,CAClE,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACzD,cAAc,EAAE,KAAK,SAAS,CAAC,EAAE,mBAAmB,EAAE,OAA0B;QAC9E,KAAK,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;CAKF,CAAC;AAEF,SAAS,cAAc,CAAC,IAAa,EAAE,OAA0B;IAC/D,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,IAAI,WAAW,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAmB,CAAC;IACjF,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO;QACL,GAAI,kBAAkB,CAAC,KAAK,CAAa;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAG,IAAsC,CAAC,QAAQ;KAC1B,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACnC,WAAmC,EACnC,OAA0B;IAE1B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/las/lib/copc/parse-las.ts
21
+ var parse_las_exports = {};
22
+ __export(parse_las_exports, {
23
+ parseCOPCLAS: () => parseCOPCLAS,
24
+ parseCOPCLASInBatches: () => parseCOPCLASInBatches
25
+ });
26
+ module.exports = __toCommonJS(parse_las_exports);
27
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
28
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
29
+ var import_copc = require("copc");
30
+ var import_get_las_schema = require("../get-las-schema.cjs");
31
+ var DEFAULT_BATCH_SIZE = 1e3 * 100;
32
+ async function parseCOPCLAS(arrayBuffer, options = {}) {
33
+ const header = import_copc.Las.Header.parse(new Uint8Array(arrayBuffer));
34
+ const batches = parseCOPCLASBatches(arrayBuffer, options, header.pointCount)[Symbol.asyncIterator]();
35
+ const firstBatch = await batches.next();
36
+ if (!firstBatch.value) {
37
+ throw new Error("LAS file contained no points");
38
+ }
39
+ return firstBatch.value;
40
+ }
41
+ async function* parseCOPCLASInBatches(arrayBufferIterator, options = {}) {
42
+ const arrayBuffer = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBufferIterator);
43
+ yield* parseCOPCLASBatches(arrayBuffer, options, getBatchSize(options));
44
+ }
45
+ async function* parseCOPCLASBatches(arrayBuffer, options, batchSize) {
46
+ const header = import_copc.Las.Header.parse(new Uint8Array(arrayBuffer));
47
+ const pointData = await getCOPCPointData(arrayBuffer, header);
48
+ const view = import_copc.Las.View.create(pointData, header);
49
+ const totalToRead = view.pointCount;
50
+ const lasHeader = getLASHeader(arrayBuffer, header, totalToRead);
51
+ for (let pointIndex = 0; pointIndex < totalToRead; pointIndex += batchSize) {
52
+ const batchPointCount = Math.min(batchSize, totalToRead - pointIndex);
53
+ lasHeader.totalRead = pointIndex + batchPointCount;
54
+ yield getLASMeshBatch(view, lasHeader, options, pointIndex, batchPointCount);
55
+ }
56
+ }
57
+ async function getCOPCPointData(arrayBuffer, header) {
58
+ if (isCompressedLAS(arrayBuffer)) {
59
+ return await import_copc.Las.PointData.decompressFile(new Uint8Array(arrayBuffer));
60
+ }
61
+ const byteOffset = header.pointDataOffset;
62
+ const byteLength = header.pointCount * header.pointDataRecordLength;
63
+ return new Uint8Array(arrayBuffer, byteOffset, byteLength);
64
+ }
65
+ function getLASHeader(arrayBuffer, header, totalToRead) {
66
+ return {
67
+ pointsOffset: header.pointDataOffset,
68
+ pointsFormatId: header.pointDataRecordFormat,
69
+ pointsStructSize: header.pointDataRecordLength,
70
+ pointsCount: header.pointCount,
71
+ scale: header.scale,
72
+ offset: header.offset,
73
+ maxs: header.max,
74
+ mins: header.min,
75
+ totalToRead,
76
+ totalRead: 0,
77
+ hasColor: hasCOPCColor(header.pointDataRecordFormat),
78
+ versionAsString: `${header.majorVersion}.${header.minorVersion}`,
79
+ isCompressed: isCompressedLAS(arrayBuffer)
80
+ };
81
+ }
82
+ function isCompressedLAS(arrayBuffer) {
83
+ const rawPointFormat = new DataView(arrayBuffer).getUint8(104);
84
+ return Boolean(rawPointFormat & 192);
85
+ }
86
+ function hasCOPCColor(pointDataRecordFormat) {
87
+ return pointDataRecordFormat === 2 || pointDataRecordFormat === 3 || pointDataRecordFormat >= 7;
88
+ }
89
+ function getLASMeshBatch(view, lasHeader, options, pointOffset, batchPointCount) {
90
+ const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
91
+ const positions = new PositionsType(batchPointCount * 3);
92
+ const colors = lasHeader.hasColor ? new Uint8Array(batchPointCount * 4) : null;
93
+ const intensities = new Uint16Array(batchPointCount);
94
+ const classifications = new Uint8Array(batchPointCount);
95
+ const getX = view.getter("X");
96
+ const getY = view.getter("Y");
97
+ const getZ = view.getter("Z");
98
+ const getIntensity = view.getter("Intensity");
99
+ const getClassification = view.getter("Classification");
100
+ const getRed = colors ? view.getter("Red") : null;
101
+ const getGreen = colors ? view.getter("Green") : null;
102
+ const getBlue = colors ? view.getter("Blue") : null;
103
+ const twoByteColor = detectTwoByteColors(view, pointOffset, batchPointCount, options);
104
+ for (let i = 0; i < batchPointCount; i++) {
105
+ const sourcePointIndex = pointOffset + i;
106
+ positions[i * 3] = getX(sourcePointIndex);
107
+ positions[i * 3 + 1] = getY(sourcePointIndex);
108
+ positions[i * 3 + 2] = getZ(sourcePointIndex);
109
+ intensities[i] = getIntensity(sourcePointIndex);
110
+ classifications[i] = getClassification(sourcePointIndex);
111
+ if (colors && getRed && getGreen && getBlue) {
112
+ const red = getRed(sourcePointIndex);
113
+ const green = getGreen(sourcePointIndex);
114
+ const blue = getBlue(sourcePointIndex);
115
+ colors[i * 4] = twoByteColor ? red / 256 : red;
116
+ colors[i * 4 + 1] = twoByteColor ? green / 256 : green;
117
+ colors[i * 4 + 2] = twoByteColor ? blue / 256 : blue;
118
+ colors[i * 4 + 3] = 255;
119
+ }
120
+ }
121
+ const attributes = {
122
+ POSITION: { value: positions, size: 3 },
123
+ intensity: { value: intensities, size: 1 },
124
+ classification: { value: classifications, size: 1 }
125
+ };
126
+ if (colors) {
127
+ attributes.COLOR_0 = { value: colors, size: 4 };
128
+ }
129
+ const batchHeader = { ...lasHeader };
130
+ const lasMesh = {
131
+ loader: "las",
132
+ loaderData: batchHeader,
133
+ schema: { fields: [], metadata: {} },
134
+ header: {
135
+ vertexCount: batchPointCount,
136
+ boundingBox: (0, import_schema_utils.getMeshBoundingBox)(attributes)
137
+ },
138
+ attributes,
139
+ topology: "point-list",
140
+ mode: 0,
141
+ progress: lasHeader.totalRead / lasHeader.totalToRead
142
+ };
143
+ lasMesh.schema = (0, import_get_las_schema.getLASSchema)(batchHeader, lasMesh.attributes);
144
+ return lasMesh;
145
+ }
146
+ function detectTwoByteColors(view, pointOffset, batchPointCount, options) {
147
+ switch (options.las?.colorDepth) {
148
+ case 8:
149
+ return false;
150
+ case 16:
151
+ return true;
152
+ case "auto": {
153
+ const getRed = view.getter("Red");
154
+ const getGreen = view.getter("Green");
155
+ const getBlue = view.getter("Blue");
156
+ for (let i = 0; i < batchPointCount; i++) {
157
+ const sourcePointIndex = pointOffset + i;
158
+ if (getRed(sourcePointIndex) > 255 || getGreen(sourcePointIndex) > 255 || getBlue(sourcePointIndex) > 255) {
159
+ return true;
160
+ }
161
+ }
162
+ return false;
163
+ }
164
+ default:
165
+ return false;
166
+ }
167
+ }
168
+ function getBatchSize(options) {
169
+ const batchSize = options.batchSize ?? options.core?.batchSize;
170
+ return typeof batchSize === "number" ? batchSize : DEFAULT_BATCH_SIZE;
171
+ }
172
+ // Annotate the CommonJS export names for ESM import in node:
173
+ 0 && (module.exports = {
174
+ parseCOPCLAS,
175
+ parseCOPCLASInBatches
176
+ });
177
+ //# sourceMappingURL=parse-las.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/las/lib/copc/parse-las.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {MeshAttributes} from '@loaders.gl/core/schema';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/core/loader-utils';\nimport {getMeshBoundingBox} from '@loaders.gl/core/schema-utils';\nimport {Las} from 'copc';\nimport type {LASLoaderOptions} from '../../las-loader-types';\nimport {getLASSchema} from '../get-las-schema';\nimport type {LASHeader, LASMesh} from '../las-types';\n\nconst DEFAULT_BATCH_SIZE = 1000 * 100;\n\n/**\n * Parse LAS/LAZ data using the laz-perf decoder shipped by the COPC package.\n * @param arrayBuffer Complete LAS/LAZ file data\n * @param options LAS loader options\n * @returns Parsed LAS mesh\n */\nexport async function parseCOPCLAS(\n arrayBuffer: ArrayBuffer,\n options: LASLoaderOptions = {}\n): Promise<LASMesh> {\n const header = Las.Header.parse(new Uint8Array(arrayBuffer));\n const batches = parseCOPCLASBatches(arrayBuffer, options, header.pointCount)[\n Symbol.asyncIterator\n ]();\n const firstBatch = await batches.next();\n\n if (!firstBatch.value) {\n throw new Error('LAS file contained no points');\n }\n return firstBatch.value;\n}\n\n/**\n * Parse LAS/LAZ data in decoded point batches using the COPC package.\n * @param arrayBufferIterator Iterator yielding LAS/LAZ binary chunks\n * @param options LAS loader options\n * @returns Async iterable of mesh batches\n */\nexport async function* parseCOPCLASInBatches(\n arrayBufferIterator:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options: LASLoaderOptions = {}\n): AsyncIterable<LASMesh> {\n const arrayBuffer = await concatenateArrayBuffersAsync(arrayBufferIterator);\n yield* parseCOPCLASBatches(arrayBuffer, options, getBatchSize(options));\n}\n\n/**\n * Parse LAS/LAZ data in decoded point batches using the COPC package.\n * @param arrayBuffer Complete LAS/LAZ file data\n * @param options LAS loader options\n * @param batchSize Number of returned points per batch\n * @returns Async iterable of mesh batches\n */\nasync function* parseCOPCLASBatches(\n arrayBuffer: ArrayBuffer,\n options: LASLoaderOptions,\n batchSize: number\n): AsyncIterable<LASMesh> {\n const header = Las.Header.parse(new Uint8Array(arrayBuffer));\n const pointData = await getCOPCPointData(arrayBuffer, header);\n const view = Las.View.create(pointData, header);\n const totalToRead = view.pointCount;\n const lasHeader = getLASHeader(arrayBuffer, header, totalToRead);\n\n for (let pointIndex = 0; pointIndex < totalToRead; pointIndex += batchSize) {\n const batchPointCount = Math.min(batchSize, totalToRead - pointIndex);\n lasHeader.totalRead = pointIndex + batchPointCount;\n yield getLASMeshBatch(view, lasHeader, options, pointIndex, batchPointCount);\n }\n}\n\n/**\n * Decompress or slice LAS point records for the COPC package parser.\n * @param arrayBuffer Complete LAS/LAZ file data\n * @param header COPC package LAS header\n * @returns Uncompressed point records\n */\nasync function getCOPCPointData(arrayBuffer: ArrayBuffer, header: any): Promise<Uint8Array> {\n if (isCompressedLAS(arrayBuffer)) {\n return await Las.PointData.decompressFile(new Uint8Array(arrayBuffer));\n }\n\n const byteOffset = header.pointDataOffset;\n const byteLength = header.pointCount * header.pointDataRecordLength;\n return new Uint8Array(arrayBuffer, byteOffset, byteLength);\n}\n\n/**\n * Convert a COPC package header into loaders.gl LAS header metadata.\n * @param arrayBuffer Complete LAS/LAZ file data\n * @param header COPC package LAS header\n * @param totalToRead Number of output points\n * @returns loaders.gl LAS header\n */\nfunction getLASHeader(arrayBuffer: ArrayBuffer, header: any, totalToRead: number): LASHeader {\n return {\n pointsOffset: header.pointDataOffset,\n pointsFormatId: header.pointDataRecordFormat,\n pointsStructSize: header.pointDataRecordLength,\n pointsCount: header.pointCount,\n scale: header.scale,\n offset: header.offset,\n maxs: header.max,\n mins: header.min,\n totalToRead,\n totalRead: 0,\n hasColor: hasCOPCColor(header.pointDataRecordFormat),\n versionAsString: `${header.majorVersion}.${header.minorVersion}`,\n isCompressed: isCompressedLAS(arrayBuffer)\n };\n}\n\n/**\n * Return true when the LAS point format includes compressed LAZ flags.\n * @param arrayBuffer Complete LAS/LAZ file data\n * @returns Whether the file uses LAZ compression\n */\nfunction isCompressedLAS(arrayBuffer: ArrayBuffer): boolean {\n const rawPointFormat = new DataView(arrayBuffer).getUint8(104);\n return Boolean(rawPointFormat & 0xc0);\n}\n\n/**\n * Return true when a COPC-supported LAS point format includes RGB color.\n * @param pointDataRecordFormat LAS point data record format\n * @returns Whether the point format has color\n */\nfunction hasCOPCColor(pointDataRecordFormat: number): boolean {\n return pointDataRecordFormat === 2 || pointDataRecordFormat === 3 || pointDataRecordFormat >= 7;\n}\n\n/**\n * Build one LAS mesh batch from a COPC package point view.\n * @param view COPC package point view\n * @param lasHeader LAS header metadata\n * @param options LAS loader options\n * @param pointOffset Output point offset\n * @param batchPointCount Number of points in this batch\n * @returns LAS mesh batch\n */\nfunction getLASMeshBatch(\n view: any,\n lasHeader: LASHeader,\n options: LASLoaderOptions,\n pointOffset: number,\n batchPointCount: number\n): LASMesh {\n const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;\n const positions = new PositionsType(batchPointCount * 3);\n const colors = lasHeader.hasColor ? new Uint8Array(batchPointCount * 4) : null;\n const intensities = new Uint16Array(batchPointCount);\n const classifications = new Uint8Array(batchPointCount);\n const getX = view.getter('X');\n const getY = view.getter('Y');\n const getZ = view.getter('Z');\n const getIntensity = view.getter('Intensity');\n const getClassification = view.getter('Classification');\n const getRed = colors ? view.getter('Red') : null;\n const getGreen = colors ? view.getter('Green') : null;\n const getBlue = colors ? view.getter('Blue') : null;\n const twoByteColor = detectTwoByteColors(view, pointOffset, batchPointCount, options);\n\n for (let i = 0; i < batchPointCount; i++) {\n const sourcePointIndex = pointOffset + i;\n positions[i * 3] = getX(sourcePointIndex);\n positions[i * 3 + 1] = getY(sourcePointIndex);\n positions[i * 3 + 2] = getZ(sourcePointIndex);\n intensities[i] = getIntensity(sourcePointIndex);\n classifications[i] = getClassification(sourcePointIndex);\n\n if (colors && getRed && getGreen && getBlue) {\n const red = getRed(sourcePointIndex);\n const green = getGreen(sourcePointIndex);\n const blue = getBlue(sourcePointIndex);\n colors[i * 4] = twoByteColor ? red / 256 : red;\n colors[i * 4 + 1] = twoByteColor ? green / 256 : green;\n colors[i * 4 + 2] = twoByteColor ? blue / 256 : blue;\n colors[i * 4 + 3] = 255;\n }\n }\n\n const attributes: MeshAttributes = {\n POSITION: {value: positions, size: 3},\n intensity: {value: intensities, size: 1},\n classification: {value: classifications, size: 1}\n };\n\n if (colors) {\n attributes.COLOR_0 = {value: colors, size: 4};\n }\n\n const batchHeader = {...lasHeader};\n const lasMesh: LASMesh = {\n loader: 'las',\n loaderData: batchHeader,\n schema: {fields: [], metadata: {}},\n header: {\n vertexCount: batchPointCount,\n boundingBox: getMeshBoundingBox(attributes)\n },\n attributes,\n topology: 'point-list',\n mode: 0,\n progress: lasHeader.totalRead / lasHeader.totalToRead\n } as LASMesh & {progress: number};\n\n lasMesh.schema = getLASSchema(batchHeader, lasMesh.attributes);\n return lasMesh;\n}\n\n/**\n * Detect whether color values use 16-bit LAS color range.\n * @param view COPC package point view\n * @param pointOffset Output point offset\n * @param batchPointCount Number of points in this batch\n * @param options LAS loader options\n * @returns Whether color values should be downscaled from 16-bit to 8-bit\n */\nfunction detectTwoByteColors(\n view: any,\n pointOffset: number,\n batchPointCount: number,\n options: LASLoaderOptions\n): boolean {\n switch (options.las?.colorDepth) {\n case 8:\n return false;\n case 16:\n return true;\n case 'auto': {\n const getRed = view.getter('Red');\n const getGreen = view.getter('Green');\n const getBlue = view.getter('Blue');\n for (let i = 0; i < batchPointCount; i++) {\n const sourcePointIndex = pointOffset + i;\n if (\n getRed(sourcePointIndex) > 255 ||\n getGreen(sourcePointIndex) > 255 ||\n getBlue(sourcePointIndex) > 255\n ) {\n return true;\n }\n }\n return false;\n }\n default:\n return false;\n }\n}\n\n/**\n * Get the requested LAS point batch size.\n * @param options LAS loader options\n * @returns Point count per decoded batch\n */\nfunction getBatchSize(options: LASLoaderOptions): number {\n const batchSize = options.batchSize ?? options.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import type { LASLoaderOptions } from "../../las-loader-types.js";
2
+ import type { LASMesh } from "../las-types.js";
3
+ /**
4
+ * Parse LAS/LAZ data using the laz-perf decoder shipped by the COPC package.
5
+ * @param arrayBuffer Complete LAS/LAZ file data
6
+ * @param options LAS loader options
7
+ * @returns Parsed LAS mesh
8
+ */
9
+ export declare function parseCOPCLAS(arrayBuffer: ArrayBuffer, options?: LASLoaderOptions): Promise<LASMesh>;
10
+ /**
11
+ * Parse LAS/LAZ data in decoded point batches using the COPC package.
12
+ * @param arrayBufferIterator Iterator yielding LAS/LAZ binary chunks
13
+ * @param options LAS loader options
14
+ * @returns Async iterable of mesh batches
15
+ */
16
+ export declare function parseCOPCLASInBatches(arrayBufferIterator: AsyncIterable<ArrayBufferLike | ArrayBufferView> | Iterable<ArrayBufferLike | ArrayBufferView>, options?: LASLoaderOptions): AsyncIterable<LASMesh>;
17
+ //# sourceMappingURL=parse-las.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-las.d.ts","sourceRoot":"","sources":["../../../../src/las/lib/copc/parse-las.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,gBAAgB,EAAC,kCAA+B;AAE7D,OAAO,KAAK,EAAY,OAAO,EAAC,wBAAqB;AAIrD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;GAKG;AACH,wBAAuB,qBAAqB,CAC1C,mBAAmB,EACf,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,GAChD,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,EAC/C,OAAO,GAAE,gBAAqB,GAC7B,aAAa,CAAC,OAAO,CAAC,CAGxB"}