@loaders.gl/tile-converter 3.2.5 → 3.2.8
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 +3 -3
- package/dist/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/converter.min.js +10 -10
- package/dist/dist.min.js +161 -106
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-converter/helpers/node-pages.js +102 -46
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +204 -105
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +66 -28
- package/dist/es5/lib/utils/write-queue.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/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-converter/helpers/node-pages.js +3 -3
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +16 -16
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +10 -0
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-attributes-worker.js.map +1 -1
- package/dist/i3s-converter/helpers/node-pages.js +3 -3
- package/dist/i3s-converter/i3s-converter.js +16 -16
- package/dist/lib/utils/write-queue.d.ts +1 -0
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.js +13 -0
- package/package.json +15 -15
- package/src/i3s-converter/helpers/node-pages.ts +3 -3
- package/src/i3s-converter/i3s-converter.ts +16 -16
- package/src/lib/utils/write-queue.ts +12 -0
package/dist/dist.min.js
CHANGED
|
@@ -32723,22 +32723,22 @@ var require_zip_archive_output_stream = __commonJS({
|
|
|
32723
32723
|
};
|
|
32724
32724
|
ZipArchiveOutputStream.prototype._smartStream = function(ae, callback) {
|
|
32725
32725
|
var deflate = ae.getMethod() === constants.METHOD_DEFLATED;
|
|
32726
|
-
var
|
|
32726
|
+
var process5 = deflate ? new DeflateCRC32Stream(this.options.zlib) : new CRC32Stream();
|
|
32727
32727
|
var error = null;
|
|
32728
32728
|
function handleStuff() {
|
|
32729
|
-
var digest =
|
|
32729
|
+
var digest = process5.digest().readUInt32BE(0);
|
|
32730
32730
|
ae.setCrc(digest);
|
|
32731
|
-
ae.setSize(
|
|
32732
|
-
ae.setCompressedSize(
|
|
32731
|
+
ae.setSize(process5.size());
|
|
32732
|
+
ae.setCompressedSize(process5.size(true));
|
|
32733
32733
|
this._afterAppend(ae);
|
|
32734
32734
|
callback(error, ae);
|
|
32735
32735
|
}
|
|
32736
|
-
|
|
32737
|
-
|
|
32736
|
+
process5.once("end", handleStuff.bind(this));
|
|
32737
|
+
process5.once("error", function(err) {
|
|
32738
32738
|
error = err;
|
|
32739
32739
|
});
|
|
32740
|
-
|
|
32741
|
-
return
|
|
32740
|
+
process5.pipe(this, { end: false });
|
|
32741
|
+
return process5;
|
|
32742
32742
|
};
|
|
32743
32743
|
ZipArchiveOutputStream.prototype._writeCentralDirectoryEnd = function() {
|
|
32744
32744
|
var records = this._entries.length;
|
|
@@ -73572,6 +73572,22 @@ function isTransferable(object) {
|
|
|
73572
73572
|
}
|
|
73573
73573
|
return false;
|
|
73574
73574
|
}
|
|
73575
|
+
function getTransferListForWriter(object) {
|
|
73576
|
+
if (object === null) {
|
|
73577
|
+
return {};
|
|
73578
|
+
}
|
|
73579
|
+
const clone2 = Object.assign({}, object);
|
|
73580
|
+
Object.keys(clone2).forEach((key) => {
|
|
73581
|
+
if (typeof object[key] === "object" && !ArrayBuffer.isView(object[key])) {
|
|
73582
|
+
clone2[key] = getTransferListForWriter(object[key]);
|
|
73583
|
+
} else if (typeof clone2[key] === "function" || clone2[key] instanceof RegExp) {
|
|
73584
|
+
clone2[key] = {};
|
|
73585
|
+
} else {
|
|
73586
|
+
clone2[key] = object[key];
|
|
73587
|
+
}
|
|
73588
|
+
});
|
|
73589
|
+
return clone2;
|
|
73590
|
+
}
|
|
73575
73591
|
|
|
73576
73592
|
// ../worker-utils/src/lib/worker-farm/worker-thread.ts
|
|
73577
73593
|
var NOOP = () => {
|
|
@@ -73590,7 +73606,7 @@ var WorkerThread = class {
|
|
|
73590
73606
|
this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
|
|
73591
73607
|
}
|
|
73592
73608
|
static isSupported() {
|
|
73593
|
-
return typeof Worker !== "undefined" && isBrowser2 || typeof worker_threads_exports.Worker !==
|
|
73609
|
+
return typeof Worker !== "undefined" && isBrowser2 || typeof worker_threads_exports.Worker !== "undefined" && !isBrowser2;
|
|
73594
73610
|
}
|
|
73595
73611
|
destroy() {
|
|
73596
73612
|
this.onMessage = NOOP;
|
|
@@ -73821,27 +73837,6 @@ var WorkerFarm = class {
|
|
|
73821
73837
|
}
|
|
73822
73838
|
};
|
|
73823
73839
|
|
|
73824
|
-
// ../worker-utils/src/lib/worker-utils/remove-nontransferable-options.ts
|
|
73825
|
-
function removeNontransferableOptions(object) {
|
|
73826
|
-
return JSON.parse(stringifyJSON(object));
|
|
73827
|
-
}
|
|
73828
|
-
function stringifyJSON(v) {
|
|
73829
|
-
const cache = new Set();
|
|
73830
|
-
return JSON.stringify(v, (key, value) => {
|
|
73831
|
-
if (typeof value === "object" && value !== null) {
|
|
73832
|
-
if (cache.has(value)) {
|
|
73833
|
-
try {
|
|
73834
|
-
return JSON.parse(JSON.stringify(value));
|
|
73835
|
-
} catch (err) {
|
|
73836
|
-
return void 0;
|
|
73837
|
-
}
|
|
73838
|
-
}
|
|
73839
|
-
cache.add(value);
|
|
73840
|
-
}
|
|
73841
|
-
return value;
|
|
73842
|
-
});
|
|
73843
|
-
}
|
|
73844
|
-
|
|
73845
73840
|
// ../worker-utils/src/lib/worker-api/get-worker-url.ts
|
|
73846
73841
|
var NPM_TAG = "latest";
|
|
73847
73842
|
var VERSION2 = typeof VERSION !== "undefined" ? VERSION : NPM_TAG;
|
|
@@ -73883,7 +73878,7 @@ async function processOnWorker(worker, data, options = {}, context = {}) {
|
|
|
73883
73878
|
const workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
73884
73879
|
const jobName = options.jobName || worker.name;
|
|
73885
73880
|
const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
|
|
73886
|
-
const transferableOptions =
|
|
73881
|
+
const transferableOptions = getTransferListForWriter(options);
|
|
73887
73882
|
job.postMessage("process", { input: data, options: transferableOptions });
|
|
73888
73883
|
const result = await job.result;
|
|
73889
73884
|
return result.result;
|
|
@@ -75721,14 +75716,13 @@ var cullingVolume = new import_culling.CullingVolume([
|
|
|
75721
75716
|
function getFrameState(viewport, frameNumber) {
|
|
75722
75717
|
const { cameraDirection, cameraUp, height } = viewport;
|
|
75723
75718
|
const { metersPerUnit } = viewport.distanceScales;
|
|
75724
|
-
const
|
|
75725
|
-
const viewportCenterCartesian = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(viewportCenterCartographic, new import_core2.Vector3());
|
|
75719
|
+
const viewportCenterCartesian = worldToCartesian(viewport, viewport.center);
|
|
75726
75720
|
const enuToFixedTransform = import_geospatial2.Ellipsoid.WGS84.eastNorthUpToFixedFrame(viewportCenterCartesian);
|
|
75727
75721
|
const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
|
|
75728
75722
|
const cameraPositionCartesian2 = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new import_core2.Vector3());
|
|
75729
75723
|
const cameraDirectionCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraDirection).scale(metersPerUnit))).normalize();
|
|
75730
75724
|
const cameraUpCartesian = new import_core2.Vector3(enuToFixedTransform.transformAsVector(new import_core2.Vector3(cameraUp).scale(metersPerUnit))).normalize();
|
|
75731
|
-
commonSpacePlanesToWGS84(viewport
|
|
75725
|
+
commonSpacePlanesToWGS84(viewport);
|
|
75732
75726
|
const ViewportClass = viewport.constructor;
|
|
75733
75727
|
const { longitude, latitude, width, bearing, zoom } = viewport;
|
|
75734
75728
|
const topDownViewport = new ViewportClass({
|
|
@@ -75778,18 +75772,32 @@ function limitSelectedTiles(tiles, frameState, maximumTilesSelected) {
|
|
|
75778
75772
|
}
|
|
75779
75773
|
return [selectedTiles, unselectedTiles];
|
|
75780
75774
|
}
|
|
75781
|
-
function commonSpacePlanesToWGS84(viewport
|
|
75775
|
+
function commonSpacePlanesToWGS84(viewport) {
|
|
75782
75776
|
const frustumPlanes = viewport.getFrustumPlanes();
|
|
75777
|
+
const nearCenterCommon = closestPointOnPlane(frustumPlanes.near, viewport.cameraPosition);
|
|
75778
|
+
const nearCenterCartesian = worldToCartesian(viewport, nearCenterCommon);
|
|
75779
|
+
const cameraCartesian = worldToCartesian(viewport, viewport.cameraPosition, scratchPosition);
|
|
75783
75780
|
let i = 0;
|
|
75781
|
+
cullingVolume.planes[i++].fromPointNormal(nearCenterCartesian, scratchVector.copy(nearCenterCartesian).subtract(cameraCartesian));
|
|
75784
75782
|
for (const dir in frustumPlanes) {
|
|
75783
|
+
if (dir === "near") {
|
|
75784
|
+
continue;
|
|
75785
|
+
}
|
|
75785
75786
|
const plane = frustumPlanes[dir];
|
|
75786
|
-
const
|
|
75787
|
-
|
|
75788
|
-
|
|
75789
|
-
const cartesianPos = import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cartographicPos, new import_core2.Vector3());
|
|
75790
|
-
cullingVolume.planes[i++].fromPointNormal(cartesianPos, scratchVector.copy(viewportCenterCartesian).subtract(cartesianPos));
|
|
75787
|
+
const posCommon = closestPointOnPlane(plane, nearCenterCommon, scratchPosition);
|
|
75788
|
+
const cartesianPos = worldToCartesian(viewport, posCommon, scratchPosition);
|
|
75789
|
+
cullingVolume.planes[i++].fromPointNormal(cartesianPos, scratchVector.copy(nearCenterCartesian).subtract(cartesianPos));
|
|
75791
75790
|
}
|
|
75792
75791
|
}
|
|
75792
|
+
function closestPointOnPlane(plane, refPoint, out = new import_core2.Vector3()) {
|
|
75793
|
+
const distanceToRef = plane.normal.dot(refPoint);
|
|
75794
|
+
out.copy(plane.normal).scale(plane.distance - distanceToRef).add(refPoint);
|
|
75795
|
+
return out;
|
|
75796
|
+
}
|
|
75797
|
+
function worldToCartesian(viewport, point, out = new import_core2.Vector3()) {
|
|
75798
|
+
const cartographicPos = viewport.unprojectPosition(point);
|
|
75799
|
+
return import_geospatial2.Ellipsoid.WGS84.cartographicToCartesian(cartographicPos, out);
|
|
75800
|
+
}
|
|
75793
75801
|
|
|
75794
75802
|
// ../tiles/src/tileset/helpers/zoom.ts
|
|
75795
75803
|
var import_core3 = __toModule(require_es56());
|
|
@@ -76156,7 +76164,7 @@ var TilesetTraverser = class {
|
|
|
76156
76164
|
this.requestedTiles = {};
|
|
76157
76165
|
this.emptyTiles = {};
|
|
76158
76166
|
}
|
|
76159
|
-
|
|
76167
|
+
traversalFinished(frameState) {
|
|
76160
76168
|
return true;
|
|
76161
76169
|
}
|
|
76162
76170
|
traverse(root, frameState, options) {
|
|
@@ -76207,7 +76215,7 @@ var TilesetTraverser = class {
|
|
|
76207
76215
|
tile._shouldRefine = shouldRefine && parentRefines;
|
|
76208
76216
|
}
|
|
76209
76217
|
const newTime = new Date().getTime();
|
|
76210
|
-
if (this.traversalFinished || newTime - this.lastUpdate > this.updateDebounceTime) {
|
|
76218
|
+
if (this.traversalFinished(frameState) || newTime - this.lastUpdate > this.updateDebounceTime) {
|
|
76211
76219
|
this.lastUpdate = newTime;
|
|
76212
76220
|
this.options.onTraversalEnd(frameState);
|
|
76213
76221
|
}
|
|
@@ -76744,21 +76752,27 @@ var Tileset3DTraverser = class extends TilesetTraverser {
|
|
|
76744
76752
|
}
|
|
76745
76753
|
};
|
|
76746
76754
|
|
|
76747
|
-
// ../tiles/src/tileset/traversers/i3s-
|
|
76755
|
+
// ../tiles/src/tileset/traversers/i3s-pending-tiles-register.ts
|
|
76748
76756
|
var I3SPendingTilesRegister = class {
|
|
76749
76757
|
constructor() {
|
|
76750
76758
|
this.frameNumberMap = new Map();
|
|
76751
76759
|
}
|
|
76752
|
-
register(frameNumber) {
|
|
76753
|
-
const
|
|
76754
|
-
|
|
76760
|
+
register(viewportId, frameNumber) {
|
|
76761
|
+
const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
|
|
76762
|
+
const oldCount = viewportMap.get(frameNumber) || 0;
|
|
76763
|
+
viewportMap.set(frameNumber, oldCount + 1);
|
|
76764
|
+
this.frameNumberMap.set(viewportId, viewportMap);
|
|
76755
76765
|
}
|
|
76756
|
-
deregister(frameNumber) {
|
|
76757
|
-
const
|
|
76758
|
-
|
|
76766
|
+
deregister(viewportId, frameNumber) {
|
|
76767
|
+
const viewportMap = this.frameNumberMap.get(viewportId);
|
|
76768
|
+
if (!viewportMap) {
|
|
76769
|
+
return;
|
|
76770
|
+
}
|
|
76771
|
+
const oldCount = viewportMap.get(frameNumber) || 1;
|
|
76772
|
+
viewportMap.set(frameNumber, oldCount - 1);
|
|
76759
76773
|
}
|
|
76760
|
-
isZero(frameNumber) {
|
|
76761
|
-
const count = this.frameNumberMap.get(frameNumber) || 0;
|
|
76774
|
+
isZero(viewportId, frameNumber) {
|
|
76775
|
+
const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;
|
|
76762
76776
|
return count === 0;
|
|
76763
76777
|
}
|
|
76764
76778
|
};
|
|
@@ -76776,41 +76790,58 @@ var I3STileManager = class {
|
|
|
76776
76790
|
}
|
|
76777
76791
|
add(request, key, callback, frameState) {
|
|
76778
76792
|
if (!this._statusMap[key]) {
|
|
76779
|
-
const {
|
|
76793
|
+
const {
|
|
76794
|
+
frameNumber,
|
|
76795
|
+
viewport: { id }
|
|
76796
|
+
} = frameState;
|
|
76780
76797
|
this._statusMap[key] = { request, callback, key, frameState, status: STATUS.REQUESTED };
|
|
76781
|
-
this.pendingTilesRegister.register(frameNumber);
|
|
76798
|
+
this.pendingTilesRegister.register(id, frameNumber);
|
|
76782
76799
|
request().then((data) => {
|
|
76783
76800
|
this._statusMap[key].status = STATUS.COMPLETED;
|
|
76784
|
-
const {
|
|
76785
|
-
|
|
76801
|
+
const {
|
|
76802
|
+
frameNumber: actualFrameNumber,
|
|
76803
|
+
viewport: { id: id2 }
|
|
76804
|
+
} = this._statusMap[key].frameState;
|
|
76805
|
+
this.pendingTilesRegister.deregister(id2, actualFrameNumber);
|
|
76786
76806
|
this._statusMap[key].callback(data, frameState);
|
|
76787
76807
|
}).catch((error) => {
|
|
76788
76808
|
this._statusMap[key].status = STATUS.ERROR;
|
|
76789
|
-
const {
|
|
76790
|
-
|
|
76809
|
+
const {
|
|
76810
|
+
frameNumber: actualFrameNumber,
|
|
76811
|
+
viewport: { id: id2 }
|
|
76812
|
+
} = this._statusMap[key].frameState;
|
|
76813
|
+
this.pendingTilesRegister.deregister(id2, actualFrameNumber);
|
|
76791
76814
|
callback(error);
|
|
76792
76815
|
});
|
|
76793
76816
|
}
|
|
76794
76817
|
}
|
|
76795
76818
|
update(key, frameState) {
|
|
76796
76819
|
if (this._statusMap[key]) {
|
|
76797
|
-
|
|
76798
|
-
|
|
76820
|
+
const {
|
|
76821
|
+
frameNumber,
|
|
76822
|
+
viewport: { id }
|
|
76823
|
+
} = this._statusMap[key].frameState;
|
|
76824
|
+
this.pendingTilesRegister.deregister(id, frameNumber);
|
|
76825
|
+
const {
|
|
76826
|
+
frameNumber: newFrameNumber,
|
|
76827
|
+
viewport: { id: newViewportId }
|
|
76828
|
+
} = frameState;
|
|
76829
|
+
this.pendingTilesRegister.register(newViewportId, newFrameNumber);
|
|
76799
76830
|
this._statusMap[key].frameState = frameState;
|
|
76800
76831
|
}
|
|
76801
76832
|
}
|
|
76802
76833
|
find(key) {
|
|
76803
76834
|
return this._statusMap[key];
|
|
76804
76835
|
}
|
|
76805
|
-
hasPendingTiles(frameNumber) {
|
|
76806
|
-
return !this.pendingTilesRegister.isZero(frameNumber);
|
|
76836
|
+
hasPendingTiles(viewportId, frameNumber) {
|
|
76837
|
+
return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
|
|
76807
76838
|
}
|
|
76808
76839
|
};
|
|
76809
76840
|
|
|
76810
76841
|
// ../tiles/src/tileset/traversers/i3s-tileset-traverser.ts
|
|
76811
76842
|
var I3STilesetTraverser = class extends TilesetTraverser {
|
|
76812
|
-
|
|
76813
|
-
return !this._tileManager.hasPendingTiles(this._frameNumber || 0);
|
|
76843
|
+
traversalFinished(frameState) {
|
|
76844
|
+
return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
|
|
76814
76845
|
}
|
|
76815
76846
|
constructor(options) {
|
|
76816
76847
|
super(options);
|
|
@@ -76862,7 +76893,7 @@ var I3STilesetTraverser = class extends TilesetTraverser {
|
|
|
76862
76893
|
tile.children.push(childTile);
|
|
76863
76894
|
const frameState = this._tileManager.find(childTile.id).frameState;
|
|
76864
76895
|
this.updateTile(childTile, frameState);
|
|
76865
|
-
if (this._frameNumber === frameState.frameNumber && (this.traversalFinished || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
|
|
76896
|
+
if (this._frameNumber === frameState.frameNumber && (this.traversalFinished(frameState) || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {
|
|
76866
76897
|
this.executeTraversal(childTile, frameState);
|
|
76867
76898
|
}
|
|
76868
76899
|
}
|
|
@@ -76999,7 +77030,9 @@ var Tileset3D = class {
|
|
|
76999
77030
|
} else {
|
|
77000
77031
|
this.lastUpdatedVieports = viewports;
|
|
77001
77032
|
}
|
|
77002
|
-
|
|
77033
|
+
if (viewports) {
|
|
77034
|
+
this.doUpdate(viewports);
|
|
77035
|
+
}
|
|
77003
77036
|
});
|
|
77004
77037
|
}
|
|
77005
77038
|
async selectTiles(viewports = null) {
|
|
@@ -77010,7 +77043,9 @@ var Tileset3D = class {
|
|
|
77010
77043
|
if (!this.updatePromise) {
|
|
77011
77044
|
this.updatePromise = new Promise((resolve) => {
|
|
77012
77045
|
setTimeout(() => {
|
|
77013
|
-
|
|
77046
|
+
if (this.lastUpdatedVieports) {
|
|
77047
|
+
this.doUpdate(this.lastUpdatedVieports);
|
|
77048
|
+
}
|
|
77014
77049
|
resolve(this._frameNumber);
|
|
77015
77050
|
this.updatePromise = null;
|
|
77016
77051
|
}, this.options.debounceTime);
|
|
@@ -77018,21 +77053,19 @@ var Tileset3D = class {
|
|
|
77018
77053
|
}
|
|
77019
77054
|
return this.updatePromise;
|
|
77020
77055
|
}
|
|
77021
|
-
doUpdate(viewports
|
|
77056
|
+
doUpdate(viewports) {
|
|
77022
77057
|
if ("loadTiles" in this.options && !this.options.loadTiles) {
|
|
77023
77058
|
return;
|
|
77024
77059
|
}
|
|
77025
77060
|
if (this.traverseCounter > 0) {
|
|
77026
77061
|
return;
|
|
77027
77062
|
}
|
|
77028
|
-
|
|
77029
|
-
viewports = [viewports];
|
|
77030
|
-
}
|
|
77063
|
+
const preparedViewports = viewports instanceof Array ? viewports : [viewports];
|
|
77031
77064
|
this._cache.reset();
|
|
77032
77065
|
this._frameNumber++;
|
|
77033
|
-
this.traverseCounter =
|
|
77066
|
+
this.traverseCounter = preparedViewports.length;
|
|
77034
77067
|
const viewportsToTraverse = [];
|
|
77035
|
-
for (const viewport of
|
|
77068
|
+
for (const viewport of preparedViewports) {
|
|
77036
77069
|
const id = viewport.id;
|
|
77037
77070
|
if (this._needTraverse(id)) {
|
|
77038
77071
|
viewportsToTraverse.push(id);
|
|
@@ -77040,7 +77073,7 @@ var Tileset3D = class {
|
|
|
77040
77073
|
this.traverseCounter--;
|
|
77041
77074
|
}
|
|
77042
77075
|
}
|
|
77043
|
-
for (const viewport of
|
|
77076
|
+
for (const viewport of preparedViewports) {
|
|
77044
77077
|
const id = viewport.id;
|
|
77045
77078
|
if (!this.roots[id]) {
|
|
77046
77079
|
this.roots[id] = this._initializeTileHeaders(this.tileset, null);
|
|
@@ -77183,7 +77216,11 @@ var Tileset3D = class {
|
|
|
77183
77216
|
this.zoom = 1;
|
|
77184
77217
|
return;
|
|
77185
77218
|
}
|
|
77186
|
-
|
|
77219
|
+
if (center[0] !== 0 || center[1] !== 0 || center[2] !== 0) {
|
|
77220
|
+
this.cartographicCenter = import_geospatial6.Ellipsoid.WGS84.cartesianToCartographic(center, new import_core10.Vector3());
|
|
77221
|
+
} else {
|
|
77222
|
+
this.cartographicCenter = new import_core10.Vector3(0, 0, -import_geospatial6.Ellipsoid.WGS84.radii[0]);
|
|
77223
|
+
}
|
|
77187
77224
|
this.cartesianCenter = center;
|
|
77188
77225
|
this.zoom = getZoomFromBoundingVolume(root.boundingVolume, this.cartographicCenter);
|
|
77189
77226
|
}
|
|
@@ -83328,13 +83365,23 @@ function getRefine(refine) {
|
|
|
83328
83365
|
return refine;
|
|
83329
83366
|
}
|
|
83330
83367
|
}
|
|
83368
|
+
function resolveUri(uri, basePath) {
|
|
83369
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
83370
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
83371
|
+
const url = new URL(uri, `${basePath}/`);
|
|
83372
|
+
return decodeURI(url.toString());
|
|
83373
|
+
} else if (uri.startsWith("/")) {
|
|
83374
|
+
return uri;
|
|
83375
|
+
}
|
|
83376
|
+
return `${basePath}/${uri}`;
|
|
83377
|
+
}
|
|
83331
83378
|
function normalizeTileData(tile, options) {
|
|
83332
83379
|
if (!tile) {
|
|
83333
83380
|
return null;
|
|
83334
83381
|
}
|
|
83335
83382
|
if (tile.content) {
|
|
83336
83383
|
const contentUri = tile.content.uri || tile.content.url;
|
|
83337
|
-
tile.contentUrl =
|
|
83384
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
83338
83385
|
}
|
|
83339
83386
|
tile.id = tile.contentUrl;
|
|
83340
83387
|
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -83372,9 +83419,9 @@ async function normalizeImplicitTileHeaders(tileset) {
|
|
|
83372
83419
|
subtrees: { uri: subtreesUriTemplate }
|
|
83373
83420
|
} = implicitTilingExtension;
|
|
83374
83421
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
83375
|
-
const rootSubtreeUrl =
|
|
83422
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
83376
83423
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
83377
|
-
const contentUrlTemplate =
|
|
83424
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
83378
83425
|
const refine = tileset.root.refine;
|
|
83379
83426
|
const rootLodMetricValue = tileset.root.geometricError;
|
|
83380
83427
|
const rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -83743,7 +83790,7 @@ var stringify = import_dist.default.stringify;
|
|
|
83743
83790
|
var parse5 = import_dist.default.parse;
|
|
83744
83791
|
|
|
83745
83792
|
// src/i3s-converter/i3s-converter.ts
|
|
83746
|
-
var
|
|
83793
|
+
var import_process2 = __toModule(require("process"));
|
|
83747
83794
|
var import_json_map_transform6 = __toModule(require_json_map_transform());
|
|
83748
83795
|
var import_md52 = __toModule(require_md52());
|
|
83749
83796
|
|
|
@@ -83858,14 +83905,14 @@ var NodePages = class {
|
|
|
83858
83905
|
for (const [index, nodePage] of this.nodePages.entries()) {
|
|
83859
83906
|
const nodePageStr = JSON.stringify(nodePage);
|
|
83860
83907
|
const slpkPath = (0, import_path2.join)(layers0Path, "nodepages");
|
|
83861
|
-
writeQueue.enqueue({
|
|
83908
|
+
await writeQueue.enqueue({
|
|
83862
83909
|
archiveKey: `nodePages/${index.toString()}.json.gz`,
|
|
83863
83910
|
writePromise: this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
|
|
83864
83911
|
});
|
|
83865
83912
|
}
|
|
83866
83913
|
const metadata = (0, import_json_map_transform.default)({ nodeCount: this.nodesCounter }, METADATA());
|
|
83867
83914
|
const compress = false;
|
|
83868
|
-
writeQueue.enqueue({
|
|
83915
|
+
await writeQueue.enqueue({
|
|
83869
83916
|
archiveKey: "metadata.json",
|
|
83870
83917
|
writePromise: this.writeFile(layers0Path, JSON.stringify(metadata), "metadata.json", compress)
|
|
83871
83918
|
});
|
|
@@ -83873,7 +83920,7 @@ var NodePages = class {
|
|
|
83873
83920
|
for (const [index, nodePage] of this.nodePages.entries()) {
|
|
83874
83921
|
const nodePageStr = JSON.stringify(nodePage);
|
|
83875
83922
|
const nodePagePath = (0, import_path2.join)(layers0Path, "nodepages", index.toString());
|
|
83876
|
-
writeQueue.enqueue({ writePromise: this.writeFile(nodePagePath, nodePageStr) });
|
|
83923
|
+
await writeQueue.enqueue({ writePromise: this.writeFile(nodePagePath, nodePageStr) });
|
|
83877
83924
|
}
|
|
83878
83925
|
}
|
|
83879
83926
|
}
|
|
@@ -85618,6 +85665,8 @@ var Queue = class extends Array {
|
|
|
85618
85665
|
};
|
|
85619
85666
|
|
|
85620
85667
|
// src/lib/utils/write-queue.ts
|
|
85668
|
+
var import_process = __toModule(require("process"));
|
|
85669
|
+
var MEMORY_LIMIT = 4 * 1024 * 1024 * 1024;
|
|
85621
85670
|
var WriteQueue = class extends Queue {
|
|
85622
85671
|
constructor(listeningInterval = 2e3, writeConcurrency = 400) {
|
|
85623
85672
|
super();
|
|
@@ -85626,6 +85675,12 @@ var WriteQueue = class extends Queue {
|
|
|
85626
85675
|
this.listeningInterval = listeningInterval;
|
|
85627
85676
|
this.writeConcurrency = writeConcurrency;
|
|
85628
85677
|
}
|
|
85678
|
+
async enqueue(val) {
|
|
85679
|
+
super.enqueue(val);
|
|
85680
|
+
if (import_process.default.memoryUsage().rss > MEMORY_LIMIT) {
|
|
85681
|
+
await this.startWrite();
|
|
85682
|
+
}
|
|
85683
|
+
}
|
|
85629
85684
|
startListening() {
|
|
85630
85685
|
this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
|
|
85631
85686
|
}
|
|
@@ -85693,7 +85748,7 @@ var I3SAttributesWorker = {
|
|
|
85693
85748
|
var BROWSER_ERROR_MESSAGE = "Tile converter does not work in browser, only in node js environment";
|
|
85694
85749
|
|
|
85695
85750
|
// src/i3s-converter/i3s-converter.ts
|
|
85696
|
-
var ION_DEFAULT_TOKEN =
|
|
85751
|
+
var ION_DEFAULT_TOKEN = import_process2.default.env?.IonToken || "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ";
|
|
85697
85752
|
var HARDCODED_NODES_PER_PAGE = 64;
|
|
85698
85753
|
var _3D_TILES = "3DTILES";
|
|
85699
85754
|
var _3D_OBJECT_LAYER_TYPE = "3DObject";
|
|
@@ -85735,7 +85790,7 @@ var I3SConverter = class {
|
|
|
85735
85790
|
console.log(BROWSER_ERROR_MESSAGE);
|
|
85736
85791
|
return BROWSER_ERROR_MESSAGE;
|
|
85737
85792
|
}
|
|
85738
|
-
this.conversionStartTime =
|
|
85793
|
+
this.conversionStartTime = import_process2.default.hrtime();
|
|
85739
85794
|
const {
|
|
85740
85795
|
tilesetName,
|
|
85741
85796
|
slpk,
|
|
@@ -85867,12 +85922,12 @@ var I3SConverter = class {
|
|
|
85867
85922
|
const [child] = await this._createNode(root0, sourceRootTile, parentId, 0);
|
|
85868
85923
|
const childPath = (0, import_path7.join)(this.layers0Path, "nodes", child.path);
|
|
85869
85924
|
if (this.options.slpk) {
|
|
85870
|
-
this.writeQueue.enqueue({
|
|
85925
|
+
await this.writeQueue.enqueue({
|
|
85871
85926
|
archiveKey: "nodes/1/3dNodeIndexDocument.json.gz",
|
|
85872
85927
|
writePromise: writeFileForSlpk(childPath, JSON.stringify(child), "3dNodeIndexDocument.json")
|
|
85873
85928
|
});
|
|
85874
85929
|
} else {
|
|
85875
|
-
this.writeQueue.enqueue({ writePromise: writeFile3(childPath, JSON.stringify(child)) });
|
|
85930
|
+
await this.writeQueue.enqueue({ writePromise: writeFile3(childPath, JSON.stringify(child)) });
|
|
85876
85931
|
}
|
|
85877
85932
|
} else {
|
|
85878
85933
|
await this._addChildrenWithNeighborsAndWriteFile({
|
|
@@ -85886,24 +85941,24 @@ var I3SConverter = class {
|
|
|
85886
85941
|
}
|
|
85887
85942
|
async _writeLayers0() {
|
|
85888
85943
|
if (this.options.slpk) {
|
|
85889
|
-
this.writeQueue.enqueue({
|
|
85944
|
+
await this.writeQueue.enqueue({
|
|
85890
85945
|
archiveKey: "3dSceneLayer.json.gz",
|
|
85891
85946
|
writePromise: writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), "3dSceneLayer.json")
|
|
85892
85947
|
});
|
|
85893
85948
|
} else {
|
|
85894
|
-
this.writeQueue.enqueue({
|
|
85949
|
+
await this.writeQueue.enqueue({
|
|
85895
85950
|
writePromise: writeFile3(this.layers0Path, JSON.stringify(this.layers0))
|
|
85896
85951
|
});
|
|
85897
85952
|
}
|
|
85898
85953
|
}
|
|
85899
85954
|
async _writeNodeIndexDocument(root0, nodePath, rootPath) {
|
|
85900
85955
|
if (this.options.slpk) {
|
|
85901
|
-
this.writeQueue.enqueue({
|
|
85956
|
+
await this.writeQueue.enqueue({
|
|
85902
85957
|
archiveKey: `nodes/${nodePath}/3dNodeIndexDocument.json.gz`,
|
|
85903
85958
|
writePromise: writeFileForSlpk(rootPath, JSON.stringify(root0), "3dNodeIndexDocument.json")
|
|
85904
85959
|
});
|
|
85905
85960
|
} else {
|
|
85906
|
-
this.writeQueue.enqueue({ writePromise: writeFile3(rootPath, JSON.stringify(root0)) });
|
|
85961
|
+
await this.writeQueue.enqueue({ writePromise: writeFile3(rootPath, JSON.stringify(root0)) });
|
|
85907
85962
|
}
|
|
85908
85963
|
}
|
|
85909
85964
|
async _createSlpk(tilesetPath) {
|
|
@@ -86140,26 +86195,26 @@ var I3SConverter = class {
|
|
|
86140
86195
|
async _writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath) {
|
|
86141
86196
|
if (this.options.slpk) {
|
|
86142
86197
|
const slpkGeometryPath = (0, import_path7.join)(childPath, "geometries");
|
|
86143
|
-
this.writeQueue.enqueue({
|
|
86198
|
+
await this.writeQueue.enqueue({
|
|
86144
86199
|
archiveKey: `${slpkChildPath}/geometries/0.bin.gz`,
|
|
86145
86200
|
writePromise: writeFileForSlpk(slpkGeometryPath, geometryBuffer, "0.bin")
|
|
86146
86201
|
});
|
|
86147
86202
|
} else {
|
|
86148
86203
|
const geometryPath = (0, import_path7.join)(childPath, "geometries/0/");
|
|
86149
|
-
this.writeQueue.enqueue({
|
|
86204
|
+
await this.writeQueue.enqueue({
|
|
86150
86205
|
writePromise: writeFile3(geometryPath, geometryBuffer, "index.bin")
|
|
86151
86206
|
});
|
|
86152
86207
|
}
|
|
86153
86208
|
if (this.options.draco) {
|
|
86154
86209
|
if (this.options.slpk) {
|
|
86155
86210
|
const slpkCompressedGeometryPath = (0, import_path7.join)(childPath, "geometries");
|
|
86156
|
-
this.writeQueue.enqueue({
|
|
86211
|
+
await this.writeQueue.enqueue({
|
|
86157
86212
|
archiveKey: `${slpkChildPath}/geometries/1.bin.gz`,
|
|
86158
86213
|
writePromise: writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, "1.bin")
|
|
86159
86214
|
});
|
|
86160
86215
|
} else {
|
|
86161
86216
|
const compressedGeometryPath = (0, import_path7.join)(childPath, "geometries/1/");
|
|
86162
|
-
this.writeQueue.enqueue({
|
|
86217
|
+
await this.writeQueue.enqueue({
|
|
86163
86218
|
writePromise: writeFile3(compressedGeometryPath, compressedGeometry, "index.bin")
|
|
86164
86219
|
});
|
|
86165
86220
|
}
|
|
@@ -86174,13 +86229,13 @@ var I3SConverter = class {
|
|
|
86174
86229
|
const sharedDataStr = JSON.stringify(sharedData);
|
|
86175
86230
|
if (this.options.slpk) {
|
|
86176
86231
|
const slpkSharedPath = (0, import_path7.join)(childPath, "shared");
|
|
86177
|
-
this.writeQueue.enqueue({
|
|
86232
|
+
await this.writeQueue.enqueue({
|
|
86178
86233
|
archiveKey: `${slpkChildPath}/shared/sharedResource.json.gz`,
|
|
86179
86234
|
writePromise: writeFileForSlpk(slpkSharedPath, sharedDataStr, "sharedResource.json")
|
|
86180
86235
|
});
|
|
86181
86236
|
} else {
|
|
86182
86237
|
const sharedPath = (0, import_path7.join)(childPath, "shared/");
|
|
86183
|
-
this.writeQueue.enqueue({ writePromise: writeFile3(sharedPath, sharedDataStr) });
|
|
86238
|
+
await this.writeQueue.enqueue({ writePromise: writeFile3(sharedPath, sharedDataStr) });
|
|
86184
86239
|
}
|
|
86185
86240
|
}
|
|
86186
86241
|
async _writeTexture(texture, childPath, slpkChildPath) {
|
|
@@ -86224,13 +86279,13 @@ var I3SConverter = class {
|
|
|
86224
86279
|
if (this.options.slpk) {
|
|
86225
86280
|
const slpkTexturePath = (0, import_path7.join)(childPath, "textures");
|
|
86226
86281
|
const compress = false;
|
|
86227
|
-
this.writeQueue.enqueue({
|
|
86282
|
+
await this.writeQueue.enqueue({
|
|
86228
86283
|
archiveKey: `${slpkChildPath}/textures/${name8}.${format}`,
|
|
86229
86284
|
writePromise: writeFileForSlpk(slpkTexturePath, textureData, `${name8}.${format}`, compress)
|
|
86230
86285
|
});
|
|
86231
86286
|
} else {
|
|
86232
86287
|
const texturePath = (0, import_path7.join)(childPath, `textures/${name8}/`);
|
|
86233
|
-
this.writeQueue.enqueue({
|
|
86288
|
+
await this.writeQueue.enqueue({
|
|
86234
86289
|
writePromise: writeFile3(texturePath, textureData, `index.${format}`)
|
|
86235
86290
|
});
|
|
86236
86291
|
}
|
|
@@ -86242,13 +86297,13 @@ var I3SConverter = class {
|
|
|
86242
86297
|
const fileBuffer = new Uint8Array(attributes[index]);
|
|
86243
86298
|
if (this.options.slpk) {
|
|
86244
86299
|
const slpkAttributesPath = (0, import_path7.join)(childPath, "attributes", folderName);
|
|
86245
|
-
this.writeQueue.enqueue({
|
|
86300
|
+
await this.writeQueue.enqueue({
|
|
86246
86301
|
archiveKey: `${slpkChildPath}/attributes/${folderName}.bin.gz`,
|
|
86247
86302
|
writePromise: writeFileForSlpk(slpkAttributesPath, fileBuffer, "0.bin")
|
|
86248
86303
|
});
|
|
86249
86304
|
} else {
|
|
86250
86305
|
const attributesPath = (0, import_path7.join)(childPath, `attributes/${folderName}/0`);
|
|
86251
|
-
this.writeQueue.enqueue({
|
|
86306
|
+
await this.writeQueue.enqueue({
|
|
86252
86307
|
writePromise: writeFile3(attributesPath, fileBuffer, "index.bin")
|
|
86253
86308
|
});
|
|
86254
86309
|
}
|
|
@@ -86408,7 +86463,7 @@ var I3SConverter = class {
|
|
|
86408
86463
|
const { tilesCount, tilesWithAddRefineCount } = this.refinementCounter;
|
|
86409
86464
|
const addRefinementPercentage = tilesWithAddRefineCount ? tilesWithAddRefineCount / tilesCount * 100 : 0;
|
|
86410
86465
|
const filesSize = await calculateFilesSize(params);
|
|
86411
|
-
const diff =
|
|
86466
|
+
const diff = import_process2.default.hrtime(this.conversionStartTime);
|
|
86412
86467
|
const conversionTime = timeConverter(diff);
|
|
86413
86468
|
console.log(`------------------------------------------------`);
|
|
86414
86469
|
console.log(`Finishing conversion of ${_3D_TILES}`);
|
|
@@ -86426,15 +86481,15 @@ var I3SConverter = class {
|
|
|
86426
86481
|
"cesium-ion": { accessToken: this.options.token || ION_DEFAULT_TOKEN }
|
|
86427
86482
|
};
|
|
86428
86483
|
const preloadOptions = await this.Loader.preload(this.options.inputUrl, options);
|
|
86429
|
-
this.refreshTokenTime =
|
|
86484
|
+
this.refreshTokenTime = import_process2.default.hrtime();
|
|
86430
86485
|
return { ...options, ...preloadOptions };
|
|
86431
86486
|
}
|
|
86432
86487
|
async _updateTilesetOptions() {
|
|
86433
|
-
const diff =
|
|
86488
|
+
const diff = import_process2.default.hrtime(this.refreshTokenTime);
|
|
86434
86489
|
if (diff[0] < REFRESH_TOKEN_TIMEOUT) {
|
|
86435
86490
|
return;
|
|
86436
86491
|
}
|
|
86437
|
-
this.refreshTokenTime =
|
|
86492
|
+
this.refreshTokenTime = import_process2.default.hrtime();
|
|
86438
86493
|
const preloadOptions = await this._fetchPreloadOptions();
|
|
86439
86494
|
this.sourceTileset.options = { ...this.sourceTileset.options, ...preloadOptions };
|
|
86440
86495
|
if (preloadOptions.headers) {
|
|
@@ -86480,7 +86535,7 @@ var I3SConverter = class {
|
|
|
86480
86535
|
|
|
86481
86536
|
// src/3d-tiles-converter/3d-tiles-converter.ts
|
|
86482
86537
|
var import_path8 = __toModule(require("path"));
|
|
86483
|
-
var
|
|
86538
|
+
var import_process3 = __toModule(require("process"));
|
|
86484
86539
|
var import_json_map_transform8 = __toModule(require_json_map_transform());
|
|
86485
86540
|
|
|
86486
86541
|
// ../i3s/src/lib/parsers/parse-i3s-tile-content.ts
|
|
@@ -87710,7 +87765,7 @@ var Tiles3DConverter = class {
|
|
|
87710
87765
|
return BROWSER_ERROR_MESSAGE;
|
|
87711
87766
|
}
|
|
87712
87767
|
const { inputUrl, outputPath, tilesetName, maxDepth, egmFilePath } = options;
|
|
87713
|
-
this.conversionStartTime =
|
|
87768
|
+
this.conversionStartTime = import_process3.default.hrtime();
|
|
87714
87769
|
this.options = { maxDepth };
|
|
87715
87770
|
console.log("Loading egm file...");
|
|
87716
87771
|
this.geoidHeightModel = await load(egmFilePath, PGMLoader);
|
|
@@ -87860,7 +87915,7 @@ var Tiles3DConverter = class {
|
|
|
87860
87915
|
}
|
|
87861
87916
|
async _finishConversion(params) {
|
|
87862
87917
|
const filesSize = await calculateFilesSize(params);
|
|
87863
|
-
const diff =
|
|
87918
|
+
const diff = import_process3.default.hrtime(this.conversionStartTime);
|
|
87864
87919
|
const conversionTime = timeConverter(diff);
|
|
87865
87920
|
console.log(`------------------------------------------------`);
|
|
87866
87921
|
console.log(`Finish conversion of ${I3S}`);
|
|
@@ -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.
|
|
11
|
+
var VERSION = typeof "3.2.8" !== 'undefined' ? "3.2.8" : 'latest';
|
|
12
12
|
var Tile3dAttributesWorker = {
|
|
13
13
|
id: '3d-tiles-attributes',
|
|
14
14
|
name: '3DTiles Attributes Worker',
|
|
@@ -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.
|
|
11
|
+
var VERSION = typeof "3.2.8" !== 'undefined' ? "3.2.8" : 'latest';
|
|
12
12
|
var I3SAttributesWorker = {
|
|
13
13
|
id: 'i3s-attributes',
|
|
14
14
|
name: 'I3S Attributes Worker',
|