@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 +6 -8
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/las-loader.js +1 -3
- package/dist/es5/las-loader.js.map +1 -1
- package/dist/es5/lib/get-las-schema.js +0 -1
- package/dist/es5/lib/get-las-schema.js.map +1 -1
- package/dist/es5/lib/laslaz-decoder.js +15 -46
- package/dist/es5/lib/laslaz-decoder.js.map +1 -1
- package/dist/es5/lib/libs/laz-perf.js +1 -1
- package/dist/es5/lib/libs/laz-perf.js.map +1 -1
- package/dist/es5/lib/parse-las.js +0 -7
- package/dist/es5/lib/parse-las.js.map +1 -1
- package/dist/es5/workers/las-worker.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/las-loader.js +1 -4
- package/dist/esm/las-loader.js.map +1 -1
- package/dist/esm/lib/get-las-schema.js +0 -1
- package/dist/esm/lib/get-las-schema.js.map +1 -1
- package/dist/esm/lib/laslaz-decoder.js +0 -18
- package/dist/esm/lib/laslaz-decoder.js.map +1 -1
- package/dist/esm/lib/libs/laz-perf.js.map +1 -1
- package/dist/esm/lib/parse-las.js +0 -9
- package/dist/esm/lib/parse-las.js.map +1 -1
- package/dist/las-worker.js +1 -1
- package/package.json +4 -4
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
}));
|
package/dist/es5/index.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/es5/las-loader.js
CHANGED
|
@@ -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":"
|
|
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,
|
|
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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"}
|