@loaders.gl/pointclouds 5.0.0-beta.1 → 5.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/LAS-README.md +1 -1
  2. package/PCD-README.md +1 -1
  3. package/PLY-README.md +1 -1
  4. package/README.md +5 -1
  5. package/dist/dist.dev.js +3584 -2211
  6. package/dist/dist.min.js +20 -20
  7. package/dist/index.cjs +0 -6
  8. package/dist/index.cjs.map +2 -2
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/las/bundled.cjs +0 -3
  14. package/dist/las/bundled.cjs.map +2 -2
  15. package/dist/las/bundled.d.ts +0 -1
  16. package/dist/las/bundled.d.ts.map +1 -1
  17. package/dist/las/bundled.js +0 -1
  18. package/dist/las/bundled.js.map +1 -1
  19. package/dist/las/index.cjs +0 -3
  20. package/dist/las/index.cjs.map +3 -3
  21. package/dist/las/index.d.ts +0 -2
  22. package/dist/las/index.d.ts.map +1 -1
  23. package/dist/las/index.js +0 -3
  24. package/dist/las/index.js.map +1 -1
  25. package/dist/las/las-copc-loader-types.cjs +1 -1
  26. package/dist/las/las-copc-loader-types.cjs.map +2 -2
  27. package/dist/las/las-copc-loader-types.d.ts +13 -9
  28. package/dist/las/las-copc-loader-types.d.ts.map +1 -1
  29. package/dist/las/las-copc-loader-types.js +1 -1
  30. package/dist/las/las-copc-loader-types.js.map +1 -1
  31. package/dist/las/las-copc-loader.cjs +8 -5
  32. package/dist/las/las-copc-loader.cjs.map +2 -2
  33. package/dist/las/las-copc-loader.d.ts +8 -6
  34. package/dist/las/las-copc-loader.d.ts.map +1 -1
  35. package/dist/las/las-copc-loader.js +11 -6
  36. package/dist/las/las-copc-loader.js.map +1 -1
  37. package/dist/las/las-loader-shared.cjs +4 -2
  38. package/dist/las/las-loader-shared.cjs.map +2 -2
  39. package/dist/las/las-loader-shared.d.ts +9 -7
  40. package/dist/las/las-loader-shared.d.ts.map +1 -1
  41. package/dist/las/las-loader-shared.js +4 -2
  42. package/dist/las/las-loader-shared.js.map +1 -1
  43. package/dist/las/las-loader-types.cjs +3 -6
  44. package/dist/las/las-loader-types.cjs.map +2 -2
  45. package/dist/las/las-loader-types.d.ts +18 -45
  46. package/dist/las/las-loader-types.d.ts.map +1 -1
  47. package/dist/las/las-loader-types.js +1 -3
  48. package/dist/las/las-loader-types.js.map +1 -1
  49. package/dist/las/las-loader.cjs +61 -13
  50. package/dist/las/las-loader.cjs.map +3 -3
  51. package/dist/las/las-loader.d.ts +51 -5
  52. package/dist/las/las-loader.d.ts.map +1 -1
  53. package/dist/las/las-loader.js +56 -6
  54. package/dist/las/las-loader.js.map +1 -1
  55. package/dist/las/las-writer.cjs +3 -3
  56. package/dist/las/las-writer.cjs.map +2 -2
  57. package/dist/las/las-writer.d.ts +4 -3
  58. package/dist/las/las-writer.d.ts.map +1 -1
  59. package/dist/las/las-writer.js +4 -6
  60. package/dist/las/las-writer.js.map +1 -1
  61. package/dist/las/laz-rs-loader-types.cjs +1 -1
  62. package/dist/las/laz-rs-loader-types.cjs.map +2 -2
  63. package/dist/las/laz-rs-loader-types.d.ts +13 -9
  64. package/dist/las/laz-rs-loader-types.d.ts.map +1 -1
  65. package/dist/las/laz-rs-loader-types.js +1 -1
  66. package/dist/las/laz-rs-loader-types.js.map +1 -1
  67. package/dist/las/laz-rs-loader.cjs +8 -5
  68. package/dist/las/laz-rs-loader.cjs.map +2 -2
  69. package/dist/las/laz-rs-loader.d.ts +8 -6
  70. package/dist/las/laz-rs-loader.d.ts.map +1 -1
  71. package/dist/las/laz-rs-loader.js +11 -6
  72. package/dist/las/laz-rs-loader.js.map +1 -1
  73. package/dist/las/lazperf-loader-types.cjs +1 -1
  74. package/dist/las/lazperf-loader-types.cjs.map +2 -2
  75. package/dist/las/lazperf-loader-types.d.ts +14 -10
  76. package/dist/las/lazperf-loader-types.d.ts.map +1 -1
  77. package/dist/las/lazperf-loader-types.js +1 -1
  78. package/dist/las/lazperf-loader-types.js.map +1 -1
  79. package/dist/las/lazperf-loader.cjs +9 -6
  80. package/dist/las/lazperf-loader.cjs.map +2 -2
  81. package/dist/las/lazperf-loader.d.ts +9 -7
  82. package/dist/las/lazperf-loader.d.ts.map +1 -1
  83. package/dist/las/lazperf-loader.js +12 -7
  84. package/dist/las/lazperf-loader.js.map +1 -1
  85. package/dist/las/lib/copc/parse-las.cjs +1 -1
  86. package/dist/las/lib/copc/parse-las.cjs.map +2 -2
  87. package/dist/las/lib/copc/parse-las.js +1 -1
  88. package/dist/las/lib/copc/parse-las.js.map +1 -1
  89. package/dist/las/lib/get-las-schema.cjs +5 -0
  90. package/dist/las/lib/get-las-schema.cjs.map +2 -2
  91. package/dist/las/lib/get-las-schema.d.ts.map +1 -1
  92. package/dist/las/lib/get-las-schema.js +6 -0
  93. package/dist/las/lib/get-las-schema.js.map +1 -1
  94. package/dist/las/lib/las-extra-bytes.cjs +6 -1
  95. package/dist/las/lib/las-extra-bytes.cjs.map +2 -2
  96. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -1
  97. package/dist/las/lib/las-extra-bytes.js +6 -4
  98. package/dist/las/lib/las-extra-bytes.js.map +1 -1
  99. package/dist/las/lib/laz-perf/parse-las.cjs +9 -8
  100. package/dist/las/lib/laz-perf/parse-las.cjs.map +3 -3
  101. package/dist/las/lib/laz-perf/parse-las.js +9 -8
  102. package/dist/las/lib/laz-perf/parse-las.js.map +1 -1
  103. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +9 -8
  104. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +3 -3
  105. package/dist/las/lib/laz-rs-wasm/parse-las.js +9 -8
  106. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -1
  107. package/dist/las/lib/typescript/parse-las.cjs +135 -13
  108. package/dist/las/lib/typescript/parse-las.cjs.map +3 -3
  109. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -1
  110. package/dist/las/lib/typescript/parse-las.js +106 -10
  111. package/dist/las/lib/typescript/parse-las.js.map +1 -1
  112. package/dist/las/unbundled.cjs +0 -2
  113. package/dist/las/unbundled.cjs.map +2 -2
  114. package/dist/las/unbundled.d.ts +1 -1
  115. package/dist/las/unbundled.d.ts.map +1 -1
  116. package/dist/las/unbundled.js +1 -1
  117. package/dist/las/unbundled.js.map +1 -1
  118. package/dist/las/workers/las-worker.cjs +5 -5
  119. package/dist/las/workers/las-worker.cjs.map +2 -2
  120. package/dist/las/workers/las-worker.js +6 -6
  121. package/dist/las/workers/las-worker.js.map +1 -1
  122. package/dist/las-copc-loader-types.cjs +51 -0
  123. package/dist/las-copc-loader-types.cjs.map +7 -0
  124. package/dist/las-copc-loader-types.d.ts +2 -0
  125. package/dist/las-copc-loader-types.d.ts.map +1 -0
  126. package/dist/las-copc-loader-types.js +2 -0
  127. package/dist/las-copc-loader-types.js.map +1 -0
  128. package/dist/las-copc-loader.cjs +62 -0
  129. package/dist/las-copc-loader.cjs.map +7 -0
  130. package/dist/las-copc-loader.d.ts +2 -0
  131. package/dist/las-copc-loader.d.ts.map +1 -0
  132. package/dist/las-copc-loader.js +2 -0
  133. package/dist/las-copc-loader.js.map +1 -0
  134. package/dist/las-loader-types.cjs +53 -0
  135. package/dist/las-loader-types.cjs.map +7 -0
  136. package/dist/las-loader-types.d.ts +2 -0
  137. package/dist/las-loader-types.d.ts.map +1 -0
  138. package/dist/las-loader-types.js +2 -0
  139. package/dist/las-loader-types.js.map +1 -0
  140. package/dist/las-loader.cjs +130 -0
  141. package/dist/las-loader.cjs.map +7 -0
  142. package/dist/las-loader.d.ts +2 -0
  143. package/dist/las-loader.d.ts.map +1 -0
  144. package/dist/las-loader.js +2 -0
  145. package/dist/las-loader.js.map +1 -0
  146. package/dist/las-worker.js +1219 -253
  147. package/dist/las-writer.cjs +1056 -0
  148. package/dist/las-writer.cjs.map +7 -0
  149. package/dist/las-writer.d.ts +2 -0
  150. package/dist/las-writer.d.ts.map +1 -0
  151. package/dist/las-writer.js +2 -0
  152. package/dist/las-writer.js.map +1 -0
  153. package/dist/laz-rs-loader-types.cjs +51 -0
  154. package/dist/laz-rs-loader-types.cjs.map +7 -0
  155. package/dist/laz-rs-loader-types.d.ts +2 -0
  156. package/dist/laz-rs-loader-types.d.ts.map +1 -0
  157. package/dist/laz-rs-loader-types.js +2 -0
  158. package/dist/laz-rs-loader-types.js.map +1 -0
  159. package/dist/laz-rs-loader.cjs +277 -0
  160. package/dist/laz-rs-loader.cjs.map +7 -0
  161. package/dist/laz-rs-loader.d.ts +2 -0
  162. package/dist/laz-rs-loader.d.ts.map +1 -0
  163. package/dist/laz-rs-loader.js +2 -0
  164. package/dist/laz-rs-loader.js.map +1 -0
  165. package/dist/lazperf-loader-types.cjs +51 -0
  166. package/dist/lazperf-loader-types.cjs.map +7 -0
  167. package/dist/lazperf-loader-types.d.ts +2 -0
  168. package/dist/lazperf-loader-types.d.ts.map +1 -0
  169. package/dist/lazperf-loader-types.js +2 -0
  170. package/dist/lazperf-loader-types.js.map +1 -0
  171. package/dist/lazperf-loader.cjs +65 -0
  172. package/dist/lazperf-loader.cjs.map +7 -0
  173. package/dist/lazperf-loader.d.ts +2 -0
  174. package/dist/lazperf-loader.d.ts.map +1 -0
  175. package/dist/lazperf-loader.js +2 -0
  176. package/dist/lazperf-loader.js.map +1 -0
  177. package/dist/pcd/bundled.cjs +2 -4
  178. package/dist/pcd/bundled.cjs.map +2 -2
  179. package/dist/pcd/bundled.d.ts +1 -1
  180. package/dist/pcd/bundled.d.ts.map +1 -1
  181. package/dist/pcd/bundled.js +1 -1
  182. package/dist/pcd/bundled.js.map +1 -1
  183. package/dist/pcd/index.cjs +0 -3
  184. package/dist/pcd/index.cjs.map +3 -3
  185. package/dist/pcd/index.d.ts +0 -2
  186. package/dist/pcd/index.d.ts.map +1 -1
  187. package/dist/pcd/index.js +0 -3
  188. package/dist/pcd/index.js.map +1 -1
  189. package/dist/pcd/pcd-loader-types.cjs +9 -10
  190. package/dist/pcd/pcd-loader-types.cjs.map +2 -2
  191. package/dist/pcd/pcd-loader-types.d.ts +18 -41
  192. package/dist/pcd/pcd-loader-types.d.ts.map +1 -1
  193. package/dist/pcd/pcd-loader-types.js +6 -6
  194. package/dist/pcd/pcd-loader-types.js.map +1 -1
  195. package/dist/pcd/pcd-loader.cjs +82 -25
  196. package/dist/pcd/pcd-loader.cjs.map +3 -3
  197. package/dist/pcd/pcd-loader.d.ts +42 -6
  198. package/dist/pcd/pcd-loader.d.ts.map +1 -1
  199. package/dist/pcd/pcd-loader.js +72 -21
  200. package/dist/pcd/pcd-loader.js.map +1 -1
  201. package/dist/pcd/pcd-writer.cjs +3 -3
  202. package/dist/pcd/pcd-writer.cjs.map +2 -2
  203. package/dist/pcd/pcd-writer.d.ts +5 -4
  204. package/dist/pcd/pcd-writer.d.ts.map +1 -1
  205. package/dist/pcd/pcd-writer.js +4 -4
  206. package/dist/pcd/pcd-writer.js.map +1 -1
  207. package/dist/pcd/unbundled.cjs +2 -4
  208. package/dist/pcd/unbundled.cjs.map +2 -2
  209. package/dist/pcd/unbundled.d.ts +1 -1
  210. package/dist/pcd/unbundled.d.ts.map +1 -1
  211. package/dist/pcd/unbundled.js +1 -1
  212. package/dist/pcd/unbundled.js.map +1 -1
  213. package/dist/pcd/workers/pcd-worker.cjs +5 -5
  214. package/dist/pcd/workers/pcd-worker.cjs.map +2 -2
  215. package/dist/pcd/workers/pcd-worker.js +6 -6
  216. package/dist/pcd/workers/pcd-worker.js.map +1 -1
  217. package/dist/pcd-loader-types.cjs +65 -0
  218. package/dist/pcd-loader-types.cjs.map +7 -0
  219. package/dist/pcd-loader-types.d.ts +2 -0
  220. package/dist/pcd-loader-types.d.ts.map +1 -0
  221. package/dist/pcd-loader-types.js +2 -0
  222. package/dist/pcd-loader-types.js.map +1 -0
  223. package/dist/pcd-loader.cjs +203 -0
  224. package/dist/pcd-loader.cjs.map +7 -0
  225. package/dist/pcd-loader.d.ts +2 -0
  226. package/dist/pcd-loader.d.ts.map +1 -0
  227. package/dist/pcd-loader.js +2 -0
  228. package/dist/pcd-loader.js.map +1 -0
  229. package/dist/pcd-worker.js +1457 -418
  230. package/dist/pcd-writer.cjs +136 -0
  231. package/dist/pcd-writer.cjs.map +7 -0
  232. package/dist/pcd-writer.d.ts +2 -0
  233. package/dist/pcd-writer.d.ts.map +1 -0
  234. package/dist/pcd-writer.js +2 -0
  235. package/dist/pcd-writer.js.map +1 -0
  236. package/dist/ply/bundled.cjs +2 -4
  237. package/dist/ply/bundled.cjs.map +2 -2
  238. package/dist/ply/bundled.d.ts +1 -1
  239. package/dist/ply/bundled.d.ts.map +1 -1
  240. package/dist/ply/bundled.js +1 -1
  241. package/dist/ply/bundled.js.map +1 -1
  242. package/dist/ply/index.cjs +0 -3
  243. package/dist/ply/index.cjs.map +3 -3
  244. package/dist/ply/index.d.ts +0 -2
  245. package/dist/ply/index.d.ts.map +1 -1
  246. package/dist/ply/index.js +0 -3
  247. package/dist/ply/index.js.map +1 -1
  248. package/dist/ply/lib/get-ply-schema.cjs +4 -2
  249. package/dist/ply/lib/get-ply-schema.cjs.map +2 -2
  250. package/dist/ply/lib/get-ply-schema.d.ts +6 -0
  251. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -1
  252. package/dist/ply/lib/get-ply-schema.js +1 -1
  253. package/dist/ply/lib/get-ply-schema.js.map +1 -1
  254. package/dist/ply/lib/parse-ply-arrow.cjs +1 -1
  255. package/dist/ply/lib/parse-ply-arrow.cjs.map +2 -2
  256. package/dist/ply/lib/parse-ply-arrow.js +2 -2
  257. package/dist/ply/lib/parse-ply-arrow.js.map +1 -1
  258. package/dist/ply/lib/parse-ply-in-batches.cjs +14 -8
  259. package/dist/ply/lib/parse-ply-in-batches.cjs.map +3 -3
  260. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -1
  261. package/dist/ply/lib/parse-ply-in-batches.js +9 -4
  262. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -1
  263. package/dist/ply/lib/parse-ply.cjs +3 -0
  264. package/dist/ply/lib/parse-ply.cjs.map +2 -2
  265. package/dist/ply/lib/parse-ply.d.ts +1 -1
  266. package/dist/ply/lib/parse-ply.d.ts.map +1 -1
  267. package/dist/ply/lib/parse-ply.js +4 -0
  268. package/dist/ply/lib/parse-ply.js.map +1 -1
  269. package/dist/ply/ply-loader-types.cjs +9 -10
  270. package/dist/ply/ply-loader-types.cjs.map +2 -2
  271. package/dist/ply/ply-loader-types.d.ts +19 -42
  272. package/dist/ply/ply-loader-types.d.ts.map +1 -1
  273. package/dist/ply/ply-loader-types.js +6 -6
  274. package/dist/ply/ply-loader-types.js.map +1 -1
  275. package/dist/ply/ply-loader.cjs +82 -24
  276. package/dist/ply/ply-loader.cjs.map +3 -3
  277. package/dist/ply/ply-loader.d.ts +43 -6
  278. package/dist/ply/ply-loader.d.ts.map +1 -1
  279. package/dist/ply/ply-loader.js +71 -19
  280. package/dist/ply/ply-loader.js.map +1 -1
  281. package/dist/ply/ply-writer.cjs +3 -3
  282. package/dist/ply/ply-writer.cjs.map +2 -2
  283. package/dist/ply/ply-writer.d.ts +5 -4
  284. package/dist/ply/ply-writer.d.ts.map +1 -1
  285. package/dist/ply/ply-writer.js +4 -4
  286. package/dist/ply/ply-writer.js.map +1 -1
  287. package/dist/ply/unbundled.cjs +2 -4
  288. package/dist/ply/unbundled.cjs.map +2 -2
  289. package/dist/ply/unbundled.d.ts +1 -1
  290. package/dist/ply/unbundled.d.ts.map +1 -1
  291. package/dist/ply/unbundled.js +1 -1
  292. package/dist/ply/unbundled.js.map +1 -1
  293. package/dist/ply/workers/ply-worker.cjs +6 -6
  294. package/dist/ply/workers/ply-worker.cjs.map +2 -2
  295. package/dist/ply/workers/ply-worker.js +8 -8
  296. package/dist/ply/workers/ply-worker.js.map +1 -1
  297. package/dist/ply-loader-types.cjs +66 -0
  298. package/dist/ply-loader-types.cjs.map +7 -0
  299. package/dist/ply-loader-types.d.ts +2 -0
  300. package/dist/ply-loader-types.d.ts.map +1 -0
  301. package/dist/ply-loader-types.js +2 -0
  302. package/dist/ply-loader-types.js.map +1 -0
  303. package/dist/ply-loader.cjs +194 -0
  304. package/dist/ply-loader.cjs.map +7 -0
  305. package/dist/ply-loader.d.ts +2 -0
  306. package/dist/ply-loader.d.ts.map +1 -0
  307. package/dist/ply-loader.js +2 -0
  308. package/dist/ply-loader.js.map +1 -0
  309. package/dist/ply-worker.js +2099 -312
  310. package/dist/ply-writer.cjs +177 -0
  311. package/dist/ply-writer.cjs.map +7 -0
  312. package/dist/ply-writer.d.ts +2 -0
  313. package/dist/ply-writer.d.ts.map +1 -0
  314. package/dist/ply-writer.js +2 -0
  315. package/dist/ply-writer.js.map +1 -0
  316. package/package.json +75 -71
  317. package/src/index.ts +3 -3
  318. package/src/las/bundled.ts +0 -1
  319. package/src/las/index.ts +0 -4
  320. package/src/las/las-copc-loader-types.ts +3 -3
  321. package/src/las/las-copc-loader.ts +12 -12
  322. package/src/las/las-loader-shared.ts +9 -7
  323. package/src/las/las-loader-types.ts +3 -6
  324. package/src/las/las-loader.ts +63 -9
  325. package/src/las/las-writer.ts +17 -13
  326. package/src/las/laz-rs-loader-types.ts +3 -3
  327. package/src/las/laz-rs-loader.ts +11 -11
  328. package/src/las/lazperf-loader-types.ts +3 -3
  329. package/src/las/lazperf-loader.ts +13 -13
  330. package/src/las/lib/copc/parse-las.ts +1 -1
  331. package/src/las/lib/get-las-schema.ts +5 -0
  332. package/src/las/lib/las-extra-bytes.ts +6 -4
  333. package/src/las/lib/laz-perf/parse-las.ts +8 -9
  334. package/src/las/lib/laz-rs-wasm/parse-las.ts +8 -9
  335. package/src/las/lib/typescript/parse-las.ts +143 -11
  336. package/src/las/libs/laz-rs-wasm/README.md +5 -0
  337. package/src/las/libs/laz-rs-wasm/package.json +6 -0
  338. package/src/las/unbundled.ts +1 -1
  339. package/src/las/workers/las-worker.ts +6 -6
  340. package/src/las-copc-loader-types.ts +1 -0
  341. package/src/las-copc-loader.ts +1 -0
  342. package/src/las-loader-types.ts +1 -0
  343. package/src/las-loader.ts +1 -0
  344. package/src/las-writer.ts +1 -0
  345. package/src/laz-rs-loader-types.ts +1 -0
  346. package/src/laz-rs-loader.ts +1 -0
  347. package/src/lazperf-loader-types.ts +1 -0
  348. package/src/lazperf-loader.ts +1 -0
  349. package/src/pcd/bundled.ts +1 -4
  350. package/src/pcd/index.ts +0 -4
  351. package/src/pcd/pcd-loader-types.ts +10 -11
  352. package/src/pcd/pcd-loader.ts +97 -29
  353. package/src/pcd/pcd-writer.ts +12 -8
  354. package/src/pcd/unbundled.ts +1 -1
  355. package/src/pcd/workers/pcd-worker.ts +6 -6
  356. package/src/pcd-loader-types.ts +1 -0
  357. package/src/pcd-loader.ts +1 -0
  358. package/src/pcd-writer.ts +1 -0
  359. package/src/ply/bundled.ts +1 -4
  360. package/src/ply/index.ts +0 -4
  361. package/src/ply/lib/get-ply-schema.ts +1 -1
  362. package/src/ply/lib/parse-ply-arrow.ts +2 -2
  363. package/src/ply/lib/parse-ply-in-batches.ts +9 -4
  364. package/src/ply/lib/parse-ply.ts +4 -1
  365. package/src/ply/ply-loader-types.ts +10 -11
  366. package/src/ply/ply-loader.ts +94 -24
  367. package/src/ply/ply-writer.ts +12 -8
  368. package/src/ply/unbundled.ts +1 -1
  369. package/src/ply/workers/ply-worker.ts +8 -8
  370. package/src/ply-loader-types.ts +1 -0
  371. package/src/ply-loader.ts +1 -0
  372. package/src/ply-writer.ts +1 -0
@@ -1,4 +1,4 @@
1
- import type { MeshArrowTable } from '@loaders.gl/core/schema';
1
+ import type { Table, RecordBatch } from 'apache-arrow';
2
2
  import { type LASLoaderOptions } from "./las-loader-shared.js";
3
3
  import type { LASMesh } from "./lib/las-types.js";
4
4
  /**
@@ -9,16 +9,18 @@ export declare const LAZPerfLoader: {
9
9
  readonly name: "LAS (laz-perf)";
10
10
  readonly preload: () => Promise<{
11
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;
12
+ readonly parse: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => Promise<LASMesh | Table<any>>;
13
+ readonly parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => LASMesh | Table<any>;
14
+ readonly parseInBatches: (arrayBufferIterator: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options?: LASLoaderOptions) => AsyncGenerator<LASMesh | RecordBatch<any>, void, any>;
15
+ readonly defaultShape: "arrow";
16
+ readonly supportsNativeArrow: true;
17
+ readonly dataType: LASMesh | Table;
18
+ readonly batchType: LASMesh | RecordBatch;
17
19
  readonly version: any;
18
20
  readonly worker: false;
19
21
  readonly options: {
20
22
  readonly las: {
21
- readonly shape: "arrow-table";
23
+ readonly shape: "arrow";
22
24
  readonly fp64: false;
23
25
  readonly colorDepth: 8;
24
26
  readonly colorFormat: "uint8norm";
@@ -38,13 +40,15 @@ export declare const LAZPerfLoader: {
38
40
  readonly binary: true;
39
41
  readonly tests: ["LASF"];
40
42
  }>;
41
- readonly dataType: LASMesh | MeshArrowTable;
42
- readonly batchType: LASMesh | MeshArrowTable;
43
+ readonly defaultShape: "arrow";
44
+ readonly supportsNativeArrow: true;
45
+ readonly dataType: LASMesh | Table;
46
+ readonly batchType: LASMesh | RecordBatch;
43
47
  readonly version: any;
44
48
  readonly worker: false;
45
49
  readonly options: {
46
50
  readonly las: {
47
- readonly shape: "arrow-table";
51
+ readonly shape: "arrow";
48
52
  readonly fp64: false;
49
53
  readonly colorDepth: 8;
50
54
  readonly colorFormat: "uint8norm";
@@ -1 +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"}
1
+ {"version":3,"file":"lazperf-loader-types.d.ts","sourceRoot":"","sources":["../../src/las/lazperf-loader-types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,EAAsB,KAAK,gBAAgB,EAAC,+BAA4B;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,2BAAwB;AAE7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO2D,CAAC"}
@@ -10,7 +10,7 @@ export const LAZPerfLoader = {
10
10
  ...LAS_LOADER_METADATA,
11
11
  name: 'LAS (laz-perf)',
12
12
  preload: async () => {
13
- const { LAZPerfLoaderWithParser } = await import('@loaders.gl/pointclouds/las/lazperf-loader');
13
+ const { LAZPerfLoaderWithParser } = await import('@loaders.gl/pointclouds/lazperf-loader');
14
14
  return LAZPerfLoaderWithParser;
15
15
  }
16
16
  };
@@ -1 +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"}
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,wCAAwC,CAAC,CAAC;QACzF,OAAO,uBAAuB,CAAC;IACjC,CAAC;CACkF,CAAC"}
@@ -23,23 +23,24 @@ __export(lazperf_loader_exports, {
23
23
  LAZPerfLoaderWithParser: () => LAZPerfLoaderWithParser
24
24
  });
25
25
  module.exports = __toCommonJS(lazperf_loader_exports);
26
+ var import_las_loader = require("./las-loader.cjs");
26
27
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
28
  var import_las_loader_shared = require("./las-loader-shared.cjs");
28
29
  var import_parse_las = require("./lib/laz-perf/parse-las.cjs");
29
30
  var LAZPerfLoaderWithParser = {
30
31
  ...import_las_loader_shared.LAS_LOADER_METADATA,
31
32
  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),
33
+ parse: async (arrayBuffer, options) => (0, import_las_loader.toPublicLASResult)(convertLASMesh((0, import_parse_las.parseLAS)(arrayBuffer, options), options)),
34
+ parseSync: (arrayBuffer, options) => (0, import_las_loader.toPublicLASResult)(convertLASMesh((0, import_parse_las.parseLAS)(arrayBuffer, options), options)),
34
35
  parseInBatches: async function* (arrayBufferIterator, options) {
35
36
  yield* convertLASMeshBatches((0, import_parse_las.parseLASInBatches)(arrayBufferIterator, options), options);
36
37
  }
37
38
  };
38
39
  function convertLASMesh(mesh, options) {
39
40
  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;
41
+ const table = (0, import_schema_utils.convertMeshToArrowTableWrapper)(formattedMesh);
42
+ if ((0, import_las_loader_shared.getLASShape)(options) === "arrow") {
43
+ return { ...table, loaderData: mesh.loaderData };
43
44
  }
44
45
  return {
45
46
  ...(0, import_schema_utils.convertTableToMesh)(table),
@@ -50,7 +51,9 @@ function convertLASMesh(mesh, options) {
50
51
  }
51
52
  async function* convertLASMeshBatches(meshBatches, options) {
52
53
  for await (const mesh of meshBatches) {
53
- yield convertLASMesh(mesh, options);
54
+ const result = convertLASMesh(mesh, options);
55
+ if ("shape" in result) yield* (0, import_las_loader.getLASRecordBatches)(result);
56
+ else yield result;
54
57
  }
55
58
  }
56
59
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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;",
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 {Table, RecordBatch} from 'apache-arrow';\nimport {getLASRecordBatches, toPublicLASResult} from './las-loader';\nimport type {MeshArrowTable} from '@loaders.gl/core/schema';\nimport {convertMeshToArrowTableWrapper, 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 toPublicLASResult(convertLASMesh(parseLAS(arrayBuffer, options), options)),\n parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n toPublicLASResult(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<LASMesh | Table, LASMesh | RecordBatch, LASLoaderOptions>;\n\nfunction convertLASMesh(mesh: LASMesh, options?: LASLoaderOptions): LASMesh | MeshArrowTable {\n const formattedMesh = formatLASMeshColors(mesh, options?.las?.colorFormat || 'uint8norm');\n const table = convertMeshToArrowTableWrapper(formattedMesh) as MeshArrowTable;\n if (getLASShape(options) === 'arrow') {\n return {...table, loaderData: mesh.loaderData};\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 | RecordBatch> {\n for await (const mesh of meshBatches) {\n const result = convertLASMesh(mesh, options);\n if ('shape' in result) yield* getLASRecordBatches(result);\n else yield result;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAAqD;AAErD,0BAAiE;AACjE,+BAKO;AAEP,uBAA0C;AAMnC,IAAM,0BAA0B;AAAA,EACrC,GAAG;AAAA,EACH,MAAM;AAAA,EACN,OAAO,OAAO,aAA0B,gBACtC,qCAAkB,mBAAe,2BAAS,aAAa,OAAO,GAAG,OAAO,CAAC;AAAA,EAC3E,WAAW,CAAC,aAA0B,gBACpC,qCAAkB,mBAAe,2BAAS,aAAa,OAAO,GAAG,OAAO,CAAC;AAAA,EAC3E,gBAAgB,iBAAiB,qBAAqB,SAA4B;AAChF,WAAO,0BAAsB,oCAAkB,qBAAqB,OAAO,GAAG,OAAO;AAAA,EACvF;AACF;AAEA,SAAS,eAAe,MAAe,SAAsD;AAC3F,QAAM,oBAAgB,8CAAoB,MAAM,SAAS,KAAK,eAAe,WAAW;AACxF,QAAM,YAAQ,oDAA+B,aAAa;AAC1D,UAAI,sCAAY,OAAO,MAAM,SAAS;AACpC,WAAO,EAAC,GAAG,OAAO,YAAY,KAAK,WAAU;AAAA,EAC/C;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,SACsC;AACtC,mBAAiB,QAAQ,aAAa;AACpC,UAAM,SAAS,eAAe,MAAM,OAAO;AAC3C,QAAI,WAAW,OAAQ,YAAO,uCAAoB,MAAM;AAAA,QACnD,OAAM;AAAA,EACb;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { MeshArrowTable } from '@loaders.gl/core/schema';
1
+ import type { Table, RecordBatch } from 'apache-arrow';
2
2
  import { type LASLoaderOptions } from "./las-loader-shared.js";
3
3
  import type { LASMesh } from "./lib/las-types.js";
4
4
  /**
@@ -7,16 +7,18 @@ import type { LASMesh } from "./lib/las-types.js";
7
7
  */
8
8
  export declare const LAZPerfLoaderWithParser: {
9
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;
10
+ readonly parse: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => Promise<LASMesh | Table<any>>;
11
+ readonly parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => LASMesh | Table<any>;
12
+ readonly parseInBatches: (arrayBufferIterator: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options?: LASLoaderOptions) => AsyncGenerator<LASMesh | RecordBatch<any>, void, any>;
13
+ readonly defaultShape: "arrow";
14
+ readonly supportsNativeArrow: true;
15
+ readonly dataType: LASMesh | Table;
16
+ readonly batchType: LASMesh | RecordBatch;
15
17
  readonly version: any;
16
18
  readonly worker: false;
17
19
  readonly options: {
18
20
  readonly las: {
19
- readonly shape: "arrow-table";
21
+ readonly shape: "arrow";
20
22
  readonly fp64: false;
21
23
  readonly colorDepth: 8;
22
24
  readonly colorFormat: "uint8norm";
@@ -1 +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"}
1
+ {"version":3,"file":"lazperf-loader.d.ts","sourceRoot":"","sources":["../../src/las/lazperf-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAIrD,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGa,CAAC"}
@@ -1,7 +1,8 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
4
+ import { getLASRecordBatches, toPublicLASResult } from "./las-loader.js";
5
+ import { convertMeshToArrowTableWrapper, convertTableToMesh } from '@loaders.gl/core/schema-utils';
5
6
  import { formatLASMeshColors, getLASShape, LAS_LOADER_METADATA } from "./las-loader-shared.js";
6
7
  import { parseLAS, parseLASInBatches } from "./lib/laz-perf/parse-las.js";
7
8
  /**
@@ -11,17 +12,17 @@ import { parseLAS, parseLASInBatches } from "./lib/laz-perf/parse-las.js";
11
12
  export const LAZPerfLoaderWithParser = {
12
13
  ...LAS_LOADER_METADATA,
13
14
  name: 'LAS (laz-perf)',
14
- parse: async (arrayBuffer, options) => convertLASMesh(parseLAS(arrayBuffer, options), options),
15
- parseSync: (arrayBuffer, options) => convertLASMesh(parseLAS(arrayBuffer, options), options),
15
+ parse: async (arrayBuffer, options) => toPublicLASResult(convertLASMesh(parseLAS(arrayBuffer, options), options)),
16
+ parseSync: (arrayBuffer, options) => toPublicLASResult(convertLASMesh(parseLAS(arrayBuffer, options), options)),
16
17
  parseInBatches: async function* (arrayBufferIterator, options) {
17
18
  yield* convertLASMeshBatches(parseLASInBatches(arrayBufferIterator, options), options);
18
19
  }
19
20
  };
20
21
  function convertLASMesh(mesh, options) {
21
22
  const formattedMesh = formatLASMeshColors(mesh, options?.las?.colorFormat || 'uint8norm');
22
- const table = convertMeshToTable(formattedMesh, 'arrow-table');
23
- if (getLASShape(options) === 'arrow-table') {
24
- return table;
23
+ const table = convertMeshToArrowTableWrapper(formattedMesh);
24
+ if (getLASShape(options) === 'arrow') {
25
+ return { ...table, loaderData: mesh.loaderData };
25
26
  }
26
27
  return {
27
28
  ...convertTableToMesh(table),
@@ -38,7 +39,11 @@ function convertLASMesh(mesh, options) {
38
39
  */
39
40
  async function* convertLASMeshBatches(meshBatches, options) {
40
41
  for await (const mesh of meshBatches) {
41
- yield convertLASMesh(mesh, options);
42
+ const result = convertLASMesh(mesh, options);
43
+ if ('shape' in result)
44
+ yield* getLASRecordBatches(result);
45
+ else
46
+ yield result;
42
47
  }
43
48
  }
44
49
  //# sourceMappingURL=lazperf-loader.js.map
@@ -1 +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"}
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,mBAAmB,EAAE,iBAAiB,EAAC,wBAAqB;AAEpE,OAAO,EAAC,8BAA8B,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AACjG,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,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,SAAS,EAAE,CAAC,WAAwB,EAAE,OAA0B,EAAE,EAAE,CAClE,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,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;CAC4F,CAAC;AAEhG,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,8BAA8B,CAAC,aAAa,CAAmB,CAAC;IAC9E,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,EAAC,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAC,CAAC;IACjD,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,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,OAAO,IAAI,MAAM;YAAE,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;;YACrD,MAAM,MAAM,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -166,7 +166,7 @@ function detectTwoByteColors(view, pointOffset, batchPointCount, options) {
166
166
  }
167
167
  }
168
168
  function getBatchSize(options) {
169
- const batchSize = options.batchSize ?? options.core?.batchSize;
169
+ const batchSize = options.core?.batchSize;
170
170
  return typeof batchSize === "number" ? batchSize : DEFAULT_BATCH_SIZE;
171
171
  }
172
172
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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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",
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.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -209,7 +209,7 @@ function detectTwoByteColors(view, pointOffset, batchPointCount, options) {
209
209
  * @returns Point count per decoded batch
210
210
  */
211
211
  function getBatchSize(options) {
212
- const batchSize = options.batchSize ?? options.core?.batchSize;
212
+ const batchSize = options.core?.batchSize;
213
213
  return typeof batchSize === 'number' ? batchSize : DEFAULT_BATCH_SIZE;
214
214
  }
215
215
  //# sourceMappingURL=parse-las.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-las.js","sourceRoot":"","sources":["../../../../src/las/lib/copc/parse-las.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-las.js","sourceRoot":"","sources":["../../../../src/las/lib/copc/parse-las.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,11 @@ function makeMetadataFromLasHeader(lasHeader) {
52
52
  if (lasHeader.isCompressed !== void 0) {
53
53
  metadata.las_isCompressed = lasHeader.isCompressed.toString();
54
54
  }
55
+ if (lasHeader.metadata?.wkt) metadata.las_wkt = lasHeader.metadata.wkt;
56
+ if (lasHeader.metadata?.wktMathTransform)
57
+ metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;
58
+ if (lasHeader.metadata?.geotiff)
59
+ metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);
55
60
  return metadata;
56
61
  }
57
62
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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;",
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 if (lasHeader.metadata?.wkt) metadata.las_wkt = lasHeader.metadata.wkt;\n if (lasHeader.metadata?.wktMathTransform)\n metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;\n if (lasHeader.metadata?.geotiff)\n metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);\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,MAAI,UAAU,UAAU,IAAK,UAAS,UAAU,UAAU,SAAS;AACnE,MAAI,UAAU,UAAU;AACtB,aAAS,uBAAuB,UAAU,SAAS;AACrD,MAAI,UAAU,UAAU;AACtB,aAAS,cAAc,KAAK,UAAU,UAAU,SAAS,OAAO;AAClE,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1 +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"}
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,CA6BtF"}
@@ -41,6 +41,12 @@ export function makeMetadataFromLasHeader(lasHeader) {
41
41
  if (lasHeader.isCompressed !== undefined) {
42
42
  metadata.las_isCompressed = lasHeader.isCompressed.toString();
43
43
  }
44
+ if (lasHeader.metadata?.wkt)
45
+ metadata.las_wkt = lasHeader.metadata.wkt;
46
+ if (lasHeader.metadata?.wktMathTransform)
47
+ metadata.las_wktMathTransform = lasHeader.metadata.wktMathTransform;
48
+ if (lasHeader.metadata?.geotiff)
49
+ metadata.las_geotiff = JSON.stringify(lasHeader.metadata.geotiff);
44
50
  return metadata;
45
51
  }
46
52
  //# sourceMappingURL=get-las-schema.js.map
@@ -1 +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"}
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,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG;QAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvE,IAAI,SAAS,CAAC,QAAQ,EAAE,gBAAgB;QACtC,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtE,IAAI,SAAS,CAAC,QAAQ,EAAE,OAAO;QAC7B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -133,7 +133,12 @@ function populateLASTypedExtraBytes(rawExtraBytes, pointCount, extraByteCount, a
133
133
  }
134
134
  }
135
135
  function readLASString(bytes, offset, length) {
136
- return new TextDecoder().decode(bytes.subarray(offset, offset + length)).replace(/\0+$/, "").trim();
136
+ const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));
137
+ let end = decoded.length;
138
+ while (end > 0 && decoded[end - 1] === "\0") {
139
+ end--;
140
+ }
141
+ return decoded.slice(0, end).trim();
137
142
  }
138
143
  function sanitizeExtraBytesName(name) {
139
144
  return name.trim().replace(/[^A-Za-z0-9_]+/g, "_");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/las/lib/las-extra-bytes.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LASExtraBytesDescriptor} from './las-types';\n\n/** Typed-array values supported for LAS Extra Bytes Arrow attributes. */\nexport type LASTypedExtraBytesValue =\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/** Prepared typed LAS Extra Bytes attribute and its source-record layout. */\nexport type LASTypedExtraBytesAttribute = {\n /** Stable Arrow attribute name. */\n name: string;\n /** Typed output values. */\n value: LASTypedExtraBytesValue;\n /** Number of components per point. */\n size: number;\n /** LAS scalar data type code. */\n scalarDataType: number;\n /** Byte offset within the packed Extra Bytes record. */\n byteOffset: number;\n /** Total source byte length per point. */\n byteLength: number;\n /** Per-component scales. */\n scales: number[];\n /** Per-component offsets. */\n offsets: number[];\n /** Whether transformed integer values require Float64 output. */\n outputFloat64: boolean;\n};\n\n/** Parse the 192-byte descriptors in an LAS Extra Bytes VLR payload. */\nexport function parseLASExtraBytes(data: Uint8Array): LASExtraBytesDescriptor[] {\n if (data.byteLength % 192 !== 0) {\n throw new Error(`LAS Extra Bytes VLR length ${data.byteLength} is not a multiple of 192`);\n }\n const descriptors: LASExtraBytesDescriptor[] = [];\n const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n for (let descriptorOffset = 0; descriptorOffset < data.byteLength; descriptorOffset += 192) {\n const scales: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 112, true),\n dataView.getFloat64(descriptorOffset + 120, true),\n dataView.getFloat64(descriptorOffset + 128, true)\n ];\n const offsets: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 136, true),\n dataView.getFloat64(descriptorOffset + 144, true),\n dataView.getFloat64(descriptorOffset + 152, true)\n ];\n descriptors.push({\n dataType: data[descriptorOffset + 2],\n options: data[descriptorOffset + 3],\n name: readLASString(data, descriptorOffset + 4, 32),\n description: readLASString(data, descriptorOffset + 160, 32),\n scale: scales[0],\n offset: offsets[0],\n scales,\n offsets,\n data: data.slice(descriptorOffset, descriptorOffset + 192)\n });\n }\n return descriptors;\n}\n\n/** Allocate typed Arrow attributes described by an LAS Extra Bytes VLR. */\nexport function createLASTypedExtraBytesAttributes(\n pointCount: number,\n descriptors: readonly LASExtraBytesDescriptor[],\n extraByteCount: number\n): LASTypedExtraBytesAttribute[] {\n let byteOffset = 0;\n const usedNames = new Set<string>();\n const attributes: LASTypedExtraBytesAttribute[] = [];\n for (let descriptorIndex = 0; descriptorIndex < descriptors.length; descriptorIndex++) {\n const descriptor = descriptors[descriptorIndex];\n const scalarDataType = getExtraBytesScalarDataType(descriptor.dataType);\n const size = getExtraBytesComponentCount(descriptor.dataType);\n const scalarByteLength = getExtraBytesScalarByteLength(scalarDataType);\n const byteLength = scalarByteLength * size;\n if (descriptor.dataType < 1 || descriptor.dataType > 30 || !byteLength) {\n throw new Error(`Unsupported typed LAS Extra Bytes data type ${descriptor.dataType}`);\n }\n let name = `EXTRA_BYTES_${sanitizeExtraBytesName(descriptor.name)}`;\n if (name === 'EXTRA_BYTES_') {\n name = `EXTRA_BYTES_${descriptorIndex}`;\n }\n const baseName = name;\n let suffix = 1;\n while (usedNames.has(name)) {\n name = `${baseName}_${suffix++}`;\n }\n usedNames.add(name);\n const scales =\n descriptor.options & 0x08 ? descriptor.scales.slice(0, size) : new Array(size).fill(1);\n const offsets =\n descriptor.options & 0x10 ? descriptor.offsets.slice(0, size) : new Array(size).fill(0);\n const isBigInt = scalarDataType === 7 || scalarDataType === 8;\n const outputFloat64 =\n scalarDataType !== 10 &&\n (isBigInt\n ? scales.some(scale => scale !== 1) || offsets.some(offset => offset !== 0)\n : Boolean(descriptor.options & 0x18));\n attributes.push({\n name,\n value: createLASTypedExtraBytesValue(scalarDataType, pointCount * size, outputFloat64),\n size,\n scalarDataType,\n byteOffset,\n byteLength,\n outputFloat64,\n scales,\n offsets\n });\n byteOffset += byteLength;\n }\n if (byteOffset !== extraByteCount) {\n throw new Error(\n `LAS Extra Bytes descriptors use ${byteOffset} bytes; point records provide ${extraByteCount}`\n );\n }\n return attributes;\n}\n\n/** Populate typed attributes from packed Extra Bytes records. */\nexport function populateLASTypedExtraBytes(\n rawExtraBytes: Uint8Array,\n pointCount: number,\n extraByteCount: number,\n attributes: readonly LASTypedExtraBytesAttribute[]\n): void {\n if (rawExtraBytes.byteLength < pointCount * extraByteCount) {\n throw new Error('Packed LAS Extra Bytes data is truncated');\n }\n const dataView = new DataView(\n rawExtraBytes.buffer,\n rawExtraBytes.byteOffset,\n rawExtraBytes.byteLength\n );\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n const recordOffset = pointIndex * extraByteCount;\n for (const attribute of attributes) {\n const targetOffset = pointIndex * attribute.size;\n const sourceOffset = recordOffset + attribute.byteOffset;\n const scalarByteLength = getExtraBytesScalarByteLength(attribute.scalarDataType);\n for (let componentIndex = 0; componentIndex < attribute.size; componentIndex++) {\n populateLASTypedExtraBytesComponent(\n dataView,\n sourceOffset + componentIndex * scalarByteLength,\n attribute,\n targetOffset + componentIndex,\n componentIndex\n );\n }\n }\n }\n}\n\nfunction readLASString(bytes: Uint8Array, offset: number, length: number): string {\n return new TextDecoder()\n .decode(bytes.subarray(offset, offset + length))\n .replace(/\\0+$/, '')\n .trim();\n}\n\nfunction sanitizeExtraBytesName(name: string): string {\n return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');\n}\n\nfunction getExtraBytesScalarDataType(dataType: number): number {\n return dataType > 20 ? dataType - 20 : dataType > 10 ? dataType - 10 : dataType;\n}\n\nfunction getExtraBytesComponentCount(dataType: number): number {\n return dataType > 20 ? 3 : dataType > 10 ? 2 : 1;\n}\n\nfunction getExtraBytesScalarByteLength(dataType: number): number {\n if (dataType <= 2) return 1;\n if (dataType <= 4) return 2;\n if (dataType <= 6 || dataType === 9) return 4;\n if (dataType === 7 || dataType === 8 || dataType === 10) return 8;\n return 0;\n}\n\nfunction readExtraBytesValue(\n dataView: DataView,\n offset: number,\n scalarDataType: number\n): number | bigint {\n switch (scalarDataType) {\n case 1:\n return dataView.getUint8(offset);\n case 2:\n return dataView.getInt8(offset);\n case 3:\n return dataView.getUint16(offset, true);\n case 4:\n return dataView.getInt16(offset, true);\n case 5:\n return dataView.getUint32(offset, true);\n case 6:\n return dataView.getInt32(offset, true);\n case 7:\n return dataView.getBigUint64(offset, true);\n case 8:\n return dataView.getBigInt64(offset, true);\n case 9:\n return dataView.getFloat32(offset, true);\n case 10:\n return dataView.getFloat64(offset, true);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Allocate the typed-array representation for one LAS Extra Bytes scalar type. */\nexport function createLASTypedExtraBytesValue(\n scalarDataType: number,\n length: number,\n outputFloat64: boolean\n): LASTypedExtraBytesValue {\n if (outputFloat64 && scalarDataType !== 10) return new Float64Array(length);\n switch (scalarDataType) {\n case 1:\n return new Uint8Array(length);\n case 2:\n return new Int8Array(length);\n case 3:\n return new Uint16Array(length);\n case 4:\n return new Int16Array(length);\n case 5:\n return new Uint32Array(length);\n case 6:\n return new Int32Array(length);\n case 7:\n return new BigUint64Array(length);\n case 8:\n return new BigInt64Array(length);\n case 9:\n return new Float32Array(length);\n case 10:\n return new Float64Array(length);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Decode one descriptor component, retaining integer precision unless a transform is requested. */\nexport function populateLASTypedExtraBytesComponent(\n dataView: DataView,\n sourceOffset: number,\n attribute: LASTypedExtraBytesAttribute,\n targetOffset: number,\n componentIndex: number\n): void {\n const value = readExtraBytesValue(dataView, sourceOffset, attribute.scalarDataType);\n if (attribute.value instanceof BigInt64Array || attribute.value instanceof BigUint64Array) {\n attribute.value[targetOffset] = value as bigint;\n } else {\n attribute.value[targetOffset] =\n Number(value) * attribute.scales[componentIndex] + attribute.offsets[componentIndex];\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LASExtraBytesDescriptor} from './las-types';\n\n/** Typed-array values supported for LAS Extra Bytes Arrow attributes. */\nexport type LASTypedExtraBytesValue =\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/** Prepared typed LAS Extra Bytes attribute and its source-record layout. */\nexport type LASTypedExtraBytesAttribute = {\n /** Stable Arrow attribute name. */\n name: string;\n /** Typed output values. */\n value: LASTypedExtraBytesValue;\n /** Number of components per point. */\n size: number;\n /** LAS scalar data type code. */\n scalarDataType: number;\n /** Byte offset within the packed Extra Bytes record. */\n byteOffset: number;\n /** Total source byte length per point. */\n byteLength: number;\n /** Per-component scales. */\n scales: number[];\n /** Per-component offsets. */\n offsets: number[];\n /** Whether transformed integer values require Float64 output. */\n outputFloat64: boolean;\n};\n\n/** Parse the 192-byte descriptors in an LAS Extra Bytes VLR payload. */\nexport function parseLASExtraBytes(data: Uint8Array): LASExtraBytesDescriptor[] {\n if (data.byteLength % 192 !== 0) {\n throw new Error(`LAS Extra Bytes VLR length ${data.byteLength} is not a multiple of 192`);\n }\n const descriptors: LASExtraBytesDescriptor[] = [];\n const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n for (let descriptorOffset = 0; descriptorOffset < data.byteLength; descriptorOffset += 192) {\n const scales: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 112, true),\n dataView.getFloat64(descriptorOffset + 120, true),\n dataView.getFloat64(descriptorOffset + 128, true)\n ];\n const offsets: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 136, true),\n dataView.getFloat64(descriptorOffset + 144, true),\n dataView.getFloat64(descriptorOffset + 152, true)\n ];\n descriptors.push({\n dataType: data[descriptorOffset + 2],\n options: data[descriptorOffset + 3],\n name: readLASString(data, descriptorOffset + 4, 32),\n description: readLASString(data, descriptorOffset + 160, 32),\n scale: scales[0],\n offset: offsets[0],\n scales,\n offsets,\n data: data.slice(descriptorOffset, descriptorOffset + 192)\n });\n }\n return descriptors;\n}\n\n/** Allocate typed Arrow attributes described by an LAS Extra Bytes VLR. */\nexport function createLASTypedExtraBytesAttributes(\n pointCount: number,\n descriptors: readonly LASExtraBytesDescriptor[],\n extraByteCount: number\n): LASTypedExtraBytesAttribute[] {\n let byteOffset = 0;\n const usedNames = new Set<string>();\n const attributes: LASTypedExtraBytesAttribute[] = [];\n for (let descriptorIndex = 0; descriptorIndex < descriptors.length; descriptorIndex++) {\n const descriptor = descriptors[descriptorIndex];\n const scalarDataType = getExtraBytesScalarDataType(descriptor.dataType);\n const size = getExtraBytesComponentCount(descriptor.dataType);\n const scalarByteLength = getExtraBytesScalarByteLength(scalarDataType);\n const byteLength = scalarByteLength * size;\n if (descriptor.dataType < 1 || descriptor.dataType > 30 || !byteLength) {\n throw new Error(`Unsupported typed LAS Extra Bytes data type ${descriptor.dataType}`);\n }\n let name = `EXTRA_BYTES_${sanitizeExtraBytesName(descriptor.name)}`;\n if (name === 'EXTRA_BYTES_') {\n name = `EXTRA_BYTES_${descriptorIndex}`;\n }\n const baseName = name;\n let suffix = 1;\n while (usedNames.has(name)) {\n name = `${baseName}_${suffix++}`;\n }\n usedNames.add(name);\n const scales =\n descriptor.options & 0x08 ? descriptor.scales.slice(0, size) : new Array(size).fill(1);\n const offsets =\n descriptor.options & 0x10 ? descriptor.offsets.slice(0, size) : new Array(size).fill(0);\n const isBigInt = scalarDataType === 7 || scalarDataType === 8;\n const outputFloat64 =\n scalarDataType !== 10 &&\n (isBigInt\n ? scales.some(scale => scale !== 1) || offsets.some(offset => offset !== 0)\n : Boolean(descriptor.options & 0x18));\n attributes.push({\n name,\n value: createLASTypedExtraBytesValue(scalarDataType, pointCount * size, outputFloat64),\n size,\n scalarDataType,\n byteOffset,\n byteLength,\n outputFloat64,\n scales,\n offsets\n });\n byteOffset += byteLength;\n }\n if (byteOffset !== extraByteCount) {\n throw new Error(\n `LAS Extra Bytes descriptors use ${byteOffset} bytes; point records provide ${extraByteCount}`\n );\n }\n return attributes;\n}\n\n/** Populate typed attributes from packed Extra Bytes records. */\nexport function populateLASTypedExtraBytes(\n rawExtraBytes: Uint8Array,\n pointCount: number,\n extraByteCount: number,\n attributes: readonly LASTypedExtraBytesAttribute[]\n): void {\n if (rawExtraBytes.byteLength < pointCount * extraByteCount) {\n throw new Error('Packed LAS Extra Bytes data is truncated');\n }\n const dataView = new DataView(\n rawExtraBytes.buffer,\n rawExtraBytes.byteOffset,\n rawExtraBytes.byteLength\n );\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n const recordOffset = pointIndex * extraByteCount;\n for (const attribute of attributes) {\n const targetOffset = pointIndex * attribute.size;\n const sourceOffset = recordOffset + attribute.byteOffset;\n const scalarByteLength = getExtraBytesScalarByteLength(attribute.scalarDataType);\n for (let componentIndex = 0; componentIndex < attribute.size; componentIndex++) {\n populateLASTypedExtraBytesComponent(\n dataView,\n sourceOffset + componentIndex * scalarByteLength,\n attribute,\n targetOffset + componentIndex,\n componentIndex\n );\n }\n }\n }\n}\n\nfunction readLASString(bytes: Uint8Array, offset: number, length: number): string {\n const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));\n let end = decoded.length;\n while (end > 0 && decoded[end - 1] === '\\0') {\n end--;\n }\n return decoded.slice(0, end).trim();\n}\n\nfunction sanitizeExtraBytesName(name: string): string {\n return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');\n}\n\nfunction getExtraBytesScalarDataType(dataType: number): number {\n return dataType > 20 ? dataType - 20 : dataType > 10 ? dataType - 10 : dataType;\n}\n\nfunction getExtraBytesComponentCount(dataType: number): number {\n return dataType > 20 ? 3 : dataType > 10 ? 2 : 1;\n}\n\nfunction getExtraBytesScalarByteLength(dataType: number): number {\n if (dataType <= 2) return 1;\n if (dataType <= 4) return 2;\n if (dataType <= 6 || dataType === 9) return 4;\n if (dataType === 7 || dataType === 8 || dataType === 10) return 8;\n return 0;\n}\n\nfunction readExtraBytesValue(\n dataView: DataView,\n offset: number,\n scalarDataType: number\n): number | bigint {\n switch (scalarDataType) {\n case 1:\n return dataView.getUint8(offset);\n case 2:\n return dataView.getInt8(offset);\n case 3:\n return dataView.getUint16(offset, true);\n case 4:\n return dataView.getInt16(offset, true);\n case 5:\n return dataView.getUint32(offset, true);\n case 6:\n return dataView.getInt32(offset, true);\n case 7:\n return dataView.getBigUint64(offset, true);\n case 8:\n return dataView.getBigInt64(offset, true);\n case 9:\n return dataView.getFloat32(offset, true);\n case 10:\n return dataView.getFloat64(offset, true);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Allocate the typed-array representation for one LAS Extra Bytes scalar type. */\nexport function createLASTypedExtraBytesValue(\n scalarDataType: number,\n length: number,\n outputFloat64: boolean\n): LASTypedExtraBytesValue {\n if (outputFloat64 && scalarDataType !== 10) return new Float64Array(length);\n switch (scalarDataType) {\n case 1:\n return new Uint8Array(length);\n case 2:\n return new Int8Array(length);\n case 3:\n return new Uint16Array(length);\n case 4:\n return new Int16Array(length);\n case 5:\n return new Uint32Array(length);\n case 6:\n return new Int32Array(length);\n case 7:\n return new BigUint64Array(length);\n case 8:\n return new BigInt64Array(length);\n case 9:\n return new Float32Array(length);\n case 10:\n return new Float64Array(length);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Decode one descriptor component, retaining integer precision unless a transform is requested. */\nexport function populateLASTypedExtraBytesComponent(\n dataView: DataView,\n sourceOffset: number,\n attribute: LASTypedExtraBytesAttribute,\n targetOffset: number,\n componentIndex: number\n): void {\n const value = readExtraBytesValue(dataView, sourceOffset, attribute.scalarDataType);\n if (attribute.value instanceof BigInt64Array || attribute.value instanceof BigUint64Array) {\n attribute.value[targetOffset] = value as bigint;\n } else {\n attribute.value[targetOffset] =\n Number(value) * attribute.scales[componentIndex] + attribute.offsets[componentIndex];\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"las-extra-bytes.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,uBAAuB,EAAC,uBAAoB;AAEzD,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB,EAAE,CA8B9E;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,SAAS,uBAAuB,EAAE,EAC/C,cAAc,EAAE,MAAM,GACrB,2BAA2B,EAAE,CAoD/B;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,IAAI,CA0BN;AA4DD,mFAAmF;AACnF,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,uBAAuB,CA0BzB;AAED,oGAAoG;AACpG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,IAAI,CAQN"}
1
+ {"version":3,"file":"las-extra-bytes.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,uBAAuB,EAAC,uBAAoB;AAEzD,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB,EAAE,CA8B9E;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,SAAS,uBAAuB,EAAE,EAC/C,cAAc,EAAE,MAAM,GACrB,2BAA2B,EAAE,CAoD/B;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,IAAI,CA0BN;AA8DD,mFAAmF;AACnF,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,uBAAuB,CA0BzB;AAED,oGAAoG;AACpG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,IAAI,CAQN"}
@@ -101,10 +101,12 @@ export function populateLASTypedExtraBytes(rawExtraBytes, pointCount, extraByteC
101
101
  }
102
102
  }
103
103
  function readLASString(bytes, offset, length) {
104
- return new TextDecoder()
105
- .decode(bytes.subarray(offset, offset + length))
106
- .replace(/\0+$/, '')
107
- .trim();
104
+ const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));
105
+ let end = decoded.length;
106
+ while (end > 0 && decoded[end - 1] === '\0') {
107
+ end--;
108
+ }
109
+ return decoded.slice(0, end).trim();
108
110
  }
109
111
  function sanitizeExtraBytesName(name) {
110
112
  return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');
@@ -1 +1 @@
1
- {"version":3,"file":"las-extra-bytes.js","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"las-extra-bytes.js","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"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"}