@loaders.gl/las 3.4.0-alpha.2 → 3.4.0-alpha.4

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.
package/dist/es5/index.js CHANGED
@@ -23,14 +23,12 @@ var LASLoader = _objectSpread(_objectSpread({}, _lasLoader.LASLoader), {}, {
23
23
  parse: function () {
24
24
  var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
25
25
  return _regenerator.default.wrap(function _callee$(_context) {
26
- while (1) {
27
- switch (_context.prev = _context.next) {
28
- case 0:
29
- return _context.abrupt("return", (0, _parseLas.default)(arrayBuffer, options));
30
- case 1:
31
- case "end":
32
- return _context.stop();
33
- }
26
+ while (1) switch (_context.prev = _context.next) {
27
+ case 0:
28
+ return _context.abrupt("return", (0, _parseLas.default)(arrayBuffer, options));
29
+ case 1:
30
+ case "end":
31
+ return _context.stop();
34
32
  }
35
33
  }, _callee);
36
34
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["LASLoader","LASWorkerLoader","parse","arrayBuffer","options","parseLAS","parseSync","_typecheckLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {LASLoaderOptions} from './las-loader';\nimport {LASLoader as LASWorkerLoader} from './las-loader';\nimport parseLAS from './lib/parse-las';\n\n// LASLoader\n\nexport type {LASLoaderOptions};\nexport {LASWorkerLoader};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n ...LASWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options),\n parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options)\n};\n\nexport const _typecheckLoader: LoaderWithParser = LASLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA;AACA;AAAuC;AAAA;AAUhC,IAAMA,SAAS,mCACjBC,oBAAe;EAClBC,KAAK;IAAA,uEAAE,iBAAOC,WAAwB,EAAEC,OAA0B;MAAA;QAAA;UAAA;YAAA;cAAA,iCAChE,IAAAC,iBAAQ,EAACF,WAAW,EAAEC,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EAChCE,SAAS,EAAE,mBAACH,WAAwB,EAAEC,OAA0B;IAAA,OAC9D,IAAAC,iBAAQ,EAACF,WAAW,EAAEC,OAAO,CAAC;EAAA;AAAA,EACjC;AAAC;AAEK,IAAMG,gBAAkC,GAAGP,SAAS;AAAC"}
1
+ {"version":3,"file":"index.js","names":["_lasLoader","require","_parseLas","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","LASLoader","LASWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseLAS","stop","_x","_x2","parseSync","exports","_typecheckLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {LASLoaderOptions} from './las-loader';\nimport {LASLoader as LASWorkerLoader} from './las-loader';\nimport parseLAS from './lib/parse-las';\n\n// LASLoader\n\nexport type {LASLoaderOptions};\nexport {LASWorkerLoader};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n ...LASWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options),\n parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options)\n};\n\nexport const _typecheckLoader: LoaderWithParser = LASLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAUhC,IAAMY,SAAS,GAAAb,aAAA,CAAAA,aAAA,KACjBc,oBAAe;EAClBC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAR,OAAA,EAAAS,YAAA,CAAAT,OAAA,CAAAU,IAAA,CAAE,SAAAC,QAAOC,WAAwB,EAAEC,OAA0B;MAAA,OAAAJ,YAAA,CAAAT,OAAA,CAAAc,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAChE,IAAAC,iBAAQ,EAACR,WAAW,EAAEC,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAV,OAAA;IAAA;IAAA,SAAAL,MAAAgB,EAAA,EAAAC,GAAA;MAAA,OAAAhB,MAAA,CAAAjB,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAY,KAAA;EAAA;EAChCkB,SAAS,EAAE,SAAAA,UAACZ,WAAwB,EAAEC,OAA0B;IAAA,OAC9D,IAAAO,iBAAQ,EAACR,WAAW,EAAEC,OAAO,CAAC;EAAA;AAAA,EACjC;AAACY,OAAA,CAAArB,SAAA,GAAAA,SAAA;AAEK,IAAMsB,gBAAkC,GAAGtB,SAAS;AAACqB,OAAA,CAAAC,gBAAA,GAAAA,gBAAA"}
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports._typecheckLoader = exports.LASLoader = void 0;
7
-
8
- var VERSION = typeof "3.4.0-alpha.2" !== 'undefined' ? "3.4.0-alpha.2" : 'latest';
7
+ var VERSION = typeof "3.4.0-alpha.4" !== 'undefined' ? "3.4.0-alpha.4" : 'latest';
9
8
  var DEFAULT_LAS_OPTIONS = {
10
9
  las: {
11
10
  shape: 'mesh',
@@ -14,7 +13,6 @@ var DEFAULT_LAS_OPTIONS = {
14
13
  colorDepth: 8
15
14
  }
16
15
  };
17
-
18
16
  var LASLoader = {
19
17
  name: 'LAS',
20
18
  id: 'las',
@@ -1 +1 @@
1
- {"version":3,"file":"las-loader.js","names":["VERSION","DEFAULT_LAS_OPTIONS","las","shape","fp64","skip","colorDepth","LASLoader","name","id","module","version","worker","extensions","mimeTypes","text","binary","tests","options","_typecheckLoader"],"sources":["../../src/las-loader.ts"],"sourcesContent":["// LASER (LAS) FILE FORMAT\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type LASLoaderOptions = LoaderOptions & {\n las?: {\n shape?: 'mesh' | 'columnar-table' | 'arrow-table';\n fp64?: boolean;\n skip?: number;\n colorDepth?: number | string;\n };\n onProgress?: Function;\n};\n\nconst DEFAULT_LAS_OPTIONS: LASLoaderOptions = {\n las: {\n shape: 'mesh',\n fp64: false,\n skip: 1,\n colorDepth: 8\n }\n};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n name: 'LAS',\n id: 'las',\n module: 'las',\n version: VERSION,\n worker: true,\n extensions: ['las', 'laz'], // LAZ is the \"compressed\" flavor of LAS,\n mimeTypes: ['application/octet-stream'], // TODO - text version?\n text: true,\n binary: true,\n tests: ['LAS'],\n options: DEFAULT_LAS_OPTIONS\n};\n\nexport const _typecheckLoader: Loader = LASLoader;\n"],"mappings":";;;;;;;AAKA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAY3E,IAAMC,mBAAqC,GAAG;EAC5CC,GAAG,EAAE;IACHC,KAAK,EAAE,MAAM;IACbC,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd;AACF,CAAC;;AAKM,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;EAC1BC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,OAAO,EAAEjB;AACX,CAAC;AAAC;AAEK,IAAMkB,gBAAwB,GAAGZ,SAAS;AAAC"}
1
+ {"version":3,"file":"las-loader.js","names":["VERSION","DEFAULT_LAS_OPTIONS","las","shape","fp64","skip","colorDepth","LASLoader","name","id","module","version","worker","extensions","mimeTypes","text","binary","tests","options","exports","_typecheckLoader"],"sources":["../../src/las-loader.ts"],"sourcesContent":["// LASER (LAS) FILE FORMAT\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type LASLoaderOptions = LoaderOptions & {\n las?: {\n shape?: 'mesh' | 'columnar-table' | 'arrow-table';\n fp64?: boolean;\n skip?: number;\n colorDepth?: number | string;\n };\n onProgress?: Function;\n};\n\nconst DEFAULT_LAS_OPTIONS: LASLoaderOptions = {\n las: {\n shape: 'mesh',\n fp64: false,\n skip: 1,\n colorDepth: 8\n }\n};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n name: 'LAS',\n id: 'las',\n module: 'las',\n version: VERSION,\n worker: true,\n extensions: ['las', 'laz'], // LAZ is the \"compressed\" flavor of LAS,\n mimeTypes: ['application/octet-stream'], // TODO - text version?\n text: true,\n binary: true,\n tests: ['LAS'],\n options: DEFAULT_LAS_OPTIONS\n};\n\nexport const _typecheckLoader: Loader = LASLoader;\n"],"mappings":";;;;;;AAKA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAY3E,IAAMC,mBAAqC,GAAG;EAC5CC,GAAG,EAAE;IACHC,KAAK,EAAE,MAAM;IACbC,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd;AACF,CAAC;AAKM,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;EAC1BC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,OAAO,EAAEjB;AACX,CAAC;AAACkB,OAAA,CAAAZ,SAAA,GAAAA,SAAA;AAEK,IAAMa,gBAAwB,GAAGb,SAAS;AAACY,OAAA,CAAAC,gBAAA,GAAAA,gBAAA"}
@@ -11,7 +11,6 @@ function getLASSchema(lasHeader, attributes) {
11
11
  var schema = (0, _schema.deduceMeshSchema)(attributes, metadataMap);
12
12
  return schema;
13
13
  }
14
-
15
14
  function makeMetadataFromLasHeader(lasHeader) {
16
15
  var metadataMap = new Map();
17
16
  metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));
@@ -1 +1 @@
1
- {"version":3,"file":"get-las-schema.js","names":["getLASSchema","lasHeader","attributes","metadataMap","makeMetadataFromLasHeader","schema","deduceMeshSchema","Map","set","pointsOffset","toString","pointsFormatId","pointsStructSize","pointsCount","JSON","stringify","scale","offset","maxs","undefined","mins","totalToRead","totalRead","versionAsString","isCompressed"],"sources":["../../../src/lib/get-las-schema.ts"],"sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {LASHeader} from './las-types';\n\n/**\n * Gets schema from PLY 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): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));\n metadataMap.set('las_pointsFormatId', lasHeader.pointsFormatId.toString(10));\n metadataMap.set('las_pointsStructSize', lasHeader.pointsStructSize.toString(10));\n metadataMap.set('las_pointsCount', lasHeader.pointsCount.toString(10));\n metadataMap.set('las_scale', JSON.stringify(lasHeader.scale));\n metadataMap.set('las_offset', JSON.stringify(lasHeader.offset));\n if (lasHeader.maxs !== undefined) {\n metadataMap.set('las_maxs', JSON.stringify(lasHeader.maxs));\n }\n if (lasHeader.mins !== undefined) {\n metadataMap.set('las_mins', JSON.stringify(lasHeader.mins));\n }\n metadataMap.set('las_totalToRead', lasHeader.totalToRead.toString(10));\n metadataMap.set('las_pointsFortotalReadmatId', lasHeader.totalRead.toString(10));\n if (lasHeader.versionAsString !== undefined) {\n metadataMap.set('las_versionAsString', lasHeader.versionAsString);\n }\n if (lasHeader.isCompressed !== undefined) {\n metadataMap.set('las_isCompressed', lasHeader.isCompressed.toString());\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;;AAAA;AASO,SAASA,YAAY,CAACC,SAAoB,EAAEC,UAA0B,EAAU;EACrF,IAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAS,CAAC;EACxD,IAAMI,MAAM,GAAG,IAAAC,wBAAgB,EAACJ,UAAU,EAAEC,WAAW,CAAC;EACxD,OAAOE,MAAM;AACf;;AAOO,SAASD,yBAAyB,CAACH,SAAoB,EAAuB;EACnF,IAAME,WAAW,GAAG,IAAII,GAAG,EAAE;EAC7BJ,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACQ,YAAY,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACxEP,WAAW,CAACK,GAAG,CAAC,oBAAoB,EAAEP,SAAS,CAACU,cAAc,CAACD,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC5EP,WAAW,CAACK,GAAG,CAAC,sBAAsB,EAAEP,SAAS,CAACW,gBAAgB,CAACF,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChFP,WAAW,CAACK,GAAG,CAAC,iBAAiB,EAAEP,SAAS,CAACY,WAAW,CAACH,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEP,WAAW,CAACK,GAAG,CAAC,WAAW,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACe,KAAK,CAAC,CAAC;EAC7Db,WAAW,CAACK,GAAG,CAAC,YAAY,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACgB,MAAM,CAAC,CAAC;EAC/D,IAAIhB,SAAS,CAACiB,IAAI,KAAKC,SAAS,EAAE;IAChChB,WAAW,CAACK,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACiB,IAAI,CAAC,CAAC;EAC7D;EACA,IAAIjB,SAAS,CAACmB,IAAI,KAAKD,SAAS,EAAE;IAChChB,WAAW,CAACK,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACmB,IAAI,CAAC,CAAC;EAC7D;EACAjB,WAAW,CAACK,GAAG,CAAC,iBAAiB,EAAEP,SAAS,CAACoB,WAAW,CAACX,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEP,WAAW,CAACK,GAAG,CAAC,6BAA6B,EAAEP,SAAS,CAACqB,SAAS,CAACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChF,IAAIT,SAAS,CAACsB,eAAe,KAAKJ,SAAS,EAAE;IAC3ChB,WAAW,CAACK,GAAG,CAAC,qBAAqB,EAAEP,SAAS,CAACsB,eAAe,CAAC;EACnE;EACA,IAAItB,SAAS,CAACuB,YAAY,KAAKL,SAAS,EAAE;IACxChB,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACuB,YAAY,CAACd,QAAQ,EAAE,CAAC;EACxE;EACA,OAAOP,WAAW;AACpB"}
1
+ {"version":3,"file":"get-las-schema.js","names":["_schema","require","getLASSchema","lasHeader","attributes","metadataMap","makeMetadataFromLasHeader","schema","deduceMeshSchema","Map","set","pointsOffset","toString","pointsFormatId","pointsStructSize","pointsCount","JSON","stringify","scale","offset","maxs","undefined","mins","totalToRead","totalRead","versionAsString","isCompressed"],"sources":["../../../src/lib/get-las-schema.ts"],"sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {LASHeader} from './las-types';\n\n/**\n * Gets schema from PLY 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): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));\n metadataMap.set('las_pointsFormatId', lasHeader.pointsFormatId.toString(10));\n metadataMap.set('las_pointsStructSize', lasHeader.pointsStructSize.toString(10));\n metadataMap.set('las_pointsCount', lasHeader.pointsCount.toString(10));\n metadataMap.set('las_scale', JSON.stringify(lasHeader.scale));\n metadataMap.set('las_offset', JSON.stringify(lasHeader.offset));\n if (lasHeader.maxs !== undefined) {\n metadataMap.set('las_maxs', JSON.stringify(lasHeader.maxs));\n }\n if (lasHeader.mins !== undefined) {\n metadataMap.set('las_mins', JSON.stringify(lasHeader.mins));\n }\n metadataMap.set('las_totalToRead', lasHeader.totalToRead.toString(10));\n metadataMap.set('las_pointsFortotalReadmatId', lasHeader.totalRead.toString(10));\n if (lasHeader.versionAsString !== undefined) {\n metadataMap.set('las_versionAsString', lasHeader.versionAsString);\n }\n if (lasHeader.isCompressed !== undefined) {\n metadataMap.set('las_isCompressed', lasHeader.isCompressed.toString());\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AASO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,UAA0B,EAAU;EACrF,IAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAS,CAAC;EACxD,IAAMI,MAAM,GAAG,IAAAC,wBAAgB,EAACJ,UAAU,EAAEC,WAAW,CAAC;EACxD,OAAOE,MAAM;AACf;AAOO,SAASD,yBAAyBA,CAACH,SAAoB,EAAuB;EACnF,IAAME,WAAW,GAAG,IAAII,GAAG,CAAC,CAAC;EAC7BJ,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACQ,YAAY,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACxEP,WAAW,CAACK,GAAG,CAAC,oBAAoB,EAAEP,SAAS,CAACU,cAAc,CAACD,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC5EP,WAAW,CAACK,GAAG,CAAC,sBAAsB,EAAEP,SAAS,CAACW,gBAAgB,CAACF,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChFP,WAAW,CAACK,GAAG,CAAC,iBAAiB,EAAEP,SAAS,CAACY,WAAW,CAACH,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEP,WAAW,CAACK,GAAG,CAAC,WAAW,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACe,KAAK,CAAC,CAAC;EAC7Db,WAAW,CAACK,GAAG,CAAC,YAAY,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACgB,MAAM,CAAC,CAAC;EAC/D,IAAIhB,SAAS,CAACiB,IAAI,KAAKC,SAAS,EAAE;IAChChB,WAAW,CAACK,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACiB,IAAI,CAAC,CAAC;EAC7D;EACA,IAAIjB,SAAS,CAACmB,IAAI,KAAKD,SAAS,EAAE;IAChChB,WAAW,CAACK,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACd,SAAS,CAACmB,IAAI,CAAC,CAAC;EAC7D;EACAjB,WAAW,CAACK,GAAG,CAAC,iBAAiB,EAAEP,SAAS,CAACoB,WAAW,CAACX,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEP,WAAW,CAACK,GAAG,CAAC,6BAA6B,EAAEP,SAAS,CAACqB,SAAS,CAACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChF,IAAIT,SAAS,CAACsB,eAAe,KAAKJ,SAAS,EAAE;IAC3ChB,WAAW,CAACK,GAAG,CAAC,qBAAqB,EAAEP,SAAS,CAACsB,eAAe,CAAC;EACnE;EACA,IAAItB,SAAS,CAACuB,YAAY,KAAKL,SAAS,EAAE;IACxChB,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACuB,YAAY,CAACd,QAAQ,CAAC,CAAC,CAAC;EACxE;EACA,OAAOP,WAAW;AACpB"}
@@ -9,7 +9,6 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _lazPerf = _interopRequireDefault(require("./libs/laz-perf"));
12
-
13
12
  var Module = null;
14
13
  var POINT_FORMAT_READERS = {
15
14
  0: function _(dv) {
@@ -43,7 +42,6 @@ var POINT_FORMAT_READERS = {
43
42
  };
44
43
  }
45
44
  };
46
-
47
45
  function readAs(buf) {
48
46
  var Type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
49
47
  var offset = arguments.length > 2 ? arguments[2] : undefined;
@@ -60,7 +58,6 @@ function readAs(buf) {
60
58
  }
61
59
  return ret;
62
60
  }
63
-
64
61
  function parseLASHeader(arraybuffer) {
65
62
  var start = 32 * 3 + 35;
66
63
  var o = {
@@ -79,7 +76,6 @@ function parseLASHeader(arraybuffer) {
79
76
  o.mins = [bounds[1], bounds[3], bounds[5]];
80
77
  return o;
81
78
  }
82
-
83
79
  var LASLoader = function () {
84
80
  function LASLoader(arraybuffer) {
85
81
  (0, _classCallCheck2.default)(this, LASLoader);
@@ -101,25 +97,20 @@ var LASLoader = function () {
101
97
  });
102
98
  this.arraybuffer = arraybuffer;
103
99
  }
104
-
105
100
  (0, _createClass2.default)(LASLoader, [{
106
101
  key: "open",
107
- value:
108
- function open() {
102
+ value: function open() {
109
103
  return true;
110
104
  }
111
105
  }, {
112
106
  key: "getHeader",
113
- value:
114
- function getHeader() {
107
+ value: function getHeader() {
115
108
  this.header = parseLASHeader(this.arraybuffer);
116
109
  return this.header;
117
110
  }
118
-
119
111
  }, {
120
112
  key: "readData",
121
- value:
122
- function readData(count, skip) {
113
+ value: function readData(count, skip) {
123
114
  var header = this.header,
124
115
  arraybuffer = this.arraybuffer;
125
116
  if (!header) {
@@ -161,8 +152,7 @@ var LASLoader = function () {
161
152
  }
162
153
  }, {
163
154
  key: "close",
164
- value:
165
- function close() {
155
+ value: function close() {
166
156
  this.arraybuffer = null;
167
157
  return true;
168
158
  }
@@ -170,7 +160,6 @@ var LASLoader = function () {
170
160
  return LASLoader;
171
161
  }();
172
162
  var LAZLoader = function () {
173
-
174
163
  function LAZLoader(arraybuffer) {
175
164
  (0, _classCallCheck2.default)(this, LAZLoader);
176
165
  (0, _defineProperty2.default)(this, "arraybuffer", void 0);
@@ -181,11 +170,9 @@ var LAZLoader = function () {
181
170
  Module = (0, _lazPerf.default)();
182
171
  }
183
172
  }
184
-
185
173
  (0, _createClass2.default)(LAZLoader, [{
186
174
  key: "open",
187
- value:
188
- function open() {
175
+ value: function open() {
189
176
  try {
190
177
  var arraybuffer = this.arraybuffer;
191
178
  this.instance = new Module.LASZip();
@@ -218,8 +205,7 @@ var LAZLoader = function () {
218
205
  }
219
206
  }, {
220
207
  key: "readData",
221
- value:
222
- function readData(count, offset, skip) {
208
+ value: function readData(count, offset, skip) {
223
209
  if (!this.instance) {
224
210
  throw new Error('You need to open the file before trying to read stuff');
225
211
  }
@@ -252,11 +238,9 @@ var LAZLoader = function () {
252
238
  throw new Error("Failed to read data: ".concat(error.message));
253
239
  }
254
240
  }
255
-
256
241
  }, {
257
242
  key: "close",
258
- value:
259
- function close() {
243
+ value: function close() {
260
244
  try {
261
245
  if (this.instance !== null) {
262
246
  this.instance.delete();
@@ -290,11 +274,9 @@ var LASDecoder = function () {
290
274
  this.mins = header.mins;
291
275
  this.maxs = header.maxs;
292
276
  }
293
-
294
277
  (0, _createClass2.default)(LASDecoder, [{
295
278
  key: "getPoint",
296
- value:
297
- function getPoint(index) {
279
+ value: function getPoint(index) {
298
280
  if (index < 0 || index >= this.pointsCount) {
299
281
  throw new Error('Point index out of range');
300
282
  }
@@ -324,11 +306,9 @@ var LASFile = function () {
324
306
  }
325
307
  this.loader = this.isCompressed ? new LAZLoader(this.arraybuffer) : new LASLoader(this.arraybuffer);
326
308
  }
327
-
328
309
  (0, _createClass2.default)(LASFile, [{
329
310
  key: "determineFormat",
330
- value:
331
- function determineFormat() {
311
+ value: function determineFormat() {
332
312
  var formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);
333
313
  var bit7 = (formatId & 0x80) >> 7;
334
314
  var bit6 = (formatId & 0x40) >> 6;
@@ -338,51 +318,41 @@ var LASFile = function () {
338
318
  this.formatId = formatId & 0x3f;
339
319
  this.isCompressed = bit7 === 1 || bit6 === 1;
340
320
  }
341
-
342
321
  }, {
343
322
  key: "determineVersion",
344
- value:
345
- function determineVersion() {
323
+ value: function determineVersion() {
346
324
  var ver = new Int8Array(this.arraybuffer, 24, 2);
347
325
  this.version = ver[0] * 10 + ver[1];
348
326
  this.versionAsString = "".concat(ver[0], ".").concat(ver[1]);
349
327
  return this.version;
350
328
  }
351
-
352
329
  }, {
353
330
  key: "open",
354
- value:
355
- function open() {
331
+ value: function open() {
356
332
  if (this.loader.open()) {
357
333
  this.isOpen = true;
358
334
  }
359
335
  }
360
336
  }, {
361
337
  key: "getHeader",
362
- value:
363
- function getHeader() {
338
+ value: function getHeader() {
364
339
  return this.loader.getHeader();
365
340
  }
366
-
367
341
  }, {
368
342
  key: "readData",
369
- value:
370
- function readData(count, start, skip) {
343
+ value: function readData(count, start, skip) {
371
344
  return this.loader.readData(count, start, skip);
372
345
  }
373
-
374
346
  }, {
375
347
  key: "close",
376
- value:
377
- function close() {
348
+ value: function close() {
378
349
  if (this.loader.close()) {
379
350
  this.isOpen = false;
380
351
  }
381
352
  }
382
353
  }, {
383
354
  key: "getUnpacker",
384
- value:
385
- function getUnpacker() {
355
+ value: function getUnpacker() {
386
356
  return LASDecoder;
387
357
  }
388
358
  }]);
@@ -390,6 +360,5 @@ var LASFile = function () {
390
360
  }();
391
361
  exports.LASFile = LASFile;
392
362
  var LASModuleWasLoaded = false;
393
-
394
363
  exports.LASModuleWasLoaded = LASModuleWasLoaded;
395
364
  //# sourceMappingURL=laslaz-decoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"laslaz-decoder.js","names":["Module","POINT_FORMAT_READERS","dv","position","getInt32","intensity","getUint16","classification","getUint8","color","readAs","buf","Type","offset","count","undefined","sub","slice","BYTES_PER_ELEMENT","r","ret","i","push","parseLASHeader","arraybuffer","start","o","pointsOffset","Uint32Array","pointsFormatId","Uint8Array","pointsStructSize","Uint16Array","pointsCount","scale","Float64Array","bounds","maxs","mins","LASLoader","totalToRead","totalRead","versionAsString","isCompressed","header","skip","Error","readOffset","Math","min","end","buffer","hasMoreData","pointsToRead","bufferSize","ceil","pointsRead","src","set","LAZLoader","getModule","instance","LASZip","abInt","_malloc","byteLength","HEAPU8","open","error","message","thisBuf","bufRead","getPoint","a","delete","LASDecoder","len","arrayb","decoder","pointSize","index","DataView","LASFile","determineVersion","determineFormat","formatId","loader","bit7","bit6","ver","Int8Array","version","isOpen","getHeader","readData","close","LASModuleWasLoaded"],"sources":["../../../src/lib/laslaz-decoder.ts"],"sourcesContent":["/*\n Modified from Uday Verma and Howard Butler's plasio\n https://github.com/verma/plasio/\n MIT License\n*/\n// laslaz.js - treat as compiled code\nimport type {LASHeader} from './las-types';\nimport getModule from './libs/laz-perf';\n\nlet Module: any = null;\n\ntype LASReader = (dv: DataView) => {\n [LASAttribute: string]: number | number[];\n};\n\ntype LASReaders = {\n [key: number]: LASReader;\n};\n\ntype LASData = {\n buffer: ArrayBuffer;\n count: number;\n hasMoreData: boolean;\n};\n\nconst POINT_FORMAT_READERS: LASReaders = {\n 0: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 1: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 2: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]\n };\n },\n 3: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]\n };\n }\n};\n\n/**\n * Reads incoming binary data depends on the Type parameter\n * @param buf\n * @param Type\n * @param offset\n * @param count\n * @returns number | number[] from incoming binary data\n */\nfunction readAs(buf: ArrayBuffer, Type: any = {}, offset: number, count?: number) {\n count = count === undefined || count === 0 ? 1 : count;\n const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);\n\n const r = new Type(sub);\n if (count === 1) {\n return r[0];\n }\n\n const ret: number[] = [];\n for (let i = 0; i < count; i++) {\n ret.push(r[i]);\n }\n\n return ret;\n}\n\n/**\n * Parsing of header's attributes\n * @param arraybuffer\n * @returns header as LASHeader\n */\nfunction parseLASHeader(arraybuffer: ArrayBuffer): LASHeader {\n let start = 32 * 3 + 35;\n\n const o: Partial<LASHeader> = {\n pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),\n pointsFormatId: readAs(arraybuffer, Uint8Array, 32 * 3 + 8),\n pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),\n pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),\n scale: readAs(arraybuffer, Float64Array, start, 3)\n };\n start += 24; // 8*3\n o.offset = readAs(arraybuffer, Float64Array, start, 3);\n start += 24;\n\n const bounds = readAs(arraybuffer, Float64Array, start, 6);\n start += 48; // 8*6;\n o.maxs = [bounds[0], bounds[2], bounds[4]];\n o.mins = [bounds[1], bounds[3], bounds[5]];\n\n return o as LASHeader;\n}\n\n// LAS Loader\n// Loads uncompressed files\n//\nclass LASLoader {\n arraybuffer: ArrayBuffer;\n readOffset: number = 0;\n header: LASHeader = {\n pointsOffset: 0,\n pointsFormatId: 0,\n pointsStructSize: 0,\n pointsCount: 0,\n scale: [0, 0, 0],\n offset: [0, 0, 0],\n maxs: [0],\n mins: [0],\n totalToRead: 0,\n totalRead: 0,\n versionAsString: '',\n isCompressed: true\n };\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n }\n\n /**\n * @returns boolean\n */\n open() {\n // Nothing needs to be done to open this\n return true;\n }\n /**\n * Parsing of incoming binary\n * @returns LASHeader\n */\n getHeader() {\n this.header = parseLASHeader(this.arraybuffer);\n return this.header;\n }\n\n /**\n * Reading data\n * @param count\n * @param skip\n * @returns new ArrayBuffer, count, hasMoreData\n */\n readData(count: number, skip: number) {\n const {header, arraybuffer} = this;\n if (!header) {\n throw new Error('Cannot start reading data till a header request is issued');\n }\n\n let {readOffset} = this;\n let start: number;\n\n if (skip <= 1) {\n count = Math.min(count, header.pointsCount - readOffset);\n start = header.pointsOffset + readOffset * header.pointsStructSize;\n const end = start + count * header.pointsStructSize;\n readOffset += count;\n this.readOffset = readOffset;\n return {\n buffer: arraybuffer.slice(start, end),\n count,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n\n const pointsToRead = Math.min(count * skip, header.pointsCount - readOffset);\n const bufferSize = Math.ceil(pointsToRead / skip);\n let pointsRead = 0;\n\n const buf = new Uint8Array(bufferSize * header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n if (i % skip === 0) {\n start = header.pointsOffset + readOffset * header.pointsStructSize;\n const src = new Uint8Array(arraybuffer, start, header.pointsStructSize);\n\n buf.set(src, pointsRead * header.pointsStructSize);\n pointsRead++;\n }\n\n readOffset++;\n }\n this.readOffset = readOffset;\n\n return {\n buffer: buf.buffer,\n count: pointsRead,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n /**\n * Method which brings data to null to close the file\n * @returns\n */\n close() {\n // @ts-ignore Possibly null\n this.arraybuffer = null;\n return true;\n }\n}\n\n/**\n * LAZ Loader\n * Uses NaCL module to load LAZ files\n */\nclass LAZLoader {\n arraybuffer: ArrayBuffer;\n instance: any = null; // LASZip instance\n header: LASHeader | null = null;\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (!Module) {\n // Avoid executing laz-perf on import\n Module = getModule();\n }\n }\n\n /**\n * Opens the file\n * @returns boolean\n */\n open(): boolean {\n try {\n const {arraybuffer} = this;\n this.instance = new Module.LASZip();\n const abInt = new Uint8Array(arraybuffer);\n const buf = Module._malloc(arraybuffer.byteLength);\n\n this.instance.arraybuffer = arraybuffer;\n this.instance.buf = buf;\n Module.HEAPU8.set(abInt, buf);\n this.instance.open(buf, arraybuffer.byteLength);\n\n this.instance.readOffset = 0;\n\n return true;\n } catch (error) {\n throw new Error(`Failed to open file: ${(error as Error).message}`);\n }\n }\n\n getHeader(): LASHeader {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read header');\n }\n\n try {\n const header = parseLASHeader(this.instance.arraybuffer);\n header.pointsFormatId &= 0x3f;\n this.header = header;\n return header;\n } catch (error) {\n throw new Error(`Failed to get header: ${(error as Error).message}`);\n }\n }\n /**\n * @param count\n * @param offset\n * @param skip\n * @returns Data\n */\n readData(count: number, offset: number, skip: number): LASData {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read stuff');\n }\n\n const {header, instance} = this;\n\n if (!header) {\n throw new Error(\n 'You need to query header before reading, I maintain state that way, sorry :('\n );\n }\n\n try {\n const pointsToRead = Math.min(count * skip, header.pointsCount - instance.readOffset);\n const bufferSize = Math.ceil(pointsToRead / skip);\n let pointsRead = 0;\n\n const thisBuf = new Uint8Array(bufferSize * header.pointsStructSize);\n const bufRead = Module._malloc(header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n instance.getPoint(bufRead);\n\n if (i % skip === 0) {\n const a = new Uint8Array(Module.HEAPU8.buffer, bufRead, header.pointsStructSize);\n thisBuf.set(a, pointsRead * header.pointsStructSize);\n pointsRead++;\n }\n\n instance.readOffset++;\n }\n\n return {\n buffer: thisBuf.buffer,\n count: pointsRead,\n hasMoreData: instance.readOffset < header.pointsCount\n };\n } catch (error) {\n throw new Error(`Failed to read data: ${(error as Error).message}`);\n }\n }\n\n /**\n * Deletes the instance\n * @returns boolean\n */\n close(): boolean {\n try {\n if (this.instance !== null) {\n this.instance.delete();\n this.instance = null;\n }\n return true;\n } catch (error) {\n throw new Error(`Failed to close file: ${(error as Error).message}`);\n }\n }\n}\n\n/**\n * Helper class: Decodes LAS records into points\n */\nclass LASDecoder {\n arrayb: ArrayBuffer;\n decoder: (dv: DataView) => {};\n pointsCount: number;\n pointSize: number;\n scale: [number, number, number];\n offset?: [number, number, number];\n mins?: number[];\n maxs?: number[];\n\n constructor(buffer: ArrayBuffer, len: number, header: LASHeader) {\n this.arrayb = buffer;\n this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];\n this.pointsCount = len;\n this.pointSize = header.pointsStructSize;\n this.scale = header.scale;\n this.offset = header.offset;\n this.mins = header.mins;\n this.maxs = header.maxs;\n }\n\n /**\n * Decodes data depends on this point size\n * @param index\n * @returns New object\n */\n getPoint(index: number): {} {\n if (index < 0 || index >= this.pointsCount) {\n throw new Error('Point index out of range');\n }\n\n const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);\n return this.decoder(dv);\n }\n}\n\n/**\n * A single consistent interface for loading LAS/LAZ files\n */\nexport class LASFile {\n arraybuffer: ArrayBuffer;\n formatId: number = 0;\n loader: LASLoader | LAZLoader;\n isCompressed: boolean = true;\n isOpen: boolean = false;\n version: number = 0;\n versionAsString: string = '';\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (this.determineVersion() > 13) {\n throw new Error('Only file versions <= 1.3 are supported at this time');\n }\n\n this.determineFormat();\n if (POINT_FORMAT_READERS[this.formatId] === undefined) {\n throw new Error('The point format ID is not supported');\n }\n\n this.loader = this.isCompressed\n ? new LAZLoader(this.arraybuffer)\n : new LASLoader(this.arraybuffer);\n }\n\n /**\n * Determines format in parameters of LASHeaer\n */\n determineFormat(): void {\n const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);\n const bit7 = (formatId & 0x80) >> 7;\n const bit6 = (formatId & 0x40) >> 6;\n\n if (bit7 === 1 && bit6 === 1) {\n throw new Error('Old style compression not supported');\n }\n\n this.formatId = formatId & 0x3f;\n this.isCompressed = bit7 === 1 || bit6 === 1;\n }\n\n /**\n * Determines version\n * @returns version\n */\n determineVersion(): number {\n const ver = new Int8Array(this.arraybuffer, 24, 2);\n this.version = ver[0] * 10 + ver[1];\n this.versionAsString = `${ver[0]}.${ver[1]}`;\n return this.version;\n }\n\n /**\n * Reads if the file is open\n * @returns boolean\n */\n open(): void {\n if (this.loader.open()) {\n this.isOpen = true;\n }\n }\n /**\n * Gets the header\n * @returns Header\n */\n getHeader(): LASHeader {\n return this.loader.getHeader();\n }\n\n /**\n * @param count\n * @param start\n * @param skip\n * @returns Data\n */\n readData(count: number, start: number, skip: number): LASData {\n return this.loader.readData(count, start, skip);\n }\n\n /**\n * Closes the file\n */\n close(): void {\n if (this.loader.close()) {\n this.isOpen = false;\n }\n }\n /**\n */\n getUnpacker(): typeof LASDecoder {\n return LASDecoder;\n }\n}\n\nexport const LASModuleWasLoaded = false;\n\n/* eslint no-use-before-define: 2 */\n"],"mappings":"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"}
1
+ {"version":3,"file":"laslaz-decoder.js","names":["_lazPerf","_interopRequireDefault","require","Module","POINT_FORMAT_READERS","_","dv","position","getInt32","intensity","getUint16","classification","getUint8","color","readAs","buf","Type","arguments","length","undefined","offset","count","sub","slice","BYTES_PER_ELEMENT","r","ret","i","push","parseLASHeader","arraybuffer","start","o","pointsOffset","Uint32Array","pointsFormatId","Uint8Array","pointsStructSize","Uint16Array","pointsCount","scale","Float64Array","bounds","maxs","mins","LASLoader","_classCallCheck2","default","_defineProperty2","totalToRead","totalRead","versionAsString","isCompressed","_createClass2","key","value","open","getHeader","header","readData","skip","Error","readOffset","Math","min","end","buffer","hasMoreData","pointsToRead","bufferSize","ceil","pointsRead","src","set","close","LAZLoader","getModule","instance","LASZip","abInt","_malloc","byteLength","HEAPU8","error","concat","message","thisBuf","bufRead","getPoint","a","delete","LASDecoder","len","arrayb","decoder","pointSize","index","DataView","LASFile","determineVersion","determineFormat","formatId","loader","bit7","bit6","ver","Int8Array","version","isOpen","getUnpacker","exports","LASModuleWasLoaded"],"sources":["../../../src/lib/laslaz-decoder.ts"],"sourcesContent":["/*\n Modified from Uday Verma and Howard Butler's plasio\n https://github.com/verma/plasio/\n MIT License\n*/\n// laslaz.js - treat as compiled code\nimport type {LASHeader} from './las-types';\nimport getModule from './libs/laz-perf';\n\nlet Module: any = null;\n\ntype LASReader = (dv: DataView) => {\n [LASAttribute: string]: number | number[];\n};\n\ntype LASReaders = {\n [key: number]: LASReader;\n};\n\ntype LASData = {\n buffer: ArrayBuffer;\n count: number;\n hasMoreData: boolean;\n};\n\nconst POINT_FORMAT_READERS: LASReaders = {\n 0: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 1: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 2: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]\n };\n },\n 3: (dv) => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]\n };\n }\n};\n\n/**\n * Reads incoming binary data depends on the Type parameter\n * @param buf\n * @param Type\n * @param offset\n * @param count\n * @returns number | number[] from incoming binary data\n */\nfunction readAs(buf: ArrayBuffer, Type: any = {}, offset: number, count?: number) {\n count = count === undefined || count === 0 ? 1 : count;\n const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);\n\n const r = new Type(sub);\n if (count === 1) {\n return r[0];\n }\n\n const ret: number[] = [];\n for (let i = 0; i < count; i++) {\n ret.push(r[i]);\n }\n\n return ret;\n}\n\n/**\n * Parsing of header's attributes\n * @param arraybuffer\n * @returns header as LASHeader\n */\nfunction parseLASHeader(arraybuffer: ArrayBuffer): LASHeader {\n let start = 32 * 3 + 35;\n\n const o: Partial<LASHeader> = {\n pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),\n pointsFormatId: readAs(arraybuffer, Uint8Array, 32 * 3 + 8),\n pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),\n pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),\n scale: readAs(arraybuffer, Float64Array, start, 3)\n };\n start += 24; // 8*3\n o.offset = readAs(arraybuffer, Float64Array, start, 3);\n start += 24;\n\n const bounds = readAs(arraybuffer, Float64Array, start, 6);\n start += 48; // 8*6;\n o.maxs = [bounds[0], bounds[2], bounds[4]];\n o.mins = [bounds[1], bounds[3], bounds[5]];\n\n return o as LASHeader;\n}\n\n// LAS Loader\n// Loads uncompressed files\n//\nclass LASLoader {\n arraybuffer: ArrayBuffer;\n readOffset: number = 0;\n header: LASHeader = {\n pointsOffset: 0,\n pointsFormatId: 0,\n pointsStructSize: 0,\n pointsCount: 0,\n scale: [0, 0, 0],\n offset: [0, 0, 0],\n maxs: [0],\n mins: [0],\n totalToRead: 0,\n totalRead: 0,\n versionAsString: '',\n isCompressed: true\n };\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n }\n\n /**\n * @returns boolean\n */\n open() {\n // Nothing needs to be done to open this\n return true;\n }\n /**\n * Parsing of incoming binary\n * @returns LASHeader\n */\n getHeader() {\n this.header = parseLASHeader(this.arraybuffer);\n return this.header;\n }\n\n /**\n * Reading data\n * @param count\n * @param skip\n * @returns new ArrayBuffer, count, hasMoreData\n */\n readData(count: number, skip: number) {\n const {header, arraybuffer} = this;\n if (!header) {\n throw new Error('Cannot start reading data till a header request is issued');\n }\n\n let {readOffset} = this;\n let start: number;\n\n if (skip <= 1) {\n count = Math.min(count, header.pointsCount - readOffset);\n start = header.pointsOffset + readOffset * header.pointsStructSize;\n const end = start + count * header.pointsStructSize;\n readOffset += count;\n this.readOffset = readOffset;\n return {\n buffer: arraybuffer.slice(start, end),\n count,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n\n const pointsToRead = Math.min(count * skip, header.pointsCount - readOffset);\n const bufferSize = Math.ceil(pointsToRead / skip);\n let pointsRead = 0;\n\n const buf = new Uint8Array(bufferSize * header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n if (i % skip === 0) {\n start = header.pointsOffset + readOffset * header.pointsStructSize;\n const src = new Uint8Array(arraybuffer, start, header.pointsStructSize);\n\n buf.set(src, pointsRead * header.pointsStructSize);\n pointsRead++;\n }\n\n readOffset++;\n }\n this.readOffset = readOffset;\n\n return {\n buffer: buf.buffer,\n count: pointsRead,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n /**\n * Method which brings data to null to close the file\n * @returns\n */\n close() {\n // @ts-ignore Possibly null\n this.arraybuffer = null;\n return true;\n }\n}\n\n/**\n * LAZ Loader\n * Uses NaCL module to load LAZ files\n */\nclass LAZLoader {\n arraybuffer: ArrayBuffer;\n instance: any = null; // LASZip instance\n header: LASHeader | null = null;\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (!Module) {\n // Avoid executing laz-perf on import\n Module = getModule();\n }\n }\n\n /**\n * Opens the file\n * @returns boolean\n */\n open(): boolean {\n try {\n const {arraybuffer} = this;\n this.instance = new Module.LASZip();\n const abInt = new Uint8Array(arraybuffer);\n const buf = Module._malloc(arraybuffer.byteLength);\n\n this.instance.arraybuffer = arraybuffer;\n this.instance.buf = buf;\n Module.HEAPU8.set(abInt, buf);\n this.instance.open(buf, arraybuffer.byteLength);\n\n this.instance.readOffset = 0;\n\n return true;\n } catch (error) {\n throw new Error(`Failed to open file: ${(error as Error).message}`);\n }\n }\n\n getHeader(): LASHeader {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read header');\n }\n\n try {\n const header = parseLASHeader(this.instance.arraybuffer);\n header.pointsFormatId &= 0x3f;\n this.header = header;\n return header;\n } catch (error) {\n throw new Error(`Failed to get header: ${(error as Error).message}`);\n }\n }\n /**\n * @param count\n * @param offset\n * @param skip\n * @returns Data\n */\n readData(count: number, offset: number, skip: number): LASData {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read stuff');\n }\n\n const {header, instance} = this;\n\n if (!header) {\n throw new Error(\n 'You need to query header before reading, I maintain state that way, sorry :('\n );\n }\n\n try {\n const pointsToRead = Math.min(count * skip, header.pointsCount - instance.readOffset);\n const bufferSize = Math.ceil(pointsToRead / skip);\n let pointsRead = 0;\n\n const thisBuf = new Uint8Array(bufferSize * header.pointsStructSize);\n const bufRead = Module._malloc(header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n instance.getPoint(bufRead);\n\n if (i % skip === 0) {\n const a = new Uint8Array(Module.HEAPU8.buffer, bufRead, header.pointsStructSize);\n thisBuf.set(a, pointsRead * header.pointsStructSize);\n pointsRead++;\n }\n\n instance.readOffset++;\n }\n\n return {\n buffer: thisBuf.buffer,\n count: pointsRead,\n hasMoreData: instance.readOffset < header.pointsCount\n };\n } catch (error) {\n throw new Error(`Failed to read data: ${(error as Error).message}`);\n }\n }\n\n /**\n * Deletes the instance\n * @returns boolean\n */\n close(): boolean {\n try {\n if (this.instance !== null) {\n this.instance.delete();\n this.instance = null;\n }\n return true;\n } catch (error) {\n throw new Error(`Failed to close file: ${(error as Error).message}`);\n }\n }\n}\n\n/**\n * Helper class: Decodes LAS records into points\n */\nclass LASDecoder {\n arrayb: ArrayBuffer;\n decoder: (dv: DataView) => {};\n pointsCount: number;\n pointSize: number;\n scale: [number, number, number];\n offset?: [number, number, number];\n mins?: number[];\n maxs?: number[];\n\n constructor(buffer: ArrayBuffer, len: number, header: LASHeader) {\n this.arrayb = buffer;\n this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];\n this.pointsCount = len;\n this.pointSize = header.pointsStructSize;\n this.scale = header.scale;\n this.offset = header.offset;\n this.mins = header.mins;\n this.maxs = header.maxs;\n }\n\n /**\n * Decodes data depends on this point size\n * @param index\n * @returns New object\n */\n getPoint(index: number): {} {\n if (index < 0 || index >= this.pointsCount) {\n throw new Error('Point index out of range');\n }\n\n const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);\n return this.decoder(dv);\n }\n}\n\n/**\n * A single consistent interface for loading LAS/LAZ files\n */\nexport class LASFile {\n arraybuffer: ArrayBuffer;\n formatId: number = 0;\n loader: LASLoader | LAZLoader;\n isCompressed: boolean = true;\n isOpen: boolean = false;\n version: number = 0;\n versionAsString: string = '';\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n if (this.determineVersion() > 13) {\n throw new Error('Only file versions <= 1.3 are supported at this time');\n }\n\n this.determineFormat();\n if (POINT_FORMAT_READERS[this.formatId] === undefined) {\n throw new Error('The point format ID is not supported');\n }\n\n this.loader = this.isCompressed\n ? new LAZLoader(this.arraybuffer)\n : new LASLoader(this.arraybuffer);\n }\n\n /**\n * Determines format in parameters of LASHeaer\n */\n determineFormat(): void {\n const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);\n const bit7 = (formatId & 0x80) >> 7;\n const bit6 = (formatId & 0x40) >> 6;\n\n if (bit7 === 1 && bit6 === 1) {\n throw new Error('Old style compression not supported');\n }\n\n this.formatId = formatId & 0x3f;\n this.isCompressed = bit7 === 1 || bit6 === 1;\n }\n\n /**\n * Determines version\n * @returns version\n */\n determineVersion(): number {\n const ver = new Int8Array(this.arraybuffer, 24, 2);\n this.version = ver[0] * 10 + ver[1];\n this.versionAsString = `${ver[0]}.${ver[1]}`;\n return this.version;\n }\n\n /**\n * Reads if the file is open\n * @returns boolean\n */\n open(): void {\n if (this.loader.open()) {\n this.isOpen = true;\n }\n }\n /**\n * Gets the header\n * @returns Header\n */\n getHeader(): LASHeader {\n return this.loader.getHeader();\n }\n\n /**\n * @param count\n * @param start\n * @param skip\n * @returns Data\n */\n readData(count: number, start: number, skip: number): LASData {\n return this.loader.readData(count, start, skip);\n }\n\n /**\n * Closes the file\n */\n close(): void {\n if (this.loader.close()) {\n this.isOpen = false;\n }\n }\n /**\n */\n getUnpacker(): typeof LASDecoder {\n return LASDecoder;\n }\n}\n\nexport const LASModuleWasLoaded = false;\n\n/* eslint no-use-before-define: 2 */\n"],"mappings":"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"}