@loaders.gl/i3s 3.0.10 → 3.0.14
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/dist.es5.min.js +1 -1
- package/dist/dist.es5.min.js.map +1 -1
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/i3s-attribute-loader.js +1 -1
- package/dist/es5/i3s-content-loader.js +1 -1
- package/dist/es5/i3s-loader.js +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -1
- package/dist/esm/i3s-attribute-loader.js +1 -1
- package/dist/esm/i3s-content-loader.js +1 -1
- package/dist/esm/i3s-loader.js +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +3 -3
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s.js +4 -4
- package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/esm/lib/utils/url-utils.js +3 -3
- package/dist/esm/lib/utils/url-utils.js.map +1 -1
- package/dist/i3s-content-worker.js +1 -1
- package/dist/i3s-content-worker.js.map +1 -1
- package/package.json +9 -9
- package/src/lib/parsers/parse-i3s-attribute.ts +1 -1
|
@@ -24,7 +24,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
24
24
|
|
|
25
25
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
26
26
|
|
|
27
|
-
var VERSION = typeof "3.0.
|
|
27
|
+
var VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
28
28
|
var EMPTY_VALUE = '';
|
|
29
29
|
var REJECTED_STATUS = 'rejected';
|
|
30
30
|
var I3SAttributeLoader = {
|
|
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
13
13
|
|
|
14
14
|
var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
|
|
15
15
|
|
|
16
|
-
var VERSION = typeof "3.0.
|
|
16
|
+
var VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
17
17
|
var I3SContentLoader = {
|
|
18
18
|
name: 'I3S Content (Indexed Scene Layers)',
|
|
19
19
|
id: 'i3s-content',
|
package/dist/es5/i3s-loader.js
CHANGED
|
@@ -19,7 +19,7 @@ var _i3sContentLoader = require("./i3s-content-loader");
|
|
|
19
19
|
|
|
20
20
|
var _parseI3s = require("./lib/parsers/parse-i3s");
|
|
21
21
|
|
|
22
|
-
var VERSION = typeof "3.0.
|
|
22
|
+
var VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
23
23
|
var TILESET_REGEX = /layers\/[0-9]+$/;
|
|
24
24
|
var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
|
|
25
25
|
var SLPK_HEX = '504b0304';
|
|
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
11
11
|
|
|
12
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
13
|
|
|
14
|
-
var VERSION = typeof "3.0.
|
|
14
|
+
var VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
15
15
|
|
|
16
16
|
function parseNodePage(_x) {
|
|
17
17
|
return _parseNodePage.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","STRING_ATTRIBUTE_TYPE","parseStringsAttribute","OBJECT_ID_ATTRIBUTE_TYPE","parseShortNumberAttribute","FLOAT_64_TYPE","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;SAQsBA,qB;;;;;qFAAf,iBAAqCC,WAArC,EAAkDC,OAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AACEC,YAAAA,aADF,GACkCD,OADlC,CACEC,aADF,EACiBC,aADjB,GACkCF,OADlC,CACiBE,aADjB;;AAAA,gBAGAD,aAHA;AAAA;AAAA;AAAA;;AAAA,6CAII,EAJJ;;AAAA;AAAA,+EAOFA,aAPE,EAOcC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD,IAP3E;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAiBP,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKE,gCAAL;AACE,aAAOC,qBAAqB,CAACN,WAAD,CAA5B;;AACF,SAAKO,mCAAL;AACE,aAAOC,yBAAyB,CAACR,WAAD,CAAhC;;AACF,SAAKS,wBAAL;AACE,aAAOC,mBAAmB,CAACV,WAAD,CAA1B;;AACF;AACE,aAAOQ,yBAAyB,CAACR,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASQ,yBAAT,CAAmCR,WAAnC,EAAgD;AAC9C,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBZ,WAAhB,EAA6BW,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BV,WAA7B,EAA0C;AACxC,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBb,WAAjB,EAA8BW,WAA9B,CAAP;AACD;;AAQD,SAASL,qBAAT,CAA+BN,WAA/B,EAAmE;AACjE,MAAMc,kBAAkB,GAAG,CAA3B;AACA,MAAMC,UAAU,GAAG,CAAnB;AACA,MAAMC,kBAAkB,GAAG,CAA3B;AACA,MAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,QAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBnB,WADmB,EAEnBc,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,QAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBZ,WAAhB,EAA6Be,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AARE,+CAU2BK,WAV3B;AAAA;;AAAA;AAUF,0DAA0C;AAAA,YAA/BE,cAA+B;AACxC,YAAMC,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAe3B,WAAf,EAA4BsB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,QAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,QAAAA,YAAY,IAAIC,cAAhB;AACD;AAfC;AAAA;AAAA;AAAA;AAAA;AAgBH,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","STRING_ATTRIBUTE_TYPE","parseStringsAttribute","OBJECT_ID_ATTRIBUTE_TYPE","parseShortNumberAttribute","FLOAT_64_TYPE","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;SAQsBA,qB;;;;;qFAAf,iBAAqCC,WAArC,EAAkDC,OAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AACEC,YAAAA,aADF,GACkCD,OADlC,CACEC,aADF,EACiBC,aADjB,GACkCF,OADlC,CACiBE,aADjB;;AAAA,gBAGAD,aAHA;AAAA;AAAA;AAAA;;AAAA,6CAII,EAJJ;;AAAA;AAAA,+EAOFA,aAPE,EAOcC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD,IAP3E;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAiBP,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKE,gCAAL;AACE,aAAOC,qBAAqB,CAACN,WAAD,CAA5B;;AACF,SAAKO,mCAAL;AACE,aAAOC,yBAAyB,CAACR,WAAD,CAAhC;;AACF,SAAKS,wBAAL;AACE,aAAOC,mBAAmB,CAACV,WAAD,CAA1B;;AACF;AACE,aAAOQ,yBAAyB,CAACR,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASQ,yBAAT,CAAmCR,WAAnC,EAAgD;AAC9C,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBZ,WAAhB,EAA6BW,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BV,WAA7B,EAA0C;AACxC,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBb,WAAjB,EAA8BW,WAA9B,CAAP;AACD;;AAQD,SAASL,qBAAT,CAA+BN,WAA/B,EAAmE;AACjE,MAAMc,kBAAkB,GAAG,CAA3B;AACA,MAAMC,UAAU,GAAG,CAAnB;AACA,MAAMC,kBAAkB,GAAG,CAA3B;AACA,MAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,QAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBnB,WADmB,EAEnBc,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,QAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBZ,WAAhB,EAA6Be,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AARE,+CAU2BK,WAV3B;AAAA;;AAAA;AAUF,0DAA0C;AAAA,YAA/BE,cAA+B;AACxC,YAAMC,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAe3B,WAAf,EAA4BsB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,QAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,QAAAA,YAAY,IAAIC,cAAhB;AACD;AAfC;AAAA;AAAA;AAAA;AAAA;AAgBH,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,EAAiDA,KAAD,CAAiBE,OAAjE;AACD;;AAED,SAAOf,YAAP;AACD","sourcesContent":["import {STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE} from './constants';\n\n/**\n * Get particular tile and creates attribute object inside.\n * @param {ArrayBuffer} arrayBuffer\n * @param {Object} options\n * @returns {Promise<object>}\n */\nexport async function parseI3STileAttribute(arrayBuffer, options) {\n const {attributeName, attributeType} = options;\n\n if (!attributeName) {\n return {};\n }\n return {\n [attributeName]: attributeType ? parseAttribute(attributeType, arrayBuffer) : null\n };\n}\n\n/**\n * Parse attributes based on attribute type.\n * @param {String} attributeType\n * @param {ArrayBuffer} arrayBuffer\n * @returns {any}\n */\nfunction parseAttribute(attributeType, arrayBuffer) {\n switch (attributeType) {\n case STRING_ATTRIBUTE_TYPE:\n return parseStringsAttribute(arrayBuffer);\n case OBJECT_ID_ATTRIBUTE_TYPE:\n return parseShortNumberAttribute(arrayBuffer);\n case FLOAT_64_TYPE:\n return parseFloatAttribute(arrayBuffer);\n default:\n return parseShortNumberAttribute(arrayBuffer);\n }\n}\n\n/**\n * Parse short number attribute.\n * Short Integer spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Uint32Array}\n */\nfunction parseShortNumberAttribute(arrayBuffer) {\n const countOffset = 4;\n return new Uint32Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse float attribute.\n * Double Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Float64Array}\n */\nfunction parseFloatAttribute(arrayBuffer) {\n const countOffset = 8;\n return new Float64Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse string attribute.\n * String spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param arrayBuffer\n * @returns list of strings\n */\nfunction parseStringsAttribute(arrayBuffer: ArrayBuffer): string[] {\n const stringsCountOffset = 0;\n const dataOffset = 8;\n const bytesPerStringSize = 4;\n const stringsArray: string[] = [];\n\n try {\n // Use DataView to avoid multiple of 4 error on Uint32Array constructor\n const stringsCount = new DataView(\n arrayBuffer,\n stringsCountOffset,\n bytesPerStringSize\n ).getUint32(stringsCountOffset, true);\n const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);\n let stringOffset = dataOffset + stringsCount * bytesPerStringSize;\n\n for (const stringByteSize of stringSizes) {\n const textDecoder = new TextDecoder('utf-8');\n const stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);\n stringsArray.push(textDecoder.decode(stringAttribute));\n stringOffset += stringByteSize;\n }\n } catch (error) {\n console.error('Parse string attribute error: ', (error as Error).message); // eslint-disable-line\n }\n\n return stringsArray;\n}\n"],"file":"parse-i3s-attribute.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { load } from '@loaders.gl/core';
|
|
2
2
|
import { parseI3STileAttribute } from './lib/parsers/parse-i3s-attribute';
|
|
3
3
|
import { getUrlWithToken } from './lib/utils/url-utils';
|
|
4
|
-
const VERSION = typeof "3.0.
|
|
4
|
+
const VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
5
5
|
const EMPTY_VALUE = '';
|
|
6
6
|
const REJECTED_STATUS = 'rejected';
|
|
7
7
|
export const I3SAttributeLoader = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseI3STileContent } from './lib/parsers/parse-i3s-tile-content';
|
|
2
|
-
const VERSION = typeof "3.0.
|
|
2
|
+
const VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
3
3
|
export const I3SContentLoader = {
|
|
4
4
|
name: 'I3S Content (Indexed Scene Layers)',
|
|
5
5
|
id: 'i3s-content',
|
package/dist/esm/i3s-loader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { load, parse } from '@loaders.gl/core';
|
|
2
2
|
import { I3SContentLoader } from './i3s-content-loader';
|
|
3
3
|
import { normalizeTileData, normalizeTilesetData } from './lib/parsers/parse-i3s';
|
|
4
|
-
const VERSION = typeof "3.0.
|
|
4
|
+
const VERSION = typeof "3.0.14" !== 'undefined' ? "3.0.14" : 'latest';
|
|
5
5
|
const TILESET_REGEX = /layers\/[0-9]+$/;
|
|
6
6
|
const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
|
|
7
7
|
const SLPK_HEX = '504b0304';
|
|
@@ -35,7 +35,7 @@ export default class I3SNodePagesTiles {
|
|
|
35
35
|
if (!this.nodePages[pageIndex]) {
|
|
36
36
|
var _this$options$i3s;
|
|
37
37
|
|
|
38
|
-
const nodePageUrl = getUrlWithToken(
|
|
38
|
+
const nodePageUrl = getUrlWithToken("".concat(this.tileset.url, "/nodepages/").concat(pageIndex), (_this$options$i3s = this.options.i3s) === null || _this$options$i3s === void 0 ? void 0 : _this$options$i3s.token);
|
|
39
39
|
this.nodePages[pageIndex] = load(nodePageUrl, I3SNodePageLoader, this.options);
|
|
40
40
|
this.nodePages[pageIndex] = await this.nodePages[pageIndex];
|
|
41
41
|
}
|
|
@@ -84,7 +84,7 @@ export default class I3SNodePagesTiles {
|
|
|
84
84
|
textureFormat = textureData.format || textureFormat;
|
|
85
85
|
|
|
86
86
|
if (textureData.name) {
|
|
87
|
-
textureUrl =
|
|
87
|
+
textureUrl = "".concat(this.tileset.url, "/nodes/").concat(node.mesh.material.resource, "/textures/").concat(textureData.name);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
if (this.tileset.attributeStorageInfo) {
|
|
@@ -124,7 +124,7 @@ export default class I3SNodePagesTiles {
|
|
|
124
124
|
if (geometryIndex !== -1) {
|
|
125
125
|
const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
|
|
126
126
|
result = {
|
|
127
|
-
url:
|
|
127
|
+
url: "".concat(this.tileset.url, "/nodes/").concat(meshGeometryData.resource, "/geometries/").concat(geometryIndex),
|
|
128
128
|
isDracoGeometry
|
|
129
129
|
};
|
|
130
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":["load","getSupportedGPUTextureFormats","I3SNodePageLoader","normalizeTileNonUrlData","getUrlWithToken","generateTilesetAttributeUrls","I3SNodePagesTiles","constructor","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","textureDefinitionsSelectedFormats","_initSelectedFormatsForTextureDefinitions","getNodeById","id","pageIndex","Math","floor","nodePageUrl","url","i3s","token","Promise","nodeIndex","nodes","formTileFromNodePages","node","children","child","childNode","push","obb","contentUrl","textureUrl","materialDefinition","textureFormat","attributeUrls","isDracoGeometry","mesh","isDracoGeometryResult","geometry","_getContentUrl","textureData","nodeMaterialDefinition","_getInformationFromMaterial","material","format","name","resource","attributeStorageInfo","attribute","lodSelection","_getLodSelection","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","textureDataDefault","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","possibleI3sFormats","_getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","useCompressedTextures","supportedCompressedFormats","has"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats} from '@loaders.gl/textures';\nimport {Tileset, NodePage} from '../../types';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: Tileset;\n nodePages: NodePage[];\n nodesPerPage: number;\n options: {[key: string]: any};\n lodSelectionMetricType: any;\n textureDefinitionsSelectedFormats: any[];\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: Tileset, options: object) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages.nodesPerPage;\n this.lodSelectionMetricType = tileset.nodePages.lodSelectionMetricType;\n this.options = options;\n this.nodePages = [];\n this.textureDefinitionsSelectedFormats = [];\n\n this._initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number) {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.nodePages[pageIndex] = load(nodePageUrl, I3SNodePageLoader, this.options);\n this.nodePages[pageIndex] = await this.nodePages[pageIndex];\n }\n if (this.nodePages[pageIndex] instanceof Promise) {\n this.nodePages[pageIndex] = await this.nodePages[pageIndex];\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity\n async formTileFromNodePages(id: number) {\n const node = await this.getNodeById(id);\n const children: any[] = [];\n for (const child of node.children || []) {\n const childNode = await this.getNodeById(child);\n children.push({\n id: child,\n obb: childNode.obb\n });\n }\n\n let contentUrl = null;\n let textureUrl: string | null = null;\n let materialDefinition = null;\n let textureFormat = 'jpeg';\n let attributeUrls: string[] = [];\n let isDracoGeometry = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this._getContentUrl(node.mesh.geometry)) || {url: null, isDracoGeometry: null};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const [textureData, nodeMaterialDefinition] = this._getInformationFromMaterial(\n node.mesh.material\n );\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this._getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id,\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param {Object} meshGeometryData - data about the node's mesh from the nodepage\n * @returns {Object} -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n _getContentUrl(meshGeometryData) {\n let result = {};\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param {Object} node - a node from nodepage\n * @returns {Object[]} - Array of object of following properties:\n * {string} metricType - the label of the LOD metric\n * {number} maxError - the value of the metric\n */\n _getLodSelection(node): object[] {\n const lodSelection: object[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param {Object} material - material data from nodepage\n * @returns {Object[]} - Couple [textureData, materialDefinition]\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n _getInformationFromMaterial(material) {\n const textureDataDefault = {name: null, format: null};\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions[material.definition];\n const textureSetDefinitionIndex =\n materialDefinition &&\n materialDefinition.pbrMetallicRoughness &&\n materialDefinition.pbrMetallicRoughness.baseColorTexture &&\n materialDefinition.pbrMetallicRoughness.baseColorTexture.textureSetDefinitionId;\n if (textureSetDefinitionIndex || textureSetDefinitionIndex === 0) {\n const textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || textureDataDefault;\n return [textureData, materialDefinition];\n }\n return [textureDataDefault, materialDefinition];\n }\n return [textureDataDefault, null];\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param {Object} tileset - I3S layer data\n * @returns {void}\n */\n _initSelectedFormatsForTextureDefinitions(tileset) {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this._getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n _getSupportedTextureFormats(): string[] {\n const formats: string[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"file":"i3s-nodepages-tiles.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":["load","getSupportedGPUTextureFormats","I3SNodePageLoader","normalizeTileNonUrlData","getUrlWithToken","generateTilesetAttributeUrls","I3SNodePagesTiles","constructor","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","textureDefinitionsSelectedFormats","_initSelectedFormatsForTextureDefinitions","getNodeById","id","pageIndex","Math","floor","nodePageUrl","url","i3s","token","Promise","nodeIndex","nodes","formTileFromNodePages","node","children","child","childNode","push","obb","contentUrl","textureUrl","materialDefinition","textureFormat","attributeUrls","isDracoGeometry","mesh","isDracoGeometryResult","geometry","_getContentUrl","textureData","nodeMaterialDefinition","_getInformationFromMaterial","material","format","name","resource","attributeStorageInfo","attribute","lodSelection","_getLodSelection","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","textureDataDefault","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","possibleI3sFormats","_getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","useCompressedTextures","supportedCompressedFormats","has"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats} from '@loaders.gl/textures';\nimport {Tileset, NodePage} from '../../types';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: Tileset;\n nodePages: NodePage[];\n nodesPerPage: number;\n options: {[key: string]: any};\n lodSelectionMetricType: any;\n textureDefinitionsSelectedFormats: any[];\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: Tileset, options: object) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages.nodesPerPage;\n this.lodSelectionMetricType = tileset.nodePages.lodSelectionMetricType;\n this.options = options;\n this.nodePages = [];\n this.textureDefinitionsSelectedFormats = [];\n\n this._initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number) {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.nodePages[pageIndex] = load(nodePageUrl, I3SNodePageLoader, this.options);\n this.nodePages[pageIndex] = await this.nodePages[pageIndex];\n }\n if (this.nodePages[pageIndex] instanceof Promise) {\n this.nodePages[pageIndex] = await this.nodePages[pageIndex];\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity\n async formTileFromNodePages(id: number) {\n const node = await this.getNodeById(id);\n const children: any[] = [];\n for (const child of node.children || []) {\n const childNode = await this.getNodeById(child);\n children.push({\n id: child,\n obb: childNode.obb\n });\n }\n\n let contentUrl = null;\n let textureUrl: string | null = null;\n let materialDefinition = null;\n let textureFormat = 'jpeg';\n let attributeUrls: string[] = [];\n let isDracoGeometry = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this._getContentUrl(node.mesh.geometry)) || {url: null, isDracoGeometry: null};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const [textureData, nodeMaterialDefinition] = this._getInformationFromMaterial(\n node.mesh.material\n );\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this._getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id,\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param {Object} meshGeometryData - data about the node's mesh from the nodepage\n * @returns {Object} -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n _getContentUrl(meshGeometryData) {\n let result = {};\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param {Object} node - a node from nodepage\n * @returns {Object[]} - Array of object of following properties:\n * {string} metricType - the label of the LOD metric\n * {number} maxError - the value of the metric\n */\n _getLodSelection(node): object[] {\n const lodSelection: object[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param {Object} material - material data from nodepage\n * @returns {Object[]} - Couple [textureData, materialDefinition]\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n _getInformationFromMaterial(material) {\n const textureDataDefault = {name: null, format: null};\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions[material.definition];\n const textureSetDefinitionIndex =\n materialDefinition &&\n materialDefinition.pbrMetallicRoughness &&\n materialDefinition.pbrMetallicRoughness.baseColorTexture &&\n materialDefinition.pbrMetallicRoughness.baseColorTexture.textureSetDefinitionId;\n if (textureSetDefinitionIndex || textureSetDefinitionIndex === 0) {\n const textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || textureDataDefault;\n return [textureData, materialDefinition];\n }\n return [textureDataDefault, materialDefinition];\n }\n return [textureDataDefault, null];\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param {Object} tileset - I3S layer data\n * @returns {void}\n */\n _initSelectedFormatsForTextureDefinitions(tileset) {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this._getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n _getSupportedTextureFormats(): string[] {\n const formats: string[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"file":"i3s-nodepages-tiles.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","parseStringsAttribute","parseShortNumberAttribute","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":"AAAA,SAAQA,qBAAR,EAA+BC,wBAA/B,EAAyDC,aAAzD,QAA6E,aAA7E;AAQA,OAAO,eAAeC,qBAAf,CAAqCC,WAArC,EAAkDC,OAAlD,EAA2D;AAChE,QAAM;AAACC,IAAAA,aAAD;AAAgBC,IAAAA;AAAhB,MAAiCF,OAAvC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAClB,WAAO,EAAP;AACD;;AACD,SAAO;AACL,KAACA,aAAD,GAAiBC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD;AADzE,GAAP;AAGD;;AAQD,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKP,qBAAL;AACE,aAAOS,qBAAqB,CAACL,WAAD,CAA5B;;AACF,SAAKH,wBAAL;AACE,aAAOS,yBAAyB,CAACN,WAAD,CAAhC;;AACF,SAAKF,aAAL;AACE,aAAOS,mBAAmB,CAACP,WAAD,CAA1B;;AACF;AACE,aAAOM,yBAAyB,CAACN,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASM,yBAAT,CAAmCN,WAAnC,EAAgD;AAC9C,QAAMQ,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBT,WAAhB,EAA6BQ,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BP,WAA7B,EAA0C;AACxC,QAAMQ,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBV,WAAjB,EAA8BQ,WAA9B,CAAP;AACD;;AAQD,SAASH,qBAAT,CAA+BL,WAA/B,EAAmE;AACjE,QAAMW,kBAAkB,GAAG,CAA3B;AACA,QAAMC,UAAU,GAAG,CAAnB;AACA,QAAMC,kBAAkB,GAAG,CAA3B;AACA,QAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,UAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBhB,WADmB,EAEnBW,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,UAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBT,WAAhB,EAA6BY,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AAEA,SAAK,MAAMO,cAAX,IAA6BF,WAA7B,EAA0C;AACxC,YAAMG,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAexB,WAAf,EAA4BmB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,MAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,MAAAA,YAAY,IAAIC,cAAhB;AACD;AACF,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","parseStringsAttribute","parseShortNumberAttribute","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":"AAAA,SAAQA,qBAAR,EAA+BC,wBAA/B,EAAyDC,aAAzD,QAA6E,aAA7E;AAQA,OAAO,eAAeC,qBAAf,CAAqCC,WAArC,EAAkDC,OAAlD,EAA2D;AAChE,QAAM;AAACC,IAAAA,aAAD;AAAgBC,IAAAA;AAAhB,MAAiCF,OAAvC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAClB,WAAO,EAAP;AACD;;AACD,SAAO;AACL,KAACA,aAAD,GAAiBC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD;AADzE,GAAP;AAGD;;AAQD,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKP,qBAAL;AACE,aAAOS,qBAAqB,CAACL,WAAD,CAA5B;;AACF,SAAKH,wBAAL;AACE,aAAOS,yBAAyB,CAACN,WAAD,CAAhC;;AACF,SAAKF,aAAL;AACE,aAAOS,mBAAmB,CAACP,WAAD,CAA1B;;AACF;AACE,aAAOM,yBAAyB,CAACN,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASM,yBAAT,CAAmCN,WAAnC,EAAgD;AAC9C,QAAMQ,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBT,WAAhB,EAA6BQ,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BP,WAA7B,EAA0C;AACxC,QAAMQ,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBV,WAAjB,EAA8BQ,WAA9B,CAAP;AACD;;AAQD,SAASH,qBAAT,CAA+BL,WAA/B,EAAmE;AACjE,QAAMW,kBAAkB,GAAG,CAA3B;AACA,QAAMC,UAAU,GAAG,CAAnB;AACA,QAAMC,kBAAkB,GAAG,CAA3B;AACA,QAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,UAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBhB,WADmB,EAEnBW,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,UAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBT,WAAhB,EAA6BY,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AAEA,SAAK,MAAMO,cAAX,IAA6BF,WAA7B,EAA0C;AACxC,YAAMG,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAexB,WAAf,EAA4BmB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,MAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,MAAAA,YAAY,IAAIC,cAAhB;AACD;AACF,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,EAAiDA,KAAD,CAAiBE,OAAjE;AACD;;AAED,SAAOf,YAAP;AACD","sourcesContent":["import {STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE} from './constants';\n\n/**\n * Get particular tile and creates attribute object inside.\n * @param {ArrayBuffer} arrayBuffer\n * @param {Object} options\n * @returns {Promise<object>}\n */\nexport async function parseI3STileAttribute(arrayBuffer, options) {\n const {attributeName, attributeType} = options;\n\n if (!attributeName) {\n return {};\n }\n return {\n [attributeName]: attributeType ? parseAttribute(attributeType, arrayBuffer) : null\n };\n}\n\n/**\n * Parse attributes based on attribute type.\n * @param {String} attributeType\n * @param {ArrayBuffer} arrayBuffer\n * @returns {any}\n */\nfunction parseAttribute(attributeType, arrayBuffer) {\n switch (attributeType) {\n case STRING_ATTRIBUTE_TYPE:\n return parseStringsAttribute(arrayBuffer);\n case OBJECT_ID_ATTRIBUTE_TYPE:\n return parseShortNumberAttribute(arrayBuffer);\n case FLOAT_64_TYPE:\n return parseFloatAttribute(arrayBuffer);\n default:\n return parseShortNumberAttribute(arrayBuffer);\n }\n}\n\n/**\n * Parse short number attribute.\n * Short Integer spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Uint32Array}\n */\nfunction parseShortNumberAttribute(arrayBuffer) {\n const countOffset = 4;\n return new Uint32Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse float attribute.\n * Double Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Float64Array}\n */\nfunction parseFloatAttribute(arrayBuffer) {\n const countOffset = 8;\n return new Float64Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse string attribute.\n * String spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param arrayBuffer\n * @returns list of strings\n */\nfunction parseStringsAttribute(arrayBuffer: ArrayBuffer): string[] {\n const stringsCountOffset = 0;\n const dataOffset = 8;\n const bytesPerStringSize = 4;\n const stringsArray: string[] = [];\n\n try {\n // Use DataView to avoid multiple of 4 error on Uint32Array constructor\n const stringsCount = new DataView(\n arrayBuffer,\n stringsCountOffset,\n bytesPerStringSize\n ).getUint32(stringsCountOffset, true);\n const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);\n let stringOffset = dataOffset + stringsCount * bytesPerStringSize;\n\n for (const stringByteSize of stringSizes) {\n const textDecoder = new TextDecoder('utf-8');\n const stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);\n stringsArray.push(textDecoder.decode(stringAttribute));\n stringOffset += stringByteSize;\n }\n } catch (error) {\n console.error('Parse string attribute error: ', (error as Error).message); // eslint-disable-line\n }\n\n return stringsArray;\n}\n"],"file":"parse-i3s-attribute.js"}
|
|
@@ -8,15 +8,15 @@ export function normalizeTileData(tile, options, context) {
|
|
|
8
8
|
tile.url = context.url;
|
|
9
9
|
|
|
10
10
|
if (tile.featureData) {
|
|
11
|
-
tile.featureUrl =
|
|
11
|
+
tile.featureUrl = "".concat(tile.url, "/").concat(tile.featureData[0].href);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
if (tile.geometryData) {
|
|
15
|
-
tile.contentUrl =
|
|
15
|
+
tile.contentUrl = "".concat(tile.url, "/").concat(tile.geometryData[0].href);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
if (tile.textureData) {
|
|
19
|
-
tile.textureUrl =
|
|
19
|
+
tile.textureUrl = "".concat(tile.url, "/").concat(tile.textureData[0].href);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
if (tile.attributeData) {
|
|
@@ -58,7 +58,7 @@ export async function normalizeTilesetData(tileset, options, context) {
|
|
|
58
58
|
} else {
|
|
59
59
|
var _options$i3s;
|
|
60
60
|
|
|
61
|
-
const rootNodeUrl = getUrlWithToken(
|
|
61
|
+
const rootNodeUrl = getUrlWithToken("".concat(tileset.url, "/nodes/root"), (_options$i3s = options.i3s) === null || _options$i3s === void 0 ? void 0 : _options$i3s.token);
|
|
62
62
|
tileset.root = await load(rootNodeUrl, tileset.loader, {
|
|
63
63
|
i3s: {
|
|
64
64
|
loadContent: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s.ts"],"names":["OrientedBoundingBox","Ellipsoid","load","TILE_TYPE","TILE_REFINEMENT","TILESET_TYPE","I3SNodePagesTiles","generateTileAttributeUrls","getUrlWithToken","normalizeTileData","tile","options","context","url","featureData","featureUrl","href","geometryData","contentUrl","textureData","textureUrl","attributeData","attributeUrls","normalizeTileNonUrlData","box","obb","WGS84","cartographicToCartesian","center","halfSize","quaternion","undefined","sphere","mbs","slice","fromCenterHalfSizeQuaternion","boundingSphere","getBoundingSphere","radius","boundingVolume","lodMetricType","lodSelection","metricType","lodMetricValue","maxError","transformMatrix","transform","type","MESH","refine","REPLACE","normalizeTilesetData","tileset","nodePages","nodePagesTile","root","formTileFromNodePages","rootNodeUrl","i3s","token","loader","loadContent","isTileHeader","isTileset","basePath","I3S"],"mappings":"AAAA,SAAQA,mBAAR,QAAkC,kBAAlC;AACA,SAAQC,SAAR,QAAwB,qBAAxB;AACA,SAAQC,IAAR,QAAmB,kBAAnB;AACA,SAAQC,SAAR,EAAmBC,eAAnB,EAAoCC,YAApC,QAAuD,mBAAvD;AACA,OAAOC,iBAAP,MAA8B,gCAA9B;AACA,SAAQC,yBAAR,EAAmCC,eAAnC,QAAyD,oBAAzD;AAEA,OAAO,SAASC,iBAAT,CAA2BC,IAA3B,EAAiCC,OAAjC,EAA0CC,OAA1C,EAAmD;AACxDF,EAAAA,IAAI,CAACG,GAAL,GAAWD,OAAO,CAACC,GAAnB;;AAEA,MAAIH,IAAI,CAACI,WAAT,EAAsB;AACpBJ,IAAAA,IAAI,CAACK,UAAL,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-i3s.ts"],"names":["OrientedBoundingBox","Ellipsoid","load","TILE_TYPE","TILE_REFINEMENT","TILESET_TYPE","I3SNodePagesTiles","generateTileAttributeUrls","getUrlWithToken","normalizeTileData","tile","options","context","url","featureData","featureUrl","href","geometryData","contentUrl","textureData","textureUrl","attributeData","attributeUrls","normalizeTileNonUrlData","box","obb","WGS84","cartographicToCartesian","center","halfSize","quaternion","undefined","sphere","mbs","slice","fromCenterHalfSizeQuaternion","boundingSphere","getBoundingSphere","radius","boundingVolume","lodMetricType","lodSelection","metricType","lodMetricValue","maxError","transformMatrix","transform","type","MESH","refine","REPLACE","normalizeTilesetData","tileset","nodePages","nodePagesTile","root","formTileFromNodePages","rootNodeUrl","i3s","token","loader","loadContent","isTileHeader","isTileset","basePath","I3S"],"mappings":"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","sourcesContent":["import {OrientedBoundingBox} from '@math.gl/culling';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {load} from '@loaders.gl/core';\nimport {TILE_TYPE, TILE_REFINEMENT, TILESET_TYPE} from '@loaders.gl/tiles';\nimport I3SNodePagesTiles from '../helpers/i3s-nodepages-tiles';\nimport {generateTileAttributeUrls, getUrlWithToken} from '../utils/url-utils';\n\nexport function normalizeTileData(tile, options, context) {\n tile.url = context.url;\n\n if (tile.featureData) {\n tile.featureUrl = `${tile.url}/${tile.featureData[0].href}`;\n }\n\n if (tile.geometryData) {\n tile.contentUrl = `${tile.url}/${tile.geometryData[0].href}`;\n }\n\n if (tile.textureData) {\n tile.textureUrl = `${tile.url}/${tile.textureData[0].href}`;\n }\n\n if (tile.attributeData) {\n tile.attributeUrls = generateTileAttributeUrls(tile);\n }\n\n return normalizeTileNonUrlData(tile);\n}\n\nexport function normalizeTileNonUrlData(tile) {\n const box = tile.obb\n ? [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center), // cartesian center of box\n ...tile.obb.halfSize, // halfSize\n ...tile.obb.quaternion // quaternion\n ]\n : undefined;\n let sphere;\n if (tile.mbs) {\n sphere = [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), // cartesian center of sphere\n tile.mbs[3] // radius of sphere\n ];\n } else if (box) {\n const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(\n box.slice(0, 3),\n tile.obb.halfSize,\n tile.obb.quaternion\n );\n const boundingSphere = obb.getBoundingSphere();\n sphere = [...boundingSphere.center, boundingSphere.radius];\n tile.mbs = [...tile.obb.center, boundingSphere.radius];\n }\n\n tile.boundingVolume = {\n sphere,\n box\n };\n tile.lodMetricType = tile.lodSelection[0].metricType;\n tile.lodMetricValue = tile.lodSelection[0].maxError;\n tile.transformMatrix = tile.transform;\n tile.type = TILE_TYPE.MESH;\n // TODO only support replacement for now\n tile.refine = TILE_REFINEMENT.REPLACE;\n\n return tile;\n}\n\nexport async function normalizeTilesetData(tileset, options, context) {\n tileset.url = context.url;\n\n if (tileset.nodePages) {\n tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);\n tileset.root = await tileset.nodePagesTile.formTileFromNodePages(0);\n } else {\n const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);\n // eslint-disable-next-line no-use-before-define\n tileset.root = await load(rootNodeUrl, tileset.loader, {\n i3s: {loadContent: false, isTileHeader: true, isTileset: false}\n });\n }\n\n // base path that non-absolute paths in tileset are relative to.\n tileset.basePath = tileset.url;\n tileset.type = TILESET_TYPE.I3S;\n\n // populate from root node\n tileset.lodMetricType = tileset.root.lodMetricType;\n tileset.lodMetricValue = tileset.root.lodMetricValue;\n}\n"],"file":"parse-i3s.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function getUrlWithToken(url, token = null) {
|
|
2
|
-
return token ?
|
|
2
|
+
return token ? "".concat(url, "?token=").concat(token) : url;
|
|
3
3
|
}
|
|
4
4
|
export function generateTileAttributeUrls(tile) {
|
|
5
5
|
const {
|
|
@@ -10,7 +10,7 @@ export function generateTileAttributeUrls(tile) {
|
|
|
10
10
|
|
|
11
11
|
for (let index = 0; index < attributeData.length; index++) {
|
|
12
12
|
const attributeUrl = attributeData[index].href.replace('./', '');
|
|
13
|
-
attributeUrls.push(
|
|
13
|
+
attributeUrls.push("".concat(url, "/").concat(attributeUrl));
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
return attributeUrls;
|
|
@@ -24,7 +24,7 @@ export function generateTilesetAttributeUrls(tileset, resource) {
|
|
|
24
24
|
|
|
25
25
|
for (let index = 0; index < attributeStorageInfo.length; index++) {
|
|
26
26
|
const fileName = attributeStorageInfo[index].key;
|
|
27
|
-
attributeUrls.push(
|
|
27
|
+
attributeUrls.push("".concat(url, "/nodes/").concat(resource, "/attributes/").concat(fileName, "/0"));
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
return attributeUrls;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/url-utils.ts"],"names":["getUrlWithToken","url","token","generateTileAttributeUrls","tile","attributeData","attributeUrls","index","length","attributeUrl","href","replace","push","generateTilesetAttributeUrls","tileset","resource","attributeStorageInfo","fileName","key"],"mappings":"AAQA,OAAO,SAASA,eAAT,CAAyBC,GAAzB,EAA8BC,KAAK,GAAG,IAAtC,EAA4C;AACjD,SAAOA,KAAK,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/url-utils.ts"],"names":["getUrlWithToken","url","token","generateTileAttributeUrls","tile","attributeData","attributeUrls","index","length","attributeUrl","href","replace","push","generateTilesetAttributeUrls","tileset","resource","attributeStorageInfo","fileName","key"],"mappings":"AAQA,OAAO,SAASA,eAAT,CAAyBC,GAAzB,EAA8BC,KAAK,GAAG,IAAtC,EAA4C;AACjD,SAAOA,KAAK,aAAMD,GAAN,oBAAmBC,KAAnB,IAA6BD,GAAzC;AACD;AAOD,OAAO,SAASE,yBAAT,CAAmCC,IAAnC,EAAyD;AAC9D,QAAM;AAACH,IAAAA,GAAD;AAAMI,IAAAA;AAAN,MAAuBD,IAA7B;AACA,QAAME,aAAuB,GAAG,EAAhC;;AAEA,OAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGF,aAAa,CAACG,MAA1C,EAAkDD,KAAK,EAAvD,EAA2D;AACzD,UAAME,YAAY,GAAGJ,aAAa,CAACE,KAAD,CAAb,CAAqBG,IAArB,CAA0BC,OAA1B,CAAkC,IAAlC,EAAwC,EAAxC,CAArB;AACAL,IAAAA,aAAa,CAACM,IAAd,WAAsBX,GAAtB,cAA6BQ,YAA7B;AACD;;AAED,SAAOH,aAAP;AACD;AAQD,OAAO,SAASO,4BAAT,CAAsCC,OAAtC,EAA+CC,QAA/C,EAAyD;AAC9D,QAAMT,aAAuB,GAAG,EAAhC;AACA,QAAM;AAACU,IAAAA,oBAAD;AAAuBf,IAAAA;AAAvB,MAA8Ba,OAApC;;AAEA,OAAK,IAAIP,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGS,oBAAoB,CAACR,MAAjD,EAAyDD,KAAK,EAA9D,EAAkE;AAChE,UAAMU,QAAQ,GAAGD,oBAAoB,CAACT,KAAD,CAApB,CAA4BW,GAA7C;AACAZ,IAAAA,aAAa,CAACM,IAAd,WAAsBX,GAAtB,oBAAmCc,QAAnC,yBAA0DE,QAA1D;AACD;;AAED,SAAOX,aAAP;AACD","sourcesContent":["import {Tile} from '../../types';\n\n/**\n * Generates url with token if it is exists.\n * @param {String} url\n * @param {any} token\n * @returns {string}\n */\nexport function getUrlWithToken(url, token = null) {\n return token ? `${url}?token=${token}` : url;\n}\n\n/**\n * Generates attribute urls for tile.\n * @param tile\n * @returns list of attribute urls\n */\nexport function generateTileAttributeUrls(tile: Tile): string[] {\n const {url, attributeData} = tile;\n const attributeUrls: string[] = [];\n\n for (let index = 0; index < attributeData.length; index++) {\n const attributeUrl = attributeData[index].href.replace('./', '');\n attributeUrls.push(`${url}/${attributeUrl}`);\n }\n\n return attributeUrls;\n}\n\n/**\n * Generates attribute urls for tileset based on tileset and resource\n * @param {Object} tileset\n * @param {number} resource\n * @returns {Array}\n */\nexport function generateTilesetAttributeUrls(tileset, resource) {\n const attributeUrls: string[] = [];\n const {attributeStorageInfo, url} = tileset;\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n const fileName = attributeStorageInfo[index].key;\n attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);\n }\n\n return attributeUrls;\n}\n"],"file":"url-utils.js"}
|