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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/LAS-README.md +12 -0
  2. package/LICENSE +24 -0
  3. package/PCD-README.md +12 -0
  4. package/PLY-README.md +38 -0
  5. package/README.md +11 -2
  6. package/THIRD-PARTY-NOTICES.md +27 -0
  7. package/dist/dist.dev.js +30165 -0
  8. package/dist/dist.min.js +54 -0
  9. package/dist/index.cjs +61 -0
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/las/bundled.cjs +72 -0
  16. package/dist/las/bundled.cjs.map +7 -0
  17. package/dist/las/bundled.d.ts +12 -0
  18. package/dist/las/bundled.d.ts.map +1 -0
  19. package/dist/las/bundled.js +12 -0
  20. package/dist/las/bundled.js.map +1 -0
  21. package/dist/las/index.cjs +78 -0
  22. package/dist/las/index.cjs.map +7 -0
  23. package/dist/las/index.d.ts +17 -0
  24. package/dist/las/index.d.ts.map +1 -0
  25. package/dist/las/index.js +15 -0
  26. package/dist/las/index.js.map +1 -0
  27. package/dist/las/las-copc-loader-types.cjs +49 -0
  28. package/dist/las/las-copc-loader-types.cjs.map +7 -0
  29. package/dist/las/las-copc-loader-types.d.ts +63 -0
  30. package/dist/las/las-copc-loader-types.d.ts.map +1 -0
  31. package/dist/las/las-copc-loader-types.js +14 -0
  32. package/dist/las/las-copc-loader-types.js.map +1 -0
  33. package/dist/las/las-copc-loader.cjs +57 -0
  34. package/dist/las/las-copc-loader.cjs.map +7 -0
  35. package/dist/las/las-copc-loader.d.ts +37 -0
  36. package/dist/las/las-copc-loader.d.ts.map +1 -0
  37. package/dist/las/las-copc-loader.js +40 -0
  38. package/dist/las/las-copc-loader.js.map +1 -0
  39. package/dist/las/las-format.cjs +44 -0
  40. package/dist/las/las-format.cjs.map +7 -0
  41. package/dist/las/las-format.d.ts +16 -0
  42. package/dist/las/las-format.d.ts.map +1 -0
  43. package/dist/las/las-format.js +19 -0
  44. package/dist/las/las-format.js.map +1 -0
  45. package/dist/las/las-loader-shared.cjs +82 -0
  46. package/dist/las/las-loader-shared.cjs.map +7 -0
  47. package/dist/las/las-loader-shared.d.ts +66 -0
  48. package/dist/las/las-loader-shared.d.ts.map +1 -0
  49. package/dist/las/las-loader-shared.js +58 -0
  50. package/dist/las/las-loader-shared.js.map +1 -0
  51. package/dist/las/las-loader-types.cjs +54 -0
  52. package/dist/las/las-loader-types.cjs.map +7 -0
  53. package/dist/las/las-loader-types.d.ts +104 -0
  54. package/dist/las/las-loader-types.d.ts.map +1 -0
  55. package/dist/las/las-loader-types.js +19 -0
  56. package/dist/las/las-loader-types.js.map +1 -0
  57. package/dist/las/las-loader.cjs +80 -0
  58. package/dist/las/las-loader.cjs.map +7 -0
  59. package/dist/las/las-loader.d.ts +45 -0
  60. package/dist/las/las-loader.d.ts.map +1 -0
  61. package/dist/las/las-loader.js +58 -0
  62. package/dist/las/las-loader.js.map +1 -0
  63. package/dist/las/las-writer.cjs +1054 -0
  64. package/dist/las/las-writer.cjs.map +7 -0
  65. package/dist/las/las-writer.d.ts +69 -0
  66. package/dist/las/las-writer.d.ts.map +1 -0
  67. package/dist/las/las-writer.js +994 -0
  68. package/dist/las/las-writer.js.map +1 -0
  69. package/dist/las/laz-rs-loader-types.cjs +49 -0
  70. package/dist/las/laz-rs-loader-types.cjs.map +7 -0
  71. package/dist/las/laz-rs-loader-types.d.ts +65 -0
  72. package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
  73. package/dist/las/laz-rs-loader-types.js +16 -0
  74. package/dist/las/laz-rs-loader-types.js.map +1 -0
  75. package/dist/las/laz-rs-loader.cjs +272 -0
  76. package/dist/las/laz-rs-loader.cjs.map +7 -0
  77. package/dist/las/laz-rs-loader.d.ts +37 -0
  78. package/dist/las/laz-rs-loader.d.ts.map +1 -0
  79. package/dist/las/laz-rs-loader.js +38 -0
  80. package/dist/las/laz-rs-loader.js.map +1 -0
  81. package/dist/las/lazperf-loader-types.cjs +49 -0
  82. package/dist/las/lazperf-loader-types.cjs.map +7 -0
  83. package/dist/las/lazperf-loader-types.d.ts +67 -0
  84. package/dist/las/lazperf-loader-types.d.ts.map +1 -0
  85. package/dist/las/lazperf-loader-types.js +17 -0
  86. package/dist/las/lazperf-loader-types.js.map +1 -0
  87. package/dist/las/lazperf-loader.cjs +60 -0
  88. package/dist/las/lazperf-loader.cjs.map +7 -0
  89. package/dist/las/lazperf-loader.d.ts +39 -0
  90. package/dist/las/lazperf-loader.d.ts.map +1 -0
  91. package/dist/las/lazperf-loader.js +44 -0
  92. package/dist/las/lazperf-loader.js.map +1 -0
  93. package/dist/las/lib/copc/parse-las.cjs +177 -0
  94. package/dist/las/lib/copc/parse-las.cjs.map +7 -0
  95. package/dist/las/lib/copc/parse-las.d.ts +17 -0
  96. package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
  97. package/dist/las/lib/copc/parse-las.js +215 -0
  98. package/dist/las/lib/copc/parse-las.js.map +1 -0
  99. package/dist/las/lib/get-las-schema.cjs +62 -0
  100. package/dist/las/lib/get-las-schema.cjs.map +7 -0
  101. package/dist/las/lib/get-las-schema.d.ts +16 -0
  102. package/dist/las/lib/get-las-schema.d.ts.map +1 -0
  103. package/dist/las/lib/get-las-schema.js +46 -0
  104. package/dist/las/lib/get-las-schema.js.map +1 -0
  105. package/dist/las/lib/las-compatibility.cjs +110 -0
  106. package/dist/las/lib/las-compatibility.cjs.map +7 -0
  107. package/dist/las/lib/las-compatibility.d.ts +40 -0
  108. package/dist/las/lib/las-compatibility.d.ts.map +1 -0
  109. package/dist/las/lib/las-compatibility.js +115 -0
  110. package/dist/las/lib/las-compatibility.js.map +1 -0
  111. package/dist/las/lib/las-extra-bytes.cjs +223 -0
  112. package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
  113. package/dist/las/lib/las-extra-bytes.d.ts +35 -0
  114. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
  115. package/dist/las/lib/las-extra-bytes.js +195 -0
  116. package/dist/las/lib/las-extra-bytes.js.map +1 -0
  117. package/dist/las/lib/las-types.cjs +19 -0
  118. package/dist/las/lib/las-types.cjs.map +7 -0
  119. package/dist/las/lib/las-types.d.ts +194 -0
  120. package/dist/las/lib/las-types.d.ts.map +1 -0
  121. package/dist/las/lib/las-types.js +5 -0
  122. package/dist/las/lib/las-types.js.map +1 -0
  123. package/dist/las/lib/las-waveform.cjs +196 -0
  124. package/dist/las/lib/las-waveform.cjs.map +7 -0
  125. package/dist/las/lib/las-waveform.d.ts +89 -0
  126. package/dist/las/lib/las-waveform.d.ts.map +1 -0
  127. package/dist/las/lib/las-waveform.js +193 -0
  128. package/dist/las/lib/las-waveform.js.map +1 -0
  129. package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
  130. package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
  131. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
  132. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
  133. package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
  134. package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
  135. package/dist/las/lib/laz-perf/parse-las.cjs +270 -0
  136. package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
  137. package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
  138. package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
  139. package/dist/las/lib/laz-perf/parse-las.js +307 -0
  140. package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
  141. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
  142. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
  143. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
  144. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
  145. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
  146. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
  147. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +270 -0
  148. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
  149. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
  150. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
  151. package/dist/las/lib/laz-rs-wasm/parse-las.js +307 -0
  152. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
  153. package/dist/las/lib/typescript/parse-las.cjs +2767 -0
  154. package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
  155. package/dist/las/lib/typescript/parse-las.d.ts +39 -0
  156. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
  157. package/dist/las/lib/typescript/parse-las.js +2607 -0
  158. package/dist/las/lib/typescript/parse-las.js.map +1 -0
  159. package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
  160. package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
  161. package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
  162. package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
  163. package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
  164. package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
  165. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
  166. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
  167. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
  168. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
  169. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  170. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  171. package/dist/las/unbundled.cjs +71 -0
  172. package/dist/las/unbundled.cjs.map +7 -0
  173. package/dist/las/unbundled.d.ts +11 -0
  174. package/dist/las/unbundled.d.ts.map +1 -0
  175. package/dist/las/unbundled.js +11 -0
  176. package/dist/las/unbundled.js.map +1 -0
  177. package/dist/las/workers/las-worker.cjs +23 -0
  178. package/dist/las/workers/las-worker.cjs.map +7 -0
  179. package/dist/las/workers/las-worker.d.ts +2 -0
  180. package/dist/las/workers/las-worker.d.ts.map +1 -0
  181. package/dist/las/workers/las-worker.js +23 -0
  182. package/dist/las/workers/las-worker.js.map +1 -0
  183. package/dist/las-copc-loader-types.cjs +51 -0
  184. package/dist/las-copc-loader-types.cjs.map +7 -0
  185. package/dist/las-copc-loader-types.d.ts +2 -0
  186. package/dist/las-copc-loader-types.d.ts.map +1 -0
  187. package/dist/las-copc-loader-types.js +2 -0
  188. package/dist/las-copc-loader-types.js.map +1 -0
  189. package/dist/las-copc-loader.cjs +59 -0
  190. package/dist/las-copc-loader.cjs.map +7 -0
  191. package/dist/las-copc-loader.d.ts +2 -0
  192. package/dist/las-copc-loader.d.ts.map +1 -0
  193. package/dist/las-copc-loader.js +2 -0
  194. package/dist/las-copc-loader.js.map +1 -0
  195. package/dist/las-loader-types.cjs +56 -0
  196. package/dist/las-loader-types.cjs.map +7 -0
  197. package/dist/las-loader-types.d.ts +2 -0
  198. package/dist/las-loader-types.d.ts.map +1 -0
  199. package/dist/las-loader-types.js +2 -0
  200. package/dist/las-loader-types.js.map +1 -0
  201. package/dist/las-loader.cjs +82 -0
  202. package/dist/las-loader.cjs.map +7 -0
  203. package/dist/las-loader.d.ts +2 -0
  204. package/dist/las-loader.d.ts.map +1 -0
  205. package/dist/las-loader.js +2 -0
  206. package/dist/las-loader.js.map +1 -0
  207. package/dist/las-worker.js +23169 -0
  208. package/dist/las-writer.cjs +1056 -0
  209. package/dist/las-writer.cjs.map +7 -0
  210. package/dist/las-writer.d.ts +2 -0
  211. package/dist/las-writer.d.ts.map +1 -0
  212. package/dist/las-writer.js +2 -0
  213. package/dist/las-writer.js.map +1 -0
  214. package/dist/laz-rs-loader-types.cjs +51 -0
  215. package/dist/laz-rs-loader-types.cjs.map +7 -0
  216. package/dist/laz-rs-loader-types.d.ts +2 -0
  217. package/dist/laz-rs-loader-types.d.ts.map +1 -0
  218. package/dist/laz-rs-loader-types.js +2 -0
  219. package/dist/laz-rs-loader-types.js.map +1 -0
  220. package/dist/laz-rs-loader.cjs +274 -0
  221. package/dist/laz-rs-loader.cjs.map +7 -0
  222. package/dist/laz-rs-loader.d.ts +2 -0
  223. package/dist/laz-rs-loader.d.ts.map +1 -0
  224. package/dist/laz-rs-loader.js +2 -0
  225. package/dist/laz-rs-loader.js.map +1 -0
  226. package/dist/lazperf-loader-types.cjs +51 -0
  227. package/dist/lazperf-loader-types.cjs.map +7 -0
  228. package/dist/lazperf-loader-types.d.ts +2 -0
  229. package/dist/lazperf-loader-types.d.ts.map +1 -0
  230. package/dist/lazperf-loader-types.js +2 -0
  231. package/dist/lazperf-loader-types.js.map +1 -0
  232. package/dist/lazperf-loader.cjs +62 -0
  233. package/dist/lazperf-loader.cjs.map +7 -0
  234. package/dist/lazperf-loader.d.ts +2 -0
  235. package/dist/lazperf-loader.d.ts.map +1 -0
  236. package/dist/lazperf-loader.js +2 -0
  237. package/dist/lazperf-loader.js.map +1 -0
  238. package/dist/pcd/bundled.cjs +33 -0
  239. package/dist/pcd/bundled.cjs.map +7 -0
  240. package/dist/pcd/bundled.d.ts +3 -0
  241. package/dist/pcd/bundled.d.ts.map +1 -0
  242. package/dist/pcd/bundled.js +5 -0
  243. package/dist/pcd/bundled.js.map +1 -0
  244. package/dist/pcd/index.cjs +40 -0
  245. package/dist/pcd/index.cjs.map +7 -0
  246. package/dist/pcd/index.d.ts +8 -0
  247. package/dist/pcd/index.d.ts.map +1 -0
  248. package/dist/pcd/index.js +10 -0
  249. package/dist/pcd/index.js.map +1 -0
  250. package/dist/pcd/lib/decompress-lzf.cjs +80 -0
  251. package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
  252. package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
  253. package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
  254. package/dist/pcd/lib/decompress-lzf.js +62 -0
  255. package/dist/pcd/lib/decompress-lzf.js.map +1 -0
  256. package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
  257. package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
  258. package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
  259. package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
  260. package/dist/pcd/lib/get-pcd-schema.js +53 -0
  261. package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
  262. package/dist/pcd/lib/parse-pcd.cjs +354 -0
  263. package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
  264. package/dist/pcd/lib/parse-pcd.d.ts +20 -0
  265. package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
  266. package/dist/pcd/lib/parse-pcd.js +341 -0
  267. package/dist/pcd/lib/parse-pcd.js.map +1 -0
  268. package/dist/pcd/lib/pcd-types.cjs +19 -0
  269. package/dist/pcd/lib/pcd-types.cjs.map +7 -0
  270. package/dist/pcd/lib/pcd-types.d.ts +31 -0
  271. package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
  272. package/dist/pcd/lib/pcd-types.js +5 -0
  273. package/dist/pcd/lib/pcd-types.js.map +1 -0
  274. package/dist/pcd/pcd-format.cjs +42 -0
  275. package/dist/pcd/pcd-format.cjs.map +7 -0
  276. package/dist/pcd/pcd-format.d.ts +16 -0
  277. package/dist/pcd/pcd-format.d.ts.map +1 -0
  278. package/dist/pcd/pcd-format.js +19 -0
  279. package/dist/pcd/pcd-format.js.map +1 -0
  280. package/dist/pcd/pcd-loader-types.cjs +64 -0
  281. package/dist/pcd/pcd-loader-types.cjs.map +7 -0
  282. package/dist/pcd/pcd-loader-types.d.ts +105 -0
  283. package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
  284. package/dist/pcd/pcd-loader-types.js +35 -0
  285. package/dist/pcd/pcd-loader-types.js.map +1 -0
  286. package/dist/pcd/pcd-loader.cjs +144 -0
  287. package/dist/pcd/pcd-loader.cjs.map +7 -0
  288. package/dist/pcd/pcd-loader.d.ts +44 -0
  289. package/dist/pcd/pcd-loader.d.ts.map +1 -0
  290. package/dist/pcd/pcd-loader.js +128 -0
  291. package/dist/pcd/pcd-loader.js.map +1 -0
  292. package/dist/pcd/pcd-writer.cjs +134 -0
  293. package/dist/pcd/pcd-writer.cjs.map +7 -0
  294. package/dist/pcd/pcd-writer.d.ts +37 -0
  295. package/dist/pcd/pcd-writer.d.ts.map +1 -0
  296. package/dist/pcd/pcd-writer.js +115 -0
  297. package/dist/pcd/pcd-writer.js.map +1 -0
  298. package/dist/pcd/unbundled.cjs +33 -0
  299. package/dist/pcd/unbundled.cjs.map +7 -0
  300. package/dist/pcd/unbundled.d.ts +3 -0
  301. package/dist/pcd/unbundled.d.ts.map +1 -0
  302. package/dist/pcd/unbundled.js +5 -0
  303. package/dist/pcd/unbundled.js.map +1 -0
  304. package/dist/pcd/workers/pcd-worker.cjs +23 -0
  305. package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
  306. package/dist/pcd/workers/pcd-worker.d.ts +2 -0
  307. package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
  308. package/dist/pcd/workers/pcd-worker.js +23 -0
  309. package/dist/pcd/workers/pcd-worker.js.map +1 -0
  310. package/dist/pcd-loader-types.cjs +66 -0
  311. package/dist/pcd-loader-types.cjs.map +7 -0
  312. package/dist/pcd-loader-types.d.ts +2 -0
  313. package/dist/pcd-loader-types.d.ts.map +1 -0
  314. package/dist/pcd-loader-types.js +2 -0
  315. package/dist/pcd-loader-types.js.map +1 -0
  316. package/dist/pcd-loader.cjs +146 -0
  317. package/dist/pcd-loader.cjs.map +7 -0
  318. package/dist/pcd-loader.d.ts +2 -0
  319. package/dist/pcd-loader.d.ts.map +1 -0
  320. package/dist/pcd-loader.js +2 -0
  321. package/dist/pcd-loader.js.map +1 -0
  322. package/dist/pcd-worker.js +17655 -0
  323. package/dist/pcd-writer.cjs +136 -0
  324. package/dist/pcd-writer.cjs.map +7 -0
  325. package/dist/pcd-writer.d.ts +2 -0
  326. package/dist/pcd-writer.d.ts.map +1 -0
  327. package/dist/pcd-writer.js +2 -0
  328. package/dist/pcd-writer.js.map +1 -0
  329. package/dist/ply/bundled.cjs +33 -0
  330. package/dist/ply/bundled.cjs.map +7 -0
  331. package/dist/ply/bundled.d.ts +3 -0
  332. package/dist/ply/bundled.d.ts.map +1 -0
  333. package/dist/ply/bundled.js +5 -0
  334. package/dist/ply/bundled.js.map +1 -0
  335. package/dist/ply/index.cjs +40 -0
  336. package/dist/ply/index.cjs.map +7 -0
  337. package/dist/ply/index.d.ts +8 -0
  338. package/dist/ply/index.d.ts.map +1 -0
  339. package/dist/ply/index.js +11 -0
  340. package/dist/ply/index.js.map +1 -0
  341. package/dist/ply/lib/get-ply-schema.cjs +126 -0
  342. package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
  343. package/dist/ply/lib/get-ply-schema.d.ts +10 -0
  344. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
  345. package/dist/ply/lib/get-ply-schema.js +117 -0
  346. package/dist/ply/lib/get-ply-schema.js.map +1 -0
  347. package/dist/ply/lib/normalize-ply.cjs +96 -0
  348. package/dist/ply/lib/normalize-ply.cjs.map +7 -0
  349. package/dist/ply/lib/normalize-ply.d.ts +8 -0
  350. package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
  351. package/dist/ply/lib/normalize-ply.js +89 -0
  352. package/dist/ply/lib/normalize-ply.js.map +1 -0
  353. package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
  354. package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
  355. package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
  356. package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
  357. package/dist/ply/lib/parse-ply-arrow.js +493 -0
  358. package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
  359. package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
  360. package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
  361. package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
  362. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
  363. package/dist/ply/lib/parse-ply-in-batches.js +625 -0
  364. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
  365. package/dist/ply/lib/parse-ply.cjs +755 -0
  366. package/dist/ply/lib/parse-ply.cjs.map +7 -0
  367. package/dist/ply/lib/parse-ply.d.ts +69 -0
  368. package/dist/ply/lib/parse-ply.d.ts.map +1 -0
  369. package/dist/ply/lib/parse-ply.js +851 -0
  370. package/dist/ply/lib/parse-ply.js.map +1 -0
  371. package/dist/ply/lib/ply-types.cjs +19 -0
  372. package/dist/ply/lib/ply-types.cjs.map +7 -0
  373. package/dist/ply/lib/ply-types.d.ts +37 -0
  374. package/dist/ply/lib/ply-types.d.ts.map +1 -0
  375. package/dist/ply/lib/ply-types.js +2 -0
  376. package/dist/ply/lib/ply-types.js.map +1 -0
  377. package/dist/ply/ply-format.cjs +43 -0
  378. package/dist/ply/ply-format.cjs.map +7 -0
  379. package/dist/ply/ply-format.d.ts +18 -0
  380. package/dist/ply/ply-format.d.ts.map +1 -0
  381. package/dist/ply/ply-format.js +22 -0
  382. package/dist/ply/ply-format.js.map +1 -0
  383. package/dist/ply/ply-loader-types.cjs +65 -0
  384. package/dist/ply/ply-loader-types.cjs.map +7 -0
  385. package/dist/ply/ply-loader-types.d.ts +111 -0
  386. package/dist/ply/ply-loader-types.d.ts.map +1 -0
  387. package/dist/ply/ply-loader-types.js +38 -0
  388. package/dist/ply/ply-loader-types.js.map +1 -0
  389. package/dist/ply/ply-loader.cjs +134 -0
  390. package/dist/ply/ply-loader.cjs.map +7 -0
  391. package/dist/ply/ply-loader.d.ts +44 -0
  392. package/dist/ply/ply-loader.d.ts.map +1 -0
  393. package/dist/ply/ply-loader.js +121 -0
  394. package/dist/ply/ply-loader.js.map +1 -0
  395. package/dist/ply/ply-writer.cjs +175 -0
  396. package/dist/ply/ply-writer.cjs.map +7 -0
  397. package/dist/ply/ply-writer.d.ts +37 -0
  398. package/dist/ply/ply-writer.d.ts.map +1 -0
  399. package/dist/ply/ply-writer.js +140 -0
  400. package/dist/ply/ply-writer.js.map +1 -0
  401. package/dist/ply/unbundled.cjs +33 -0
  402. package/dist/ply/unbundled.cjs.map +7 -0
  403. package/dist/ply/unbundled.d.ts +3 -0
  404. package/dist/ply/unbundled.d.ts.map +1 -0
  405. package/dist/ply/unbundled.js +5 -0
  406. package/dist/ply/unbundled.js.map +1 -0
  407. package/dist/ply/workers/ply-worker.cjs +34 -0
  408. package/dist/ply/workers/ply-worker.cjs.map +7 -0
  409. package/dist/ply/workers/ply-worker.d.ts +2 -0
  410. package/dist/ply/workers/ply-worker.d.ts.map +1 -0
  411. package/dist/ply/workers/ply-worker.js +37 -0
  412. package/dist/ply/workers/ply-worker.js.map +1 -0
  413. package/dist/ply-loader-types.cjs +67 -0
  414. package/dist/ply-loader-types.cjs.map +7 -0
  415. package/dist/ply-loader-types.d.ts +2 -0
  416. package/dist/ply-loader-types.d.ts.map +1 -0
  417. package/dist/ply-loader-types.js +2 -0
  418. package/dist/ply-loader-types.js.map +1 -0
  419. package/dist/ply-loader.cjs +136 -0
  420. package/dist/ply-loader.cjs.map +7 -0
  421. package/dist/ply-loader.d.ts +2 -0
  422. package/dist/ply-loader.d.ts.map +1 -0
  423. package/dist/ply-loader.js +2 -0
  424. package/dist/ply-loader.js.map +1 -0
  425. package/dist/ply-worker.js +19308 -0
  426. package/dist/ply-writer.cjs +177 -0
  427. package/dist/ply-writer.cjs.map +7 -0
  428. package/dist/ply-writer.d.ts +2 -0
  429. package/dist/ply-writer.d.ts.map +1 -0
  430. package/dist/ply-writer.js +2 -0
  431. package/dist/ply-writer.js.map +1 -0
  432. package/package.json +237 -4
  433. package/src/index.ts +19 -0
  434. package/src/las/bundled.ts +39 -0
  435. package/src/las/index.ts +70 -0
  436. package/src/las/las-copc-loader-types.ts +18 -0
  437. package/src/las/las-copc-loader.ts +61 -0
  438. package/src/las/las-format.ts +21 -0
  439. package/src/las/las-loader-shared.ts +124 -0
  440. package/src/las/las-loader-types.ts +27 -0
  441. package/src/las/las-loader.ts +109 -0
  442. package/src/las/las-writer.ts +1473 -0
  443. package/src/las/laz-rs-loader-types.ts +21 -0
  444. package/src/las/laz-rs-loader.ts +53 -0
  445. package/src/las/lazperf-loader-types.ts +22 -0
  446. package/src/las/lazperf-loader.ts +65 -0
  447. package/src/las/lib/LASZIP-LICENSE +202 -0
  448. package/src/las/lib/LASZIP-NOTICE +4 -0
  449. package/src/las/lib/copc/parse-las.ts +265 -0
  450. package/src/las/lib/get-las-schema.ts +50 -0
  451. package/src/las/lib/las-compatibility.ts +178 -0
  452. package/src/las/lib/las-extra-bytes.ts +274 -0
  453. package/src/las/lib/las-types.ts +206 -0
  454. package/src/las/lib/las-waveform.ts +292 -0
  455. package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
  456. package/src/las/lib/laz-perf/parse-las.ts +412 -0
  457. package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
  458. package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
  459. package/src/las/lib/typescript/parse-las.ts +3730 -0
  460. package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
  461. package/src/las/libs/laz-rs-wasm/README.md +5 -0
  462. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
  463. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
  464. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  465. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  466. package/src/las/libs/laz-rs-wasm/package.json +25 -0
  467. package/src/las/unbundled.ts +38 -0
  468. package/src/las/workers/las-worker.ts +24 -0
  469. package/src/las-copc-loader-types.ts +1 -0
  470. package/src/las-copc-loader.ts +1 -0
  471. package/src/las-loader-types.ts +1 -0
  472. package/src/las-loader.ts +1 -0
  473. package/src/las-writer.ts +1 -0
  474. package/src/laz-rs-loader-types.ts +1 -0
  475. package/src/laz-rs-loader.ts +1 -0
  476. package/src/lazperf-loader-types.ts +1 -0
  477. package/src/lazperf-loader.ts +1 -0
  478. package/src/pcd/bundled.ts +9 -0
  479. package/src/pcd/index.ts +13 -0
  480. package/src/pcd/lib/decompress-lzf.ts +68 -0
  481. package/src/pcd/lib/get-pcd-schema.ts +66 -0
  482. package/src/pcd/lib/parse-pcd.ts +474 -0
  483. package/src/pcd/lib/pcd-types.ts +34 -0
  484. package/src/pcd/pcd-format.ts +21 -0
  485. package/src/pcd/pcd-loader-types.ts +53 -0
  486. package/src/pcd/pcd-loader.ts +179 -0
  487. package/src/pcd/pcd-writer.ts +152 -0
  488. package/src/pcd/unbundled.ts +6 -0
  489. package/src/pcd/workers/pcd-worker.ts +24 -0
  490. package/src/pcd-loader-types.ts +1 -0
  491. package/src/pcd-loader.ts +1 -0
  492. package/src/pcd-writer.ts +1 -0
  493. package/src/ply/bundled.ts +9 -0
  494. package/src/ply/index.ts +15 -0
  495. package/src/ply/lib/get-ply-schema.ts +133 -0
  496. package/src/ply/lib/normalize-ply.ts +110 -0
  497. package/src/ply/lib/parse-ply-arrow.ts +676 -0
  498. package/src/ply/lib/parse-ply-in-batches.ts +827 -0
  499. package/src/ply/lib/parse-ply.ts +1081 -0
  500. package/src/ply/lib/ply-types.ts +47 -0
  501. package/src/ply/ply-format.ts +24 -0
  502. package/src/ply/ply-loader-types.ts +61 -0
  503. package/src/ply/ply-loader.ts +185 -0
  504. package/src/ply/ply-writer.ts +215 -0
  505. package/src/ply/unbundled.ts +6 -0
  506. package/src/ply/workers/ply-worker.ts +40 -0
  507. package/src/ply-loader-types.ts +1 -0
  508. package/src/ply-loader.ts +1 -0
  509. package/src/ply-writer.ts +1 -0
  510. package/third-party-licenses/plasio-LICENSE +21 -0
  511. package/third-party-licenses/three-LICENSE +21 -0
@@ -0,0 +1,215 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { concatenateArrayBuffersAsync } from '@loaders.gl/core/loader-utils';
5
+ import { getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
6
+ import { Las } from 'copc';
7
+ import { getLASSchema } from "../get-las-schema.js";
8
+ const DEFAULT_BATCH_SIZE = 1000 * 100;
9
+ /**
10
+ * Parse LAS/LAZ data using the laz-perf decoder shipped by the COPC package.
11
+ * @param arrayBuffer Complete LAS/LAZ file data
12
+ * @param options LAS loader options
13
+ * @returns Parsed LAS mesh
14
+ */
15
+ export async function parseCOPCLAS(arrayBuffer, options = {}) {
16
+ const header = Las.Header.parse(new Uint8Array(arrayBuffer));
17
+ const batches = parseCOPCLASBatches(arrayBuffer, options, header.pointCount)[Symbol.asyncIterator]();
18
+ const firstBatch = await batches.next();
19
+ if (!firstBatch.value) {
20
+ throw new Error('LAS file contained no points');
21
+ }
22
+ return firstBatch.value;
23
+ }
24
+ /**
25
+ * Parse LAS/LAZ data in decoded point batches using the COPC package.
26
+ * @param arrayBufferIterator Iterator yielding LAS/LAZ binary chunks
27
+ * @param options LAS loader options
28
+ * @returns Async iterable of mesh batches
29
+ */
30
+ export async function* parseCOPCLASInBatches(arrayBufferIterator, options = {}) {
31
+ const arrayBuffer = await concatenateArrayBuffersAsync(arrayBufferIterator);
32
+ yield* parseCOPCLASBatches(arrayBuffer, options, getBatchSize(options));
33
+ }
34
+ /**
35
+ * Parse LAS/LAZ data in decoded point batches using the COPC package.
36
+ * @param arrayBuffer Complete LAS/LAZ file data
37
+ * @param options LAS loader options
38
+ * @param batchSize Number of returned points per batch
39
+ * @returns Async iterable of mesh batches
40
+ */
41
+ async function* parseCOPCLASBatches(arrayBuffer, options, batchSize) {
42
+ const header = Las.Header.parse(new Uint8Array(arrayBuffer));
43
+ const pointData = await getCOPCPointData(arrayBuffer, header);
44
+ const view = Las.View.create(pointData, header);
45
+ const totalToRead = view.pointCount;
46
+ const lasHeader = getLASHeader(arrayBuffer, header, totalToRead);
47
+ for (let pointIndex = 0; pointIndex < totalToRead; pointIndex += batchSize) {
48
+ const batchPointCount = Math.min(batchSize, totalToRead - pointIndex);
49
+ lasHeader.totalRead = pointIndex + batchPointCount;
50
+ yield getLASMeshBatch(view, lasHeader, options, pointIndex, batchPointCount);
51
+ }
52
+ }
53
+ /**
54
+ * Decompress or slice LAS point records for the COPC package parser.
55
+ * @param arrayBuffer Complete LAS/LAZ file data
56
+ * @param header COPC package LAS header
57
+ * @returns Uncompressed point records
58
+ */
59
+ async function getCOPCPointData(arrayBuffer, header) {
60
+ if (isCompressedLAS(arrayBuffer)) {
61
+ return await Las.PointData.decompressFile(new Uint8Array(arrayBuffer));
62
+ }
63
+ const byteOffset = header.pointDataOffset;
64
+ const byteLength = header.pointCount * header.pointDataRecordLength;
65
+ return new Uint8Array(arrayBuffer, byteOffset, byteLength);
66
+ }
67
+ /**
68
+ * Convert a COPC package header into loaders.gl LAS header metadata.
69
+ * @param arrayBuffer Complete LAS/LAZ file data
70
+ * @param header COPC package LAS header
71
+ * @param totalToRead Number of output points
72
+ * @returns loaders.gl LAS header
73
+ */
74
+ function getLASHeader(arrayBuffer, header, totalToRead) {
75
+ return {
76
+ pointsOffset: header.pointDataOffset,
77
+ pointsFormatId: header.pointDataRecordFormat,
78
+ pointsStructSize: header.pointDataRecordLength,
79
+ pointsCount: header.pointCount,
80
+ scale: header.scale,
81
+ offset: header.offset,
82
+ maxs: header.max,
83
+ mins: header.min,
84
+ totalToRead,
85
+ totalRead: 0,
86
+ hasColor: hasCOPCColor(header.pointDataRecordFormat),
87
+ versionAsString: `${header.majorVersion}.${header.minorVersion}`,
88
+ isCompressed: isCompressedLAS(arrayBuffer)
89
+ };
90
+ }
91
+ /**
92
+ * Return true when the LAS point format includes compressed LAZ flags.
93
+ * @param arrayBuffer Complete LAS/LAZ file data
94
+ * @returns Whether the file uses LAZ compression
95
+ */
96
+ function isCompressedLAS(arrayBuffer) {
97
+ const rawPointFormat = new DataView(arrayBuffer).getUint8(104);
98
+ return Boolean(rawPointFormat & 0xc0);
99
+ }
100
+ /**
101
+ * Return true when a COPC-supported LAS point format includes RGB color.
102
+ * @param pointDataRecordFormat LAS point data record format
103
+ * @returns Whether the point format has color
104
+ */
105
+ function hasCOPCColor(pointDataRecordFormat) {
106
+ return pointDataRecordFormat === 2 || pointDataRecordFormat === 3 || pointDataRecordFormat >= 7;
107
+ }
108
+ /**
109
+ * Build one LAS mesh batch from a COPC package point view.
110
+ * @param view COPC package point view
111
+ * @param lasHeader LAS header metadata
112
+ * @param options LAS loader options
113
+ * @param pointOffset Output point offset
114
+ * @param batchPointCount Number of points in this batch
115
+ * @returns LAS mesh batch
116
+ */
117
+ function getLASMeshBatch(view, lasHeader, options, pointOffset, batchPointCount) {
118
+ const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
119
+ const positions = new PositionsType(batchPointCount * 3);
120
+ const colors = lasHeader.hasColor ? new Uint8Array(batchPointCount * 4) : null;
121
+ const intensities = new Uint16Array(batchPointCount);
122
+ const classifications = new Uint8Array(batchPointCount);
123
+ const getX = view.getter('X');
124
+ const getY = view.getter('Y');
125
+ const getZ = view.getter('Z');
126
+ const getIntensity = view.getter('Intensity');
127
+ const getClassification = view.getter('Classification');
128
+ const getRed = colors ? view.getter('Red') : null;
129
+ const getGreen = colors ? view.getter('Green') : null;
130
+ const getBlue = colors ? view.getter('Blue') : null;
131
+ const twoByteColor = detectTwoByteColors(view, pointOffset, batchPointCount, options);
132
+ for (let i = 0; i < batchPointCount; i++) {
133
+ const sourcePointIndex = pointOffset + i;
134
+ positions[i * 3] = getX(sourcePointIndex);
135
+ positions[i * 3 + 1] = getY(sourcePointIndex);
136
+ positions[i * 3 + 2] = getZ(sourcePointIndex);
137
+ intensities[i] = getIntensity(sourcePointIndex);
138
+ classifications[i] = getClassification(sourcePointIndex);
139
+ if (colors && getRed && getGreen && getBlue) {
140
+ const red = getRed(sourcePointIndex);
141
+ const green = getGreen(sourcePointIndex);
142
+ const blue = getBlue(sourcePointIndex);
143
+ colors[i * 4] = twoByteColor ? red / 256 : red;
144
+ colors[i * 4 + 1] = twoByteColor ? green / 256 : green;
145
+ colors[i * 4 + 2] = twoByteColor ? blue / 256 : blue;
146
+ colors[i * 4 + 3] = 255;
147
+ }
148
+ }
149
+ const attributes = {
150
+ POSITION: { value: positions, size: 3 },
151
+ intensity: { value: intensities, size: 1 },
152
+ classification: { value: classifications, size: 1 }
153
+ };
154
+ if (colors) {
155
+ attributes.COLOR_0 = { value: colors, size: 4 };
156
+ }
157
+ const batchHeader = { ...lasHeader };
158
+ const lasMesh = {
159
+ loader: 'las',
160
+ loaderData: batchHeader,
161
+ schema: { fields: [], metadata: {} },
162
+ header: {
163
+ vertexCount: batchPointCount,
164
+ boundingBox: getMeshBoundingBox(attributes)
165
+ },
166
+ attributes,
167
+ topology: 'point-list',
168
+ mode: 0,
169
+ progress: lasHeader.totalRead / lasHeader.totalToRead
170
+ };
171
+ lasMesh.schema = getLASSchema(batchHeader, lasMesh.attributes);
172
+ return lasMesh;
173
+ }
174
+ /**
175
+ * Detect whether color values use 16-bit LAS color range.
176
+ * @param view COPC package point view
177
+ * @param pointOffset Output point offset
178
+ * @param batchPointCount Number of points in this batch
179
+ * @param options LAS loader options
180
+ * @returns Whether color values should be downscaled from 16-bit to 8-bit
181
+ */
182
+ function detectTwoByteColors(view, pointOffset, batchPointCount, options) {
183
+ switch (options.las?.colorDepth) {
184
+ case 8:
185
+ return false;
186
+ case 16:
187
+ return true;
188
+ case 'auto': {
189
+ const getRed = view.getter('Red');
190
+ const getGreen = view.getter('Green');
191
+ const getBlue = view.getter('Blue');
192
+ for (let i = 0; i < batchPointCount; i++) {
193
+ const sourcePointIndex = pointOffset + i;
194
+ if (getRed(sourcePointIndex) > 255 ||
195
+ getGreen(sourcePointIndex) > 255 ||
196
+ getBlue(sourcePointIndex) > 255) {
197
+ return true;
198
+ }
199
+ }
200
+ return false;
201
+ }
202
+ default:
203
+ return false;
204
+ }
205
+ }
206
+ /**
207
+ * Get the requested LAS point batch size.
208
+ * @param options LAS loader options
209
+ * @returns Point count per decoded batch
210
+ */
211
+ function getBatchSize(options) {
212
+ const batchSize = options.batchSize ?? options.core?.batchSize;
213
+ return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;
214
+ }
215
+ //# sourceMappingURL=parse-las.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-las.js","sourceRoot":"","sources":["../../../../src/las/lib/copc/parse-las.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/las/lib/get-las-schema.ts
21
+ var get_las_schema_exports = {};
22
+ __export(get_las_schema_exports, {
23
+ getLASSchema: () => getLASSchema,
24
+ makeMetadataFromLasHeader: () => makeMetadataFromLasHeader
25
+ });
26
+ module.exports = __toCommonJS(get_las_schema_exports);
27
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
28
+ function getLASSchema(lasHeader, attributes) {
29
+ const metadataMap = makeMetadataFromLasHeader(lasHeader);
30
+ const schema = (0, import_schema_utils.deduceMeshSchema)(attributes, metadataMap);
31
+ return schema;
32
+ }
33
+ function makeMetadataFromLasHeader(lasHeader) {
34
+ const metadata = {};
35
+ metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
36
+ metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
37
+ metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
38
+ metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
39
+ metadata.las_scale = JSON.stringify(lasHeader.scale);
40
+ metadata.las_offset = JSON.stringify(lasHeader.offset);
41
+ if (lasHeader.maxs !== void 0) {
42
+ metadata.las_maxs = JSON.stringify(lasHeader.maxs);
43
+ }
44
+ if (lasHeader.mins !== void 0) {
45
+ metadata.las_mins = JSON.stringify(lasHeader.mins);
46
+ }
47
+ metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
48
+ metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
49
+ if (lasHeader.versionAsString !== void 0) {
50
+ metadata.las_versionAsString = lasHeader.versionAsString;
51
+ }
52
+ if (lasHeader.isCompressed !== void 0) {
53
+ metadata.las_isCompressed = lasHeader.isCompressed.toString();
54
+ }
55
+ return metadata;
56
+ }
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {
59
+ getLASSchema,
60
+ makeMetadataFromLasHeader
61
+ });
62
+ //# sourceMappingURL=get-las-schema.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/las/lib/get-las-schema.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Schema, MeshAttributes} from '@loaders.gl/core/schema';\nimport {deduceMeshSchema} from '@loaders.gl/core/schema-utils';\nimport type {LASHeader} from './las-types';\n\n/**\n * Gets schema from LAS header\n * @param lasHeader\n * @param metadata\n * @returns Schema\n */\nexport function getLASSchema(lasHeader: LASHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromLasHeader(lasHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by LASHeader properties\n * @param lasHeader\n * @returns\n */\nexport function makeMetadataFromLasHeader(lasHeader: LASHeader): Record<string, string> {\n const metadata: Record<string, string> = {};\n /* eslint-disable camelcase */\n metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);\n metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);\n metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);\n metadata.las_pointsCount = lasHeader.pointsCount.toString(10);\n metadata.las_scale = JSON.stringify(lasHeader.scale);\n metadata.las_offset = JSON.stringify(lasHeader.offset);\n if (lasHeader.maxs !== undefined) {\n metadata.las_maxs = JSON.stringify(lasHeader.maxs);\n }\n if (lasHeader.mins !== undefined) {\n metadata.las_mins = JSON.stringify(lasHeader.mins);\n }\n metadata.las_totalToRead = lasHeader.totalToRead.toString(10);\n metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);\n if (lasHeader.versionAsString !== undefined) {\n metadata.las_versionAsString = lasHeader.versionAsString;\n }\n if (lasHeader.isCompressed !== undefined) {\n metadata.las_isCompressed = lasHeader.isCompressed.toString();\n }\n return metadata;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA+B;AASxB,SAAS,aAAa,WAAsB,YAAoC;AACrF,QAAM,cAAc,0BAA0B,SAAS;AACvD,QAAM,aAAS,sCAAiB,YAAY,WAAW;AACvD,SAAO;AACT;AAOO,SAAS,0BAA0B,WAA8C;AACtF,QAAM,WAAmC,CAAC;AAE1C,WAAS,mBAAmB,UAAU,aAAa,SAAS,EAAE;AAC9D,WAAS,qBAAqB,UAAU,eAAe,SAAS,EAAE;AAClE,WAAS,uBAAuB,UAAU,iBAAiB,SAAS,EAAE;AACtE,WAAS,kBAAkB,UAAU,YAAY,SAAS,EAAE;AAC5D,WAAS,YAAY,KAAK,UAAU,UAAU,KAAK;AACnD,WAAS,aAAa,KAAK,UAAU,UAAU,MAAM;AACrD,MAAI,UAAU,SAAS,QAAW;AAChC,aAAS,WAAW,KAAK,UAAU,UAAU,IAAI;AAAA,EACnD;AACA,MAAI,UAAU,SAAS,QAAW;AAChC,aAAS,WAAW,KAAK,UAAU,UAAU,IAAI;AAAA,EACnD;AACA,WAAS,kBAAkB,UAAU,YAAY,SAAS,EAAE;AAC5D,WAAS,8BAA8B,UAAU,UAAU,SAAS,EAAE;AACtE,MAAI,UAAU,oBAAoB,QAAW;AAC3C,aAAS,sBAAsB,UAAU;AAAA,EAC3C;AACA,MAAI,UAAU,iBAAiB,QAAW;AACxC,aAAS,mBAAmB,UAAU,aAAa,SAAS;AAAA,EAC9D;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ import { Schema, MeshAttributes } from '@loaders.gl/core/schema';
2
+ import type { LASHeader } from "./las-types.js";
3
+ /**
4
+ * Gets schema from LAS header
5
+ * @param lasHeader
6
+ * @param metadata
7
+ * @returns Schema
8
+ */
9
+ export declare function getLASSchema(lasHeader: LASHeader, attributes: MeshAttributes): Schema;
10
+ /**
11
+ * Make arrow like schema metadata by LASHeader properties
12
+ * @param lasHeader
13
+ * @returns
14
+ */
15
+ export declare function makeMetadataFromLasHeader(lasHeader: LASHeader): Record<string, string>;
16
+ //# sourceMappingURL=get-las-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-las-schema.d.ts","sourceRoot":"","sources":["../../../src/las/lib/get-las-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAIrF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBtF"}
@@ -0,0 +1,46 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { deduceMeshSchema } from '@loaders.gl/core/schema-utils';
5
+ /**
6
+ * Gets schema from LAS header
7
+ * @param lasHeader
8
+ * @param metadata
9
+ * @returns Schema
10
+ */
11
+ export function getLASSchema(lasHeader, attributes) {
12
+ const metadataMap = makeMetadataFromLasHeader(lasHeader);
13
+ const schema = deduceMeshSchema(attributes, metadataMap);
14
+ return schema;
15
+ }
16
+ /**
17
+ * Make arrow like schema metadata by LASHeader properties
18
+ * @param lasHeader
19
+ * @returns
20
+ */
21
+ export function makeMetadataFromLasHeader(lasHeader) {
22
+ const metadata = {};
23
+ /* eslint-disable camelcase */
24
+ metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
25
+ metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
26
+ metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
27
+ metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
28
+ metadata.las_scale = JSON.stringify(lasHeader.scale);
29
+ metadata.las_offset = JSON.stringify(lasHeader.offset);
30
+ if (lasHeader.maxs !== undefined) {
31
+ metadata.las_maxs = JSON.stringify(lasHeader.maxs);
32
+ }
33
+ if (lasHeader.mins !== undefined) {
34
+ metadata.las_mins = JSON.stringify(lasHeader.mins);
35
+ }
36
+ metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
37
+ metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
38
+ if (lasHeader.versionAsString !== undefined) {
39
+ metadata.las_versionAsString = lasHeader.versionAsString;
40
+ }
41
+ if (lasHeader.isCompressed !== undefined) {
42
+ metadata.las_isCompressed = lasHeader.isCompressed.toString();
43
+ }
44
+ return metadata;
45
+ }
46
+ //# sourceMappingURL=get-las-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-las-schema.js","sourceRoot":"","sources":["../../../src/las/lib/get-las-schema.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAoB,EAAE,UAA0B;IAC3E,MAAM,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAoB;IAC5D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,8BAA8B;IAC9B,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,QAAQ,CAAC,2BAA2B,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC5C,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC;IAC3D,CAAC;IACD,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/las/lib/las-compatibility.ts
21
+ var las_compatibility_exports = {};
22
+ __export(las_compatibility_exports, {
23
+ getLASCompatibilityLayout: () => getLASCompatibilityLayout,
24
+ populateLASCompatibilityPoint: () => populateLASCompatibilityPoint
25
+ });
26
+ module.exports = __toCommonJS(las_compatibility_exports);
27
+ function getLASCompatibilityLayout(header, metadata) {
28
+ const record = metadata.vlrs.find(
29
+ (variableLengthRecord) => variableLengthRecord.userId === "lascompatible" && variableLengthRecord.recordId === 22204
30
+ );
31
+ if (!record) return void 0;
32
+ if (!["1.0", "1.1", "1.2", "1.3"].includes(header.versionAsString || "") || ![1, 3, 4, 5].includes(header.pointsFormatId)) {
33
+ throw new Error("LASLoader: compatibility mode requires a legacy LAS point format");
34
+ }
35
+ const view = new DataView(record.data.buffer, record.data.byteOffset, record.data.byteLength);
36
+ if (view.byteLength < 4) throw new Error("LASLoader: truncated LASzip compatibility VLR");
37
+ const version = view.getUint16(2, true);
38
+ if (version !== 3 && version !== 4 || view.byteLength !== (version === 3 ? 156 : 174)) {
39
+ throw new Error(`LASLoader: unsupported LASzip compatibility VLR version ${version} or length`);
40
+ }
41
+ const offsets = /* @__PURE__ */ new Map();
42
+ let byteOffset = 0;
43
+ for (const descriptor of metadata.extraBytes) {
44
+ const scalarDataType = descriptor.dataType > 20 ? descriptor.dataType - 20 : descriptor.dataType > 10 ? descriptor.dataType - 10 : descriptor.dataType;
45
+ const size = descriptor.dataType > 20 ? 3 : descriptor.dataType > 10 ? 2 : 1;
46
+ const byteLength = descriptor.dataType === 0 ? descriptor.options : scalarDataType <= 2 ? size : scalarDataType <= 4 ? 2 * size : scalarDataType <= 6 || scalarDataType === 9 ? 4 * size : 8 * size;
47
+ if (descriptor.dataType > 30 || !byteLength)
48
+ throw new Error("LASLoader: invalid compatibility Extra Bytes layout");
49
+ offsets.set(descriptor.name, { byteOffset, dataType: descriptor.dataType });
50
+ byteOffset += byteLength;
51
+ }
52
+ const baseLength = { 1: 28, 3: 34, 4: 57, 5: 63 }[header.pointsFormatId];
53
+ if (byteOffset !== header.pointsStructSize - baseLength)
54
+ throw new Error("LASLoader: compatibility descriptors do not match point record length");
55
+ const scanAngleByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 scan angle", 4);
56
+ const returnsByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 extended returns", 1);
57
+ const classificationByteOffset = getCompatibilityFieldOffset(
58
+ offsets,
59
+ "LAS 1.4 classification",
60
+ 1
61
+ );
62
+ const flagsByteOffset = getCompatibilityFieldOffset(offsets, "LAS 1.4 flags and channel", 1);
63
+ const nirByteOffset = offsets.has("LAS 1.4 NIR band") ? getCompatibilityFieldOffset(offsets, "LAS 1.4 NIR band", 3) : void 0;
64
+ const pointDataRecordFormat = header.pointsFormatId === 1 ? 6 : header.pointsFormatId === 3 ? nirByteOffset === void 0 ? 7 : 8 : header.pointsFormatId === 4 ? 9 : 10;
65
+ if (header.pointsFormatId === 5 && nirByteOffset === void 0)
66
+ throw new Error("LASLoader: compatibility waveform color points require NIR");
67
+ return {
68
+ pointDataRecordFormat,
69
+ version: version === 3 ? "1.4" : "1.5",
70
+ scanAngleByteOffset,
71
+ returnsByteOffset,
72
+ classificationByteOffset,
73
+ flagsByteOffset,
74
+ nirByteOffset
75
+ };
76
+ }
77
+ function getCompatibilityFieldOffset(offsets, name, dataType) {
78
+ const field = offsets.get(name);
79
+ if (!field || field.dataType !== dataType)
80
+ throw new Error(`LASLoader: missing or invalid compatibility field ${name}`);
81
+ return field.byteOffset;
82
+ }
83
+ function populateLASCompatibilityPoint(view, extraByteOffset, pointIndex, layout, target) {
84
+ if (!target.classifications && !target.returnNumbers && !target.numberOfReturns && !target.scanAngles && !target.overlapFlags && !target.scannerChannels && !target.nir)
85
+ return;
86
+ const extendedReturns = view.getUint8(extraByteOffset + layout.returnsByteOffset);
87
+ const flags = view.getUint8(extraByteOffset + layout.flagsByteOffset);
88
+ if (target.classifications)
89
+ target.classifications[pointIndex] += view.getUint8(
90
+ extraByteOffset + layout.classificationByteOffset
91
+ );
92
+ if (target.returnNumbers) target.returnNumbers[pointIndex] += extendedReturns >> 4;
93
+ if (target.numberOfReturns) target.numberOfReturns[pointIndex] += extendedReturns & 15;
94
+ if (target.scanAngles) {
95
+ const rank = target.scanAngles[pointIndex];
96
+ const prediction = Math.fround(rank / Math.fround(6e-3));
97
+ const quantized = Math.sign(prediction) * Math.floor(Math.abs(prediction) + 0.5);
98
+ target.scanAngles[pointIndex] = quantized + view.getInt16(extraByteOffset + layout.scanAngleByteOffset, true);
99
+ }
100
+ if (target.overlapFlags) target.overlapFlags[pointIndex] = flags & 1;
101
+ if (target.scannerChannels) target.scannerChannels[pointIndex] = flags >> 1 & 3;
102
+ if (target.nir && layout.nirByteOffset !== void 0)
103
+ target.nir[pointIndex] = view.getUint16(extraByteOffset + layout.nirByteOffset, true);
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ getLASCompatibilityLayout,
108
+ populateLASCompatibilityPoint
109
+ });
110
+ //# sourceMappingURL=las-compatibility.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/las/lib/las-compatibility.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT AND Apache-2.0\n// Copyright (c) vis.gl contributors\n// Compatibility reconstruction follows LASzip, copyright rapidlasso GmbH.\n// See LASZIP-LICENSE and LASZIP-NOTICE in this directory.\n\nimport type {LASHeader, LASMetadata} from './las-types';\n\n/** Descriptor offsets for LASzip's legacy representation of modern point records. */\nexport type LASCompatibilityLayout = {\n /** Logical modern point format, while the source header retains its physical legacy format. */\n pointDataRecordFormat: number;\n /** Logical LAS version stored in the compatibility VLR. */\n version: '1.4' | '1.5';\n /** Packed Extra Bytes offset of the scan angle remainder. */\n scanAngleByteOffset: number;\n /** Packed Extra Bytes offset of the return increments. */\n returnsByteOffset: number;\n /** Packed Extra Bytes offset of the classification increment. */\n classificationByteOffset: number;\n /** Packed Extra Bytes offset of overlap and scanner channel. */\n flagsByteOffset: number;\n /** Packed Extra Bytes offset of optional NIR data. */\n nirByteOffset?: number;\n};\n\n/** Selected column targets that can be reconstructed from compatibility Extra Bytes. */\nexport type LASCompatibilityTarget = {\n /** Classification codes. */\n classifications: Uint8Array | null;\n /** Return numbers. */\n returnNumbers: Uint8Array | null;\n /** Return counts. */\n numberOfReturns: Uint8Array | null;\n /** Scan angles in modern 0.006-degree units. */\n scanAngles: Int16Array | null;\n /** Overlap flags. */\n overlapFlags: Uint8Array | null;\n /** Scanner channels. */\n scannerChannels: Uint8Array | null;\n /** Optional NIR values. */\n nir: Uint16Array | null;\n};\n\n/** Validate the explicit compatibility marker and locate its descriptor-defined fields. */\nexport function getLASCompatibilityLayout(\n header: LASHeader,\n metadata: LASMetadata\n): LASCompatibilityLayout | undefined {\n const record = metadata.vlrs.find(\n variableLengthRecord =>\n variableLengthRecord.userId === 'lascompatible' && variableLengthRecord.recordId === 22204\n );\n if (!record) return undefined;\n if (\n !['1.0', '1.1', '1.2', '1.3'].includes(header.versionAsString || '') ||\n ![1, 3, 4, 5].includes(header.pointsFormatId)\n ) {\n throw new Error('LASLoader: compatibility mode requires a legacy LAS point format');\n }\n const view = new DataView(record.data.buffer, record.data.byteOffset, record.data.byteLength);\n if (view.byteLength < 4) throw new Error('LASLoader: truncated LASzip compatibility VLR');\n const version = view.getUint16(2, true);\n if ((version !== 3 && version !== 4) || view.byteLength !== (version === 3 ? 156 : 174)) {\n throw new Error(`LASLoader: unsupported LASzip compatibility VLR version ${version} or length`);\n }\n const offsets = new Map<string, {byteOffset: number; dataType: number}>();\n let byteOffset = 0;\n for (const descriptor of metadata.extraBytes) {\n const scalarDataType =\n descriptor.dataType > 20\n ? descriptor.dataType - 20\n : descriptor.dataType > 10\n ? descriptor.dataType - 10\n : descriptor.dataType;\n const size = descriptor.dataType > 20 ? 3 : descriptor.dataType > 10 ? 2 : 1;\n const byteLength =\n descriptor.dataType === 0\n ? descriptor.options\n : scalarDataType <= 2\n ? size\n : scalarDataType <= 4\n ? 2 * size\n : scalarDataType <= 6 || scalarDataType === 9\n ? 4 * size\n : 8 * size;\n if (descriptor.dataType > 30 || !byteLength)\n throw new Error('LASLoader: invalid compatibility Extra Bytes layout');\n offsets.set(descriptor.name, {byteOffset, dataType: descriptor.dataType});\n byteOffset += byteLength;\n }\n const baseLength = {1: 28, 3: 34, 4: 57, 5: 63}[header.pointsFormatId]!;\n if (byteOffset !== header.pointsStructSize - baseLength)\n throw new Error('LASLoader: compatibility descriptors do not match point record length');\n const scanAngleByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 scan angle', 4);\n const returnsByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 extended returns', 1);\n const classificationByteOffset = getCompatibilityFieldOffset(\n offsets,\n 'LAS 1.4 classification',\n 1\n );\n const flagsByteOffset = getCompatibilityFieldOffset(offsets, 'LAS 1.4 flags and channel', 1);\n const nirByteOffset = offsets.has('LAS 1.4 NIR band')\n ? getCompatibilityFieldOffset(offsets, 'LAS 1.4 NIR band', 3)\n : undefined;\n const pointDataRecordFormat =\n header.pointsFormatId === 1\n ? 6\n : header.pointsFormatId === 3\n ? nirByteOffset === undefined\n ? 7\n : 8\n : header.pointsFormatId === 4\n ? 9\n : 10;\n if (header.pointsFormatId === 5 && nirByteOffset === undefined)\n throw new Error('LASLoader: compatibility waveform color points require NIR');\n return {\n pointDataRecordFormat,\n version: version === 3 ? '1.4' : '1.5',\n scanAngleByteOffset,\n returnsByteOffset,\n classificationByteOffset,\n flagsByteOffset,\n nirByteOffset\n };\n}\n\n/** Require the named field to have the scalar representation used by LASzip. */\nfunction getCompatibilityFieldOffset(\n offsets: Map<string, {byteOffset: number; dataType: number}>,\n name: string,\n dataType: number\n): number {\n const field = offsets.get(name);\n if (!field || field.dataType !== dataType)\n throw new Error(`LASLoader: missing or invalid compatibility field ${name}`);\n return field.byteOffset;\n}\n\n/** Restore selected modern fields from one legacy record without changing raw point bytes. */\nexport function populateLASCompatibilityPoint(\n view: DataView,\n extraByteOffset: number,\n pointIndex: number,\n layout: LASCompatibilityLayout,\n target: LASCompatibilityTarget\n): void {\n if (\n !target.classifications &&\n !target.returnNumbers &&\n !target.numberOfReturns &&\n !target.scanAngles &&\n !target.overlapFlags &&\n !target.scannerChannels &&\n !target.nir\n )\n return;\n const extendedReturns = view.getUint8(extraByteOffset + layout.returnsByteOffset);\n const flags = view.getUint8(extraByteOffset + layout.flagsByteOffset);\n if (target.classifications)\n target.classifications[pointIndex] += view.getUint8(\n extraByteOffset + layout.classificationByteOffset\n );\n if (target.returnNumbers) target.returnNumbers[pointIndex] += extendedReturns >> 4;\n if (target.numberOfReturns) target.numberOfReturns[pointIndex] += extendedReturns & 15;\n if (target.scanAngles) {\n const rank = target.scanAngles[pointIndex];\n const prediction = Math.fround(rank / Math.fround(0.006));\n const quantized = Math.sign(prediction) * Math.floor(Math.abs(prediction) + 0.5);\n target.scanAngles[pointIndex] =\n quantized + view.getInt16(extraByteOffset + layout.scanAngleByteOffset, true);\n }\n if (target.overlapFlags) target.overlapFlags[pointIndex] = flags & 1;\n if (target.scannerChannels) target.scannerChannels[pointIndex] = (flags >> 1) & 3;\n if (target.nir && layout.nirByteOffset !== undefined)\n target.nir[pointIndex] = view.getUint16(extraByteOffset + layout.nirByteOffset, true);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,40 @@
1
+ import type { LASHeader, LASMetadata } from "./las-types.js";
2
+ /** Descriptor offsets for LASzip's legacy representation of modern point records. */
3
+ export type LASCompatibilityLayout = {
4
+ /** Logical modern point format, while the source header retains its physical legacy format. */
5
+ pointDataRecordFormat: number;
6
+ /** Logical LAS version stored in the compatibility VLR. */
7
+ version: '1.4' | '1.5';
8
+ /** Packed Extra Bytes offset of the scan angle remainder. */
9
+ scanAngleByteOffset: number;
10
+ /** Packed Extra Bytes offset of the return increments. */
11
+ returnsByteOffset: number;
12
+ /** Packed Extra Bytes offset of the classification increment. */
13
+ classificationByteOffset: number;
14
+ /** Packed Extra Bytes offset of overlap and scanner channel. */
15
+ flagsByteOffset: number;
16
+ /** Packed Extra Bytes offset of optional NIR data. */
17
+ nirByteOffset?: number;
18
+ };
19
+ /** Selected column targets that can be reconstructed from compatibility Extra Bytes. */
20
+ export type LASCompatibilityTarget = {
21
+ /** Classification codes. */
22
+ classifications: Uint8Array | null;
23
+ /** Return numbers. */
24
+ returnNumbers: Uint8Array | null;
25
+ /** Return counts. */
26
+ numberOfReturns: Uint8Array | null;
27
+ /** Scan angles in modern 0.006-degree units. */
28
+ scanAngles: Int16Array | null;
29
+ /** Overlap flags. */
30
+ overlapFlags: Uint8Array | null;
31
+ /** Scanner channels. */
32
+ scannerChannels: Uint8Array | null;
33
+ /** Optional NIR values. */
34
+ nir: Uint16Array | null;
35
+ };
36
+ /** Validate the explicit compatibility marker and locate its descriptor-defined fields. */
37
+ export declare function getLASCompatibilityLayout(header: LASHeader, metadata: LASMetadata): LASCompatibilityLayout | undefined;
38
+ /** Restore selected modern fields from one legacy record without changing raw point bytes. */
39
+ export declare function populateLASCompatibilityPoint(view: DataView, extraByteOffset: number, pointIndex: number, layout: LASCompatibilityLayout, target: LASCompatibilityTarget): void;
40
+ //# sourceMappingURL=las-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"las-compatibility.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-compatibility.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,uBAAoB;AAExD,qFAAqF;AACrF,MAAM,MAAM,sBAAsB,GAAG;IACnC,+FAA+F;IAC/F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,wBAAwB,EAAE,MAAM,CAAC;IACjC,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,sBAAsB,GAAG;IACnC,4BAA4B;IAC5B,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,sBAAsB;IACtB,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,qBAAqB;IACrB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,gDAAgD;IAChD,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,qBAAqB;IACrB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,wBAAwB;IACxB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,2BAA2B;IAC3B,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,WAAW,GACpB,sBAAsB,GAAG,SAAS,CA8EpC;AAcD,8FAA8F;AAC9F,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CA8BN"}