@loaders.gl/tile-converter 3.2.0-alpha.3 → 3.2.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/3d-tiles-attributes-worker.js +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +5 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -0
- package/dist/converter.min.js +1 -1
- package/dist/dist.min.js +52 -9
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +33 -22
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/constants.js +9 -0
- package/dist/es5/constants.js.map +1 -0
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +37 -23
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +29 -0
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +7 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +13 -3
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/layers.js +25 -0
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +8 -2
- package/dist/i3s-converter/json-templates/layers.d.ts +4 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
- package/dist/i3s-converter/json-templates/layers.js +24 -0
- package/package.json +20 -17
- package/src/3d-tiles-converter/3d-tiles-converter.ts +6 -1
- package/src/constants.ts +2 -0
- package/src/i3s-converter/i3s-converter.ts +9 -4
- package/src/i3s-converter/json-templates/layers.ts +25 -0
package/dist/dist.min.js
CHANGED
|
@@ -76958,7 +76958,7 @@ var Tileset3D = class {
|
|
|
76958
76958
|
this._destroy();
|
|
76959
76959
|
}
|
|
76960
76960
|
isLoaded() {
|
|
76961
|
-
return this._pendingCount === 0 && this._frameNumber !== 0;
|
|
76961
|
+
return this._pendingCount === 0 && this._frameNumber !== 0 && this._requestedTiles.length === 0;
|
|
76962
76962
|
}
|
|
76963
76963
|
get tiles() {
|
|
76964
76964
|
return Object.values(this._tiles);
|
|
@@ -77262,6 +77262,11 @@ var Tileset3D = class {
|
|
|
77262
77262
|
if (!loaded) {
|
|
77263
77263
|
return;
|
|
77264
77264
|
}
|
|
77265
|
+
if (this.type === TILESET_TYPE.I3S) {
|
|
77266
|
+
const nodesInNodePages = this.tileset?.nodePagesTile?.nodesInNodePages || 0;
|
|
77267
|
+
this.stats.get(TILES_TOTAL).reset();
|
|
77268
|
+
this.stats.get(TILES_TOTAL).addCount(nodesInNodePages);
|
|
77269
|
+
}
|
|
77265
77270
|
if (tile && tile.content) {
|
|
77266
77271
|
calculateTransformProps(tile, tile.content);
|
|
77267
77272
|
}
|
|
@@ -85212,6 +85217,26 @@ var NODE_PAGES = () => ({
|
|
|
85212
85217
|
default: "maxScreenThresholdSQ"
|
|
85213
85218
|
}
|
|
85214
85219
|
});
|
|
85220
|
+
var FULL_EXTENT = () => ({
|
|
85221
|
+
xmin: {
|
|
85222
|
+
path: "xmin"
|
|
85223
|
+
},
|
|
85224
|
+
ymin: {
|
|
85225
|
+
path: "ymin"
|
|
85226
|
+
},
|
|
85227
|
+
xmax: {
|
|
85228
|
+
path: "xmax"
|
|
85229
|
+
},
|
|
85230
|
+
ymax: {
|
|
85231
|
+
path: "ymax"
|
|
85232
|
+
},
|
|
85233
|
+
zmin: {
|
|
85234
|
+
path: "zmin"
|
|
85235
|
+
},
|
|
85236
|
+
zmax: {
|
|
85237
|
+
path: "zmax"
|
|
85238
|
+
}
|
|
85239
|
+
});
|
|
85215
85240
|
var LAYERS = () => ({
|
|
85216
85241
|
version: {
|
|
85217
85242
|
path: "version",
|
|
@@ -85244,6 +85269,10 @@ var LAYERS = () => ({
|
|
|
85244
85269
|
path: "store",
|
|
85245
85270
|
transform: (val) => (0, import_json_map_transform3.default)(val, STORE)
|
|
85246
85271
|
},
|
|
85272
|
+
fullExtent: {
|
|
85273
|
+
path: "fullExtent",
|
|
85274
|
+
transform: (val) => (0, import_json_map_transform3.default)(val, FULL_EXTENT())
|
|
85275
|
+
},
|
|
85247
85276
|
heightModelInfo: {
|
|
85248
85277
|
path: "heightModelInfo",
|
|
85249
85278
|
transform: (val) => (0, import_json_map_transform3.default)(val, HEIGHT_MODEL_INFO())
|
|
@@ -85656,8 +85685,11 @@ var I3SAttributesWorker = {
|
|
|
85656
85685
|
}
|
|
85657
85686
|
};
|
|
85658
85687
|
|
|
85688
|
+
// src/constants.ts
|
|
85689
|
+
var BROWSER_ERROR_MESSAGE = "Tile converter does not work in browser, only in node js environment";
|
|
85690
|
+
|
|
85659
85691
|
// src/i3s-converter/i3s-converter.ts
|
|
85660
|
-
var ION_DEFAULT_TOKEN = import_process.default.env
|
|
85692
|
+
var ION_DEFAULT_TOKEN = import_process.default.env?.IonToken || "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ";
|
|
85661
85693
|
var HARDCODED_NODES_PER_PAGE = 64;
|
|
85662
85694
|
var _3D_TILES = "3DTILES";
|
|
85663
85695
|
var _3D_OBJECT_LAYER_TYPE = "3DObject";
|
|
@@ -85695,6 +85727,10 @@ var I3SConverter = class {
|
|
|
85695
85727
|
this.layersHasTexture = false;
|
|
85696
85728
|
}
|
|
85697
85729
|
async convert(options) {
|
|
85730
|
+
if (isBrowser) {
|
|
85731
|
+
console.log(BROWSER_ERROR_MESSAGE);
|
|
85732
|
+
return BROWSER_ERROR_MESSAGE;
|
|
85733
|
+
}
|
|
85698
85734
|
this.conversionStartTime = import_process.default.hrtime();
|
|
85699
85735
|
const {
|
|
85700
85736
|
tilesetName,
|
|
@@ -85790,7 +85826,8 @@ var I3SConverter = class {
|
|
|
85790
85826
|
nodePages: {
|
|
85791
85827
|
nodesPerPage: HARDCODED_NODES_PER_PAGE
|
|
85792
85828
|
},
|
|
85793
|
-
compressGeometry: this.options.draco
|
|
85829
|
+
compressGeometry: this.options.draco,
|
|
85830
|
+
fullExtent
|
|
85794
85831
|
};
|
|
85795
85832
|
this.layers0 = (0, import_json_map_transform6.default)(layers0data, LAYERS());
|
|
85796
85833
|
}
|
|
@@ -86489,7 +86526,7 @@ function generateTilesetAttributeUrls(tileset, resource) {
|
|
|
86489
86526
|
}
|
|
86490
86527
|
|
|
86491
86528
|
// ../i3s/src/lib/parsers/constants.ts
|
|
86492
|
-
var
|
|
86529
|
+
var import_constants15 = __toModule(require_es516());
|
|
86493
86530
|
function getConstructorForDataFormat(dataType) {
|
|
86494
86531
|
switch (dataType) {
|
|
86495
86532
|
case DATA_TYPE.UInt8:
|
|
@@ -86507,11 +86544,11 @@ function getConstructorForDataFormat(dataType) {
|
|
|
86507
86544
|
}
|
|
86508
86545
|
}
|
|
86509
86546
|
var GL_TYPE_MAP = {
|
|
86510
|
-
UInt8:
|
|
86511
|
-
UInt16:
|
|
86512
|
-
Float32:
|
|
86513
|
-
UInt32:
|
|
86514
|
-
UInt64:
|
|
86547
|
+
UInt8: import_constants15.default.UNSIGNED_BYTE,
|
|
86548
|
+
UInt16: import_constants15.default.UNSIGNED_INT,
|
|
86549
|
+
Float32: import_constants15.default.FLOAT,
|
|
86550
|
+
UInt32: import_constants15.default.UNSIGNED_INT,
|
|
86551
|
+
UInt64: import_constants15.default.DOUBLE
|
|
86515
86552
|
};
|
|
86516
86553
|
function sizeOf(dataType) {
|
|
86517
86554
|
switch (dataType) {
|
|
@@ -86972,6 +87009,7 @@ var I3SNodePagesTiles = class {
|
|
|
86972
87009
|
this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
|
|
86973
87010
|
this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
|
|
86974
87011
|
this.options = options;
|
|
87012
|
+
this.nodesInNodePages = 0;
|
|
86975
87013
|
this.initSelectedFormatsForTextureDefinitions(tileset);
|
|
86976
87014
|
}
|
|
86977
87015
|
async getNodeById(id) {
|
|
@@ -86983,6 +87021,7 @@ var I3SNodePagesTiles = class {
|
|
|
86983
87021
|
promise: load(nodePageUrl, I3SNodePageLoader, this.options)
|
|
86984
87022
|
};
|
|
86985
87023
|
this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;
|
|
87024
|
+
this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
|
|
86986
87025
|
this.pendingNodePages[pageIndex].status = "Done";
|
|
86987
87026
|
}
|
|
86988
87027
|
if (this.pendingNodePages[pageIndex].status === "Pending") {
|
|
@@ -87662,6 +87701,10 @@ var Tiles3DConverter = class {
|
|
|
87662
87701
|
this.workerSource = {};
|
|
87663
87702
|
}
|
|
87664
87703
|
async convert(options) {
|
|
87704
|
+
if (isBrowser) {
|
|
87705
|
+
console.log(BROWSER_ERROR_MESSAGE);
|
|
87706
|
+
return BROWSER_ERROR_MESSAGE;
|
|
87707
|
+
}
|
|
87665
87708
|
const { inputUrl, outputPath, tilesetName, maxDepth, egmFilePath } = options;
|
|
87666
87709
|
this.conversionStartTime = import_process2.default.hrtime();
|
|
87667
87710
|
this.options = { maxDepth };
|
|
@@ -8,7 +8,7 @@ exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
|
|
|
8
8
|
|
|
9
9
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
10
10
|
|
|
11
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
11
|
+
var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
|
|
12
12
|
var Tile3dAttributesWorker = {
|
|
13
13
|
id: '3d-tiles-attributes',
|
|
14
14
|
name: '3DTiles Attributes Worker',
|
|
@@ -51,6 +51,8 @@ var _dTilesAttributesWorker = require("../3d-tiles-attributes-worker");
|
|
|
51
51
|
|
|
52
52
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
53
53
|
|
|
54
|
+
var _constants = require("../constants");
|
|
55
|
+
|
|
54
56
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
55
57
|
|
|
56
58
|
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; }
|
|
@@ -93,26 +95,35 @@ var Tiles3DConverter = function () {
|
|
|
93
95
|
while (1) {
|
|
94
96
|
switch (_context.prev = _context.next) {
|
|
95
97
|
case 0:
|
|
98
|
+
if (!_core.isBrowser) {
|
|
99
|
+
_context.next = 3;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(_constants.BROWSER_ERROR_MESSAGE);
|
|
104
|
+
return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
|
|
105
|
+
|
|
106
|
+
case 3:
|
|
96
107
|
inputUrl = options.inputUrl, outputPath = options.outputPath, tilesetName = options.tilesetName, maxDepth = options.maxDepth, egmFilePath = options.egmFilePath;
|
|
97
108
|
this.conversionStartTime = _process.default.hrtime();
|
|
98
109
|
this.options = {
|
|
99
110
|
maxDepth: maxDepth
|
|
100
111
|
};
|
|
101
112
|
console.log('Loading egm file...');
|
|
102
|
-
_context.next =
|
|
113
|
+
_context.next = 9;
|
|
103
114
|
return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
|
|
104
115
|
|
|
105
|
-
case
|
|
116
|
+
case 9:
|
|
106
117
|
this.geoidHeightModel = _context.sent;
|
|
107
118
|
console.log('Loading egm file completed!');
|
|
108
|
-
_context.next =
|
|
119
|
+
_context.next = 13;
|
|
109
120
|
return this.loadWorkers();
|
|
110
121
|
|
|
111
|
-
case
|
|
112
|
-
_context.next =
|
|
122
|
+
case 13:
|
|
123
|
+
_context.next = 15;
|
|
113
124
|
return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
|
|
114
125
|
|
|
115
|
-
case
|
|
126
|
+
case 15:
|
|
116
127
|
sourceTilesetJson = _context.sent;
|
|
117
128
|
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
|
|
118
129
|
loadOptions: {
|
|
@@ -122,10 +133,10 @@ var Tiles3DConverter = function () {
|
|
|
122
133
|
}
|
|
123
134
|
}
|
|
124
135
|
});
|
|
125
|
-
_context.next =
|
|
136
|
+
_context.next = 19;
|
|
126
137
|
return this.sourceTileset.tilesetInitializationPromise;
|
|
127
138
|
|
|
128
|
-
case
|
|
139
|
+
case 19:
|
|
129
140
|
rootNode = this.sourceTileset.root;
|
|
130
141
|
|
|
131
142
|
if (!rootNode.header.obb) {
|
|
@@ -134,19 +145,19 @@ var Tiles3DConverter = function () {
|
|
|
134
145
|
|
|
135
146
|
this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
|
|
136
147
|
this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
|
|
137
|
-
_context.prev =
|
|
138
|
-
_context.next =
|
|
148
|
+
_context.prev = 23;
|
|
149
|
+
_context.next = 26;
|
|
139
150
|
return (0, _fileUtils.removeDir)(this.tilesetPath);
|
|
140
151
|
|
|
141
|
-
case
|
|
142
|
-
_context.next =
|
|
152
|
+
case 26:
|
|
153
|
+
_context.next = 30;
|
|
143
154
|
break;
|
|
144
155
|
|
|
145
|
-
case
|
|
146
|
-
_context.prev =
|
|
147
|
-
_context.t0 = _context["catch"](
|
|
156
|
+
case 28:
|
|
157
|
+
_context.prev = 28;
|
|
158
|
+
_context.t0 = _context["catch"](23);
|
|
148
159
|
|
|
149
|
-
case
|
|
160
|
+
case 30:
|
|
150
161
|
rootTile = {
|
|
151
162
|
boundingVolume: {
|
|
152
163
|
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
|
|
@@ -154,17 +165,17 @@ var Tiles3DConverter = function () {
|
|
|
154
165
|
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
|
|
155
166
|
children: []
|
|
156
167
|
};
|
|
157
|
-
_context.next =
|
|
168
|
+
_context.next = 33;
|
|
158
169
|
return this._addChildren(rootNode, rootTile, 1);
|
|
159
170
|
|
|
160
|
-
case
|
|
171
|
+
case 33:
|
|
161
172
|
tileset = (0, _jsonMapTransform.default)({
|
|
162
173
|
root: rootTile
|
|
163
174
|
}, (0, _tileset.TILESET)());
|
|
164
|
-
_context.next =
|
|
175
|
+
_context.next = 36;
|
|
165
176
|
return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
166
177
|
|
|
167
|
-
case
|
|
178
|
+
case 36:
|
|
168
179
|
this._finishConversion({
|
|
169
180
|
slpk: false,
|
|
170
181
|
outputPath: outputPath,
|
|
@@ -174,12 +185,12 @@ var Tiles3DConverter = function () {
|
|
|
174
185
|
workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
|
|
175
186
|
workerFarm.destroy();
|
|
176
187
|
|
|
177
|
-
case
|
|
188
|
+
case 39:
|
|
178
189
|
case "end":
|
|
179
190
|
return _context.stop();
|
|
180
191
|
}
|
|
181
192
|
}
|
|
182
|
-
}, _callee, this, [[
|
|
193
|
+
}, _callee, this, [[23, 28]]);
|
|
183
194
|
}));
|
|
184
195
|
|
|
185
196
|
function convert(_x) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","workerSource","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","loadWorkers","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","tilesetInitializationPromise","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","workerFarm","WorkerFarm","getWorkerFarm","destroy","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","featureAttributes","_loadChildAttributes","child","i3sAttributesData","tileContent","textureFormat","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime","tile3dAttributesWorkerUrl","Tile3dAttributesWorker","sourceResponse","text","source","tile3dWorkerSource"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {fetchFile, getLoaderOptions, load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\nimport {\n I3SAttributesData,\n Tile3dAttributesWorker\n /*transform3DTilesAttributesOnWorker*/\n} from '../3d-tiles-attributes-worker';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n workerSource: {[key: string]: string} = {};\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n this.workerSource = {};\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth?: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n await this.loadWorkers();\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n await this.sourceTileset.tilesetInitializationPromise;\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let featureAttributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n featureAttributes = await this._loadChildAttributes(\n sourceChild,\n this.attributeStorageInfo\n );\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const i3sAttributesData: I3SAttributesData = {\n tileContent: sourceChild.content,\n textureFormat: sourceChild?.header?.textureFormat\n };\n\n // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.\n // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {\n // source: this.workerSource.tile3dWorkerSource,\n // featureAttributes\n // });\n\n const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);\n\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);\n const source = await sourceResponse.text();\n\n this.workerSource.tile3dWorkerSource = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"file":"3d-tiles-converter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","workerSource","isBrowser","console","log","BROWSER_ERROR_MESSAGE","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","PGMLoader","loadWorkers","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","tilesetInitializationPromise","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","workerFarm","WorkerFarm","getWorkerFarm","destroy","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","featureAttributes","_loadChildAttributes","child","i3sAttributesData","tileContent","textureFormat","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime","tile3dAttributesWorkerUrl","Tile3dAttributesWorker","sourceResponse","text","source","tile3dWorkerSource"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\nimport {\n I3SAttributesData,\n Tile3dAttributesWorker\n /*transform3DTilesAttributesOnWorker*/\n} from '../3d-tiles-attributes-worker';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n workerSource: {[key: string]: string} = {};\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n this.workerSource = {};\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth?: number;\n egmFilePath: string;\n }): Promise<any> {\n if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n await this.loadWorkers();\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n await this.sourceTileset.tilesetInitializationPromise;\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let featureAttributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n featureAttributes = await this._loadChildAttributes(\n sourceChild,\n this.attributeStorageInfo\n );\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const i3sAttributesData: I3SAttributesData = {\n tileContent: sourceChild.content,\n textureFormat: sourceChild?.header?.textureFormat\n };\n\n // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.\n // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {\n // source: this.workerSource.tile3dWorkerSource,\n // featureAttributes\n // });\n\n const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);\n\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);\n const source = await sourceResponse.text();\n\n this.workerSource.tile3dWorkerSource = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"file":"3d-tiles-converter.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BROWSER_ERROR_MESSAGE = void 0;
|
|
7
|
+
var BROWSER_ERROR_MESSAGE = 'Tile converter does not work in browser, only in node js environment';
|
|
8
|
+
exports.BROWSER_ERROR_MESSAGE = BROWSER_ERROR_MESSAGE;
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/constants.ts"],"names":["BROWSER_ERROR_MESSAGE"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAChC,sEADK","sourcesContent":["export const BROWSER_ERROR_MESSAGE =\n 'Tile converter does not work in browser, only in node js environment';\n"],"file":"constants.js"}
|
|
@@ -8,7 +8,7 @@ exports._typecheckI3SAttributesWorker = exports.I3SAttributesWorker = void 0;
|
|
|
8
8
|
|
|
9
9
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
10
10
|
|
|
11
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
11
|
+
var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
|
|
12
12
|
var I3SAttributesWorker = {
|
|
13
13
|
id: 'i3s-attributes',
|
|
14
14
|
name: 'I3S Attributes Worker',
|
|
@@ -77,6 +77,10 @@ var _writeQueue = _interopRequireDefault(require("../lib/utils/write-queue"));
|
|
|
77
77
|
|
|
78
78
|
var _i3sAttributesWorker = require("../i3s-attributes-worker");
|
|
79
79
|
|
|
80
|
+
var _constants = require("../constants");
|
|
81
|
+
|
|
82
|
+
var _process$env;
|
|
83
|
+
|
|
80
84
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
81
85
|
|
|
82
86
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -87,7 +91,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
87
91
|
|
|
88
92
|
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; }
|
|
89
93
|
|
|
90
|
-
var ION_DEFAULT_TOKEN = _process.default.env.IonToken || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ';
|
|
94
|
+
var ION_DEFAULT_TOKEN = ((_process$env = _process.default.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken) || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ';
|
|
91
95
|
var HARDCODED_NODES_PER_PAGE = 64;
|
|
92
96
|
var _3D_TILES = '3DTILES';
|
|
93
97
|
var _3D_OBJECT_LAYER_TYPE = '3DObject';
|
|
@@ -149,6 +153,15 @@ var I3SConverter = function () {
|
|
|
149
153
|
while (1) {
|
|
150
154
|
switch (_context.prev = _context.next) {
|
|
151
155
|
case 0:
|
|
156
|
+
if (!_core.isBrowser) {
|
|
157
|
+
_context.next = 3;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
console.log(_constants.BROWSER_ERROR_MESSAGE);
|
|
162
|
+
return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
|
|
163
|
+
|
|
164
|
+
case 3:
|
|
152
165
|
this.conversionStartTime = _process.default.hrtime();
|
|
153
166
|
tilesetName = options.tilesetName, slpk = options.slpk, egmFilePath = options.egmFilePath, inputUrl = options.inputUrl, validate = options.validate, outputPath = options.outputPath, draco = options.draco, sevenZipExe = options.sevenZipExe, maxDepth = options.maxDepth, token = options.token, generateTextures = options.generateTextures, generateBoundingVolumes = options.generateBoundingVolumes;
|
|
154
167
|
this.options = {
|
|
@@ -167,10 +180,10 @@ var I3SConverter = function () {
|
|
|
167
180
|
this.writeQueue = new _writeQueue.default();
|
|
168
181
|
this.writeQueue.startListening();
|
|
169
182
|
console.log('Loading egm file...');
|
|
170
|
-
_context.next =
|
|
183
|
+
_context.next = 15;
|
|
171
184
|
return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
|
|
172
185
|
|
|
173
|
-
case
|
|
186
|
+
case 15:
|
|
174
187
|
this.geoidHeightModel = _context.sent;
|
|
175
188
|
console.log('Loading egm file completed!');
|
|
176
189
|
|
|
@@ -178,15 +191,15 @@ var I3SConverter = function () {
|
|
|
178
191
|
this.nodePages.useWriteFunction(_fileUtils.writeFileForSlpk);
|
|
179
192
|
}
|
|
180
193
|
|
|
181
|
-
_context.next =
|
|
194
|
+
_context.next = 20;
|
|
182
195
|
return this.loadWorkers();
|
|
183
196
|
|
|
184
|
-
case
|
|
185
|
-
_context.prev =
|
|
186
|
-
_context.next =
|
|
197
|
+
case 20:
|
|
198
|
+
_context.prev = 20;
|
|
199
|
+
_context.next = 23;
|
|
187
200
|
return this._fetchPreloadOptions();
|
|
188
201
|
|
|
189
|
-
case
|
|
202
|
+
case 23:
|
|
190
203
|
preloadOptions = _context.sent;
|
|
191
204
|
tilesetOptions = {
|
|
192
205
|
loadOptions: {
|
|
@@ -203,43 +216,43 @@ var I3SConverter = function () {
|
|
|
203
216
|
}
|
|
204
217
|
|
|
205
218
|
Object.assign(tilesetOptions, preloadOptions);
|
|
206
|
-
_context.next =
|
|
219
|
+
_context.next = 29;
|
|
207
220
|
return (0, _core.load)(inputUrl, this.Loader, tilesetOptions.loadOptions);
|
|
208
221
|
|
|
209
|
-
case
|
|
222
|
+
case 29:
|
|
210
223
|
sourceTilesetJson = _context.sent;
|
|
211
224
|
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, tilesetOptions);
|
|
212
|
-
_context.next =
|
|
225
|
+
_context.next = 33;
|
|
213
226
|
return this._createAndSaveTileset(outputPath, tilesetName);
|
|
214
227
|
|
|
215
|
-
case
|
|
216
|
-
_context.next =
|
|
228
|
+
case 33:
|
|
229
|
+
_context.next = 35;
|
|
217
230
|
return this._finishConversion({
|
|
218
231
|
slpk: Boolean(slpk),
|
|
219
232
|
outputPath: outputPath,
|
|
220
233
|
tilesetName: tilesetName
|
|
221
234
|
});
|
|
222
235
|
|
|
223
|
-
case 32:
|
|
224
|
-
return _context.abrupt("return", sourceTilesetJson);
|
|
225
|
-
|
|
226
236
|
case 35:
|
|
227
|
-
_context.
|
|
228
|
-
_context.t0 = _context["catch"](17);
|
|
229
|
-
throw _context.t0;
|
|
237
|
+
return _context.abrupt("return", sourceTilesetJson);
|
|
230
238
|
|
|
231
239
|
case 38:
|
|
232
240
|
_context.prev = 38;
|
|
241
|
+
_context.t0 = _context["catch"](20);
|
|
242
|
+
throw _context.t0;
|
|
243
|
+
|
|
244
|
+
case 41:
|
|
245
|
+
_context.prev = 41;
|
|
233
246
|
workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
|
|
234
247
|
workerFarm.destroy();
|
|
235
|
-
return _context.finish(
|
|
248
|
+
return _context.finish(41);
|
|
236
249
|
|
|
237
|
-
case
|
|
250
|
+
case 45:
|
|
238
251
|
case "end":
|
|
239
252
|
return _context.stop();
|
|
240
253
|
}
|
|
241
254
|
}
|
|
242
|
-
}, _callee, this, [[
|
|
255
|
+
}, _callee, this, [[20, 38, 41, 45]]);
|
|
243
256
|
}));
|
|
244
257
|
|
|
245
258
|
function convert(_x) {
|
|
@@ -352,7 +365,8 @@ var I3SConverter = function () {
|
|
|
352
365
|
nodePages: {
|
|
353
366
|
nodesPerPage: HARDCODED_NODES_PER_PAGE
|
|
354
367
|
},
|
|
355
|
-
compressGeometry: this.options.draco
|
|
368
|
+
compressGeometry: this.options.draco,
|
|
369
|
+
fullExtent: fullExtent
|
|
356
370
|
};
|
|
357
371
|
this.layers0 = (0, _jsonMapTransform.default)(layers0data, (0, _layers.LAYERS)());
|
|
358
372
|
}
|