@loaders.gl/tile-converter 3.3.0-alpha.1 → 3.3.0-alpha.11
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.d.ts +3 -3
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
- package/dist/3d-tiles-attributes-worker.js +2 -3
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +8 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +57 -43
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -5
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +21 -17
- package/dist/converter-cli.js +29 -4
- package/dist/converter.min.js +24 -21
- package/dist/deps-installer/deps-installer.d.ts +5 -1
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +29 -1
- package/dist/dist.min.js +42714 -45782
- package/dist/es5/3d-tiles-attributes-worker.js +4 -7
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +125 -210
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +53 -85
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/converter-cli.js +25 -58
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +73 -28
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +3 -6
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +18 -29
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +8 -25
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +184 -0
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +60 -51
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +504 -350
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +57 -57
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-index-document.js +517 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +478 -168
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +770 -1131
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/layers.js +2 -107
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/node.js +2 -12
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +9 -32
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/app.js +0 -5
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +1 -10
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/index.js +0 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/utils/compress-util.js +19 -74
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +103 -47
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/queue.js +0 -14
- package/dist/es5/lib/utils/queue.js.map +1 -1
- package/dist/es5/lib/utils/statistic-utills.js +1 -46
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +86 -87
- package/dist/es5/lib/utils/write-queue.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -8
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/workers/3d-tiles-attributes-worker.js +2 -9
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/workers/i3s-attributes-worker.js +2 -10
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +4 -2
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +60 -77
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +29 -50
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/converter-cli.js +26 -43
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +30 -4
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +3 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +20 -24
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +11 -12
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +158 -0
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +39 -33
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +286 -192
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +59 -48
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js +202 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js +161 -87
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +217 -509
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/layers.js +2 -95
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/node.js +0 -4
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -15
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/app.js +0 -5
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/esm/i3s-server/routes/index.js +0 -3
- package/dist/esm/i3s-server/routes/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/utils/compress-util.js +19 -12
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +54 -11
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/lib/utils/queue.js +0 -4
- package/dist/esm/lib/utils/queue.js.map +1 -1
- package/dist/esm/lib/utils/statistic-utills.js +0 -11
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +29 -28
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +3 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/workers/i3s-attributes-worker.js +4 -1
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/i3s-attributes-worker.d.ts +7 -3
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -3
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +5 -6
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +18 -4
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +2 -2
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +8 -6
- package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
- package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js +42 -17
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +18 -6
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +337 -92
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +51 -32
- package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-index-document.js +250 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts +81 -42
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-pages.js +201 -93
- package/dist/i3s-converter/i3s-converter.d.ts +52 -108
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +223 -421
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
- package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
- package/dist/i3s-converter/json-templates/layers.js +2 -86
- package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
- package/dist/i3s-converter/types.d.ts +37 -55
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.d.ts +17 -1
- package/dist/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +64 -7
- package/dist/lib/utils/write-queue.d.ts +19 -2
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.js +26 -7
- package/dist/pgm-loader.d.ts.map +1 -1
- package/dist/pgm-loader.js +2 -1
- package/dist/workers/3d-tiles-attributes-worker.js +1 -1
- package/dist/workers/i3s-attributes-worker.js +1 -1
- package/package.json +18 -16
- package/src/3d-tiles-attributes-worker.ts +1 -1
- package/src/3d-tiles-converter/3d-tiles-converter.ts +71 -55
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +25 -18
- package/src/converter-cli.ts +38 -4
- package/src/deps-installer/deps-installer.ts +38 -2
- package/src/i3s-attributes-worker.ts +5 -1
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +38 -14
- package/src/i3s-converter/helpers/coordinate-converter.ts +10 -8
- package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
- package/src/i3s-converter/helpers/geometry-attributes.ts +46 -18
- package/src/i3s-converter/helpers/geometry-converter.ts +405 -108
- package/src/i3s-converter/helpers/gltf-attributes.ts +55 -35
- package/src/i3s-converter/helpers/node-index-document.ts +315 -0
- package/src/i3s-converter/helpers/node-pages.ts +222 -109
- package/src/i3s-converter/i3s-converter.ts +269 -500
- package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
- package/src/i3s-converter/json-templates/layers.ts +2 -91
- package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
- package/src/i3s-converter/types.ts +31 -51
- package/src/lib/utils/file-utils.ts +62 -7
- package/src/lib/utils/write-queue.ts +43 -10
- package/src/pgm-loader.ts +2 -2
- package/src/workers/3d-tiles-attributes-worker.ts +1 -1
- package/src/workers/i3s-attributes-worker.ts +2 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
const queue_1 = require("./queue");
|
|
7
|
+
const process_1 = __importDefault(require("process"));
|
|
8
|
+
/** Memory limit size is based on testing */
|
|
9
|
+
const MEMORY_LIMIT = 4 * 1024 * 1024 * 1024; // 4GB
|
|
4
10
|
class WriteQueue extends queue_1.Queue {
|
|
5
11
|
constructor(listeningInterval = 2000, writeConcurrency = 400) {
|
|
6
12
|
super();
|
|
@@ -9,6 +15,22 @@ class WriteQueue extends queue_1.Queue {
|
|
|
9
15
|
this.listeningInterval = listeningInterval;
|
|
10
16
|
this.writeConcurrency = writeConcurrency;
|
|
11
17
|
}
|
|
18
|
+
async enqueue(val, writeImmediately = false) {
|
|
19
|
+
if (writeImmediately) {
|
|
20
|
+
const { archiveKey, writePromise } = val;
|
|
21
|
+
const result = await writePromise();
|
|
22
|
+
if (archiveKey && result) {
|
|
23
|
+
this.fileMap[archiveKey] = result;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
super.enqueue(val);
|
|
28
|
+
/** https://nodejs.org/docs/latest-v14.x/api/process.html#process_process_memoryusage */
|
|
29
|
+
if (process_1.default.memoryUsage().rss > MEMORY_LIMIT) {
|
|
30
|
+
await this.startWrite();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
12
34
|
startListening() {
|
|
13
35
|
this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
|
|
14
36
|
}
|
|
@@ -18,12 +40,9 @@ class WriteQueue extends queue_1.Queue {
|
|
|
18
40
|
}
|
|
19
41
|
}
|
|
20
42
|
async startWrite() {
|
|
21
|
-
if (this.writePromise) {
|
|
22
|
-
|
|
23
|
-
this.writePromise = null;
|
|
24
|
-
return;
|
|
43
|
+
if (!this.writePromise) {
|
|
44
|
+
this.writePromise = this.doWrite();
|
|
25
45
|
}
|
|
26
|
-
this.writePromise = this.doWrite();
|
|
27
46
|
await this.writePromise;
|
|
28
47
|
this.writePromise = null;
|
|
29
48
|
}
|
|
@@ -42,12 +61,12 @@ class WriteQueue extends queue_1.Queue {
|
|
|
42
61
|
}
|
|
43
62
|
const { archiveKey, writePromise } = item;
|
|
44
63
|
archiveKeys.push(archiveKey);
|
|
45
|
-
|
|
64
|
+
const promise = writePromise();
|
|
65
|
+
promises.push(promise);
|
|
46
66
|
}
|
|
47
67
|
const writeResults = await Promise.allSettled(promises);
|
|
48
68
|
this.updateFileMap(archiveKeys, writeResults);
|
|
49
69
|
}
|
|
50
|
-
this.writePromise = null;
|
|
51
70
|
}
|
|
52
71
|
updateFileMap(archiveKeys, writeResults) {
|
|
53
72
|
for (let i = 0; i < archiveKeys.length; i++) {
|
package/dist/pgm-loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgm-loader.d.ts","sourceRoot":"","sources":["../src/pgm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"pgm-loader.d.ts","sourceRoot":"","sources":["../src/pgm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAO/D;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAavB,CAAC"}
|
package/dist/pgm-loader.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PGMLoader = void 0;
|
|
4
|
+
const geoid_1 = require("@math.gl/geoid");
|
|
4
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
5
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
6
7
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
7
|
-
const geoid_1 = require("@math.gl/geoid");
|
|
8
8
|
/**
|
|
9
9
|
* Loader for PGM - Netpbm grayscale image format
|
|
10
10
|
*/
|
|
@@ -14,6 +14,7 @@ exports.PGMLoader = {
|
|
|
14
14
|
module: 'tile-converter',
|
|
15
15
|
version: VERSION,
|
|
16
16
|
mimeTypes: ['image/x-portable-graymap'],
|
|
17
|
+
// @ts-expect-error LoaderOptions does not have cubic parameter
|
|
17
18
|
parse: async (arrayBuffer, options) => (0, geoid_1.parsePGM)(new Uint8Array(arrayBuffer), options),
|
|
18
19
|
extensions: ['pgm'],
|
|
19
20
|
options: {
|
|
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const worker_utils_1 = require("@loaders.gl/worker-utils");
|
|
7
7
|
const b3dm_converter_1 = __importDefault(require("../3d-tiles-converter/helpers/b3dm-converter"));
|
|
8
8
|
const b3dmConverter = new b3dm_converter_1.default();
|
|
9
|
-
(0, worker_utils_1.createWorker)(async (data, options = {}) => b3dmConverter.convert(data, options.
|
|
9
|
+
(0, worker_utils_1.createWorker)(async (data, options = {}) => b3dmConverter.convert(data, options.featureAttributes));
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const worker_utils_1 = require("@loaders.gl/worker-utils");
|
|
4
4
|
const geometry_converter_1 = require("../i3s-converter/helpers/geometry-converter");
|
|
5
|
-
(0, worker_utils_1.createWorker)(async (data, options = {}) => await (0, geometry_converter_1.convertAttributes)(data, options.useCartesianPositions));
|
|
5
|
+
(0, worker_utils_1.createWorker)(async (data, options = {}) => await (0, geometry_converter_1.convertAttributes)(data, options.materialAndTextureList, options.useCartesianPositions));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tile-converter",
|
|
3
|
-
"version": "3.3.0-alpha.
|
|
3
|
+
"version": "3.3.0-alpha.11",
|
|
4
4
|
"description": "Converter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -43,19 +43,19 @@
|
|
|
43
43
|
"build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@loaders.gl/3d-tiles": "3.3.0-alpha.
|
|
47
|
-
"@loaders.gl/crypto": "3.3.0-alpha.
|
|
48
|
-
"@loaders.gl/draco": "3.3.0-alpha.
|
|
49
|
-
"@loaders.gl/gltf": "3.3.0-alpha.
|
|
50
|
-
"@loaders.gl/i3s": "3.3.0-alpha.
|
|
51
|
-
"@loaders.gl/images": "3.3.0-alpha.
|
|
52
|
-
"@loaders.gl/loader-utils": "3.3.0-alpha.
|
|
53
|
-
"@loaders.gl/polyfills": "3.3.0-alpha.
|
|
54
|
-
"@loaders.gl/schema": "3.3.0-alpha.
|
|
55
|
-
"@loaders.gl/textures": "3.3.0-alpha.
|
|
56
|
-
"@loaders.gl/tiles": "3.3.0-alpha.
|
|
57
|
-
"@loaders.gl/worker-utils": "3.3.0-alpha.
|
|
58
|
-
"@loaders.gl/zip": "3.3.0-alpha.
|
|
46
|
+
"@loaders.gl/3d-tiles": "3.3.0-alpha.11",
|
|
47
|
+
"@loaders.gl/crypto": "3.3.0-alpha.11",
|
|
48
|
+
"@loaders.gl/draco": "3.3.0-alpha.11",
|
|
49
|
+
"@loaders.gl/gltf": "3.3.0-alpha.11",
|
|
50
|
+
"@loaders.gl/i3s": "3.3.0-alpha.11",
|
|
51
|
+
"@loaders.gl/images": "3.3.0-alpha.11",
|
|
52
|
+
"@loaders.gl/loader-utils": "3.3.0-alpha.11",
|
|
53
|
+
"@loaders.gl/polyfills": "3.3.0-alpha.11",
|
|
54
|
+
"@loaders.gl/schema": "3.3.0-alpha.11",
|
|
55
|
+
"@loaders.gl/textures": "3.3.0-alpha.11",
|
|
56
|
+
"@loaders.gl/tiles": "3.3.0-alpha.11",
|
|
57
|
+
"@loaders.gl/worker-utils": "3.3.0-alpha.11",
|
|
58
|
+
"@loaders.gl/zip": "3.3.0-alpha.11",
|
|
59
59
|
"@luma.gl/engine": "^8.5.4",
|
|
60
60
|
"@math.gl/core": "^3.5.1",
|
|
61
61
|
"@math.gl/culling": "^3.5.1",
|
|
@@ -65,15 +65,17 @@
|
|
|
65
65
|
"cors": "^2.8.5",
|
|
66
66
|
"crypt": "^0.0.2",
|
|
67
67
|
"debug": "~2.6.9",
|
|
68
|
-
"express": "~4.
|
|
68
|
+
"express": "~4.17.3",
|
|
69
|
+
"join-images": "^1.1.3",
|
|
69
70
|
"json-map-transform": "^1.2.6",
|
|
70
71
|
"jszip": "^3.5.0",
|
|
71
72
|
"md5": "^2.3.0",
|
|
72
73
|
"morgan": "~1.9.1",
|
|
74
|
+
"sharp": "^0.31.3",
|
|
73
75
|
"uuid": "^8.1.0"
|
|
74
76
|
},
|
|
75
77
|
"peerDependencies": {
|
|
76
78
|
"@loaders.gl/core": "^3.2.0"
|
|
77
79
|
},
|
|
78
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "1863a8875f63d578c0fdf5bdb3b7d6827f799db9"
|
|
79
81
|
}
|
|
@@ -15,12 +15,11 @@ import {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversio
|
|
|
15
15
|
import {writeFile, removeDir} from '../lib/utils/file-utils';
|
|
16
16
|
import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
|
|
17
17
|
import {TILESET as tilesetTemplate} from './json-templates/tileset';
|
|
18
|
-
import B3dmConverter from './helpers/b3dm-converter';
|
|
19
18
|
import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
|
|
20
19
|
import {
|
|
21
20
|
I3SAttributesData,
|
|
22
|
-
Tile3dAttributesWorker
|
|
23
|
-
|
|
21
|
+
Tile3dAttributesWorker,
|
|
22
|
+
transform3DTilesAttributesOnWorker
|
|
24
23
|
} from '../3d-tiles-attributes-worker';
|
|
25
24
|
import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
|
|
26
25
|
import {BROWSER_ERROR_MESSAGE} from '../constants';
|
|
@@ -85,6 +84,11 @@ export default class Tiles3DConverter {
|
|
|
85
84
|
|
|
86
85
|
this.sourceTileset = new Tileset3D(sourceTilesetJson, {
|
|
87
86
|
loadOptions: {
|
|
87
|
+
_nodeWorkers: true,
|
|
88
|
+
reuseWorkers: true,
|
|
89
|
+
'i3s-content-nodejs': {
|
|
90
|
+
workerUrl: './modules/i3s/dist/i3s-content-nodejs-worker.js'
|
|
91
|
+
},
|
|
88
92
|
i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}
|
|
89
93
|
}
|
|
90
94
|
});
|
|
@@ -124,6 +128,67 @@ export default class Tiles3DConverter {
|
|
|
124
128
|
workerFarm.destroy();
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Convert particular I3S Node
|
|
133
|
+
* @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
|
|
134
|
+
* @param parentNode object in resulting tileset
|
|
135
|
+
* @param level a current level of a tree depth
|
|
136
|
+
* @param childNodeInfo child node to convert
|
|
137
|
+
*/
|
|
138
|
+
private async convertChildNode(
|
|
139
|
+
parentSourceNode: Tile3D,
|
|
140
|
+
parentNode: Node3D,
|
|
141
|
+
level: number,
|
|
142
|
+
childNodeInfo: NodeReference
|
|
143
|
+
): Promise<void> {
|
|
144
|
+
const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
|
|
145
|
+
parentSourceNode.children.push(sourceChild);
|
|
146
|
+
if (sourceChild.contentUrl) {
|
|
147
|
+
await this.sourceTileset!._loadTile(sourceChild);
|
|
148
|
+
this.vertexCounter += sourceChild.content.vertexCount;
|
|
149
|
+
|
|
150
|
+
let featureAttributes: FeatureAttribute | null = null;
|
|
151
|
+
if (this.attributeStorageInfo) {
|
|
152
|
+
featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!sourceChild.header.obb) {
|
|
156
|
+
sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const boundingVolume = {
|
|
160
|
+
box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
|
|
161
|
+
};
|
|
162
|
+
const child: Node3D = {
|
|
163
|
+
boundingVolume,
|
|
164
|
+
geometricError: convertScreenThresholdToGeometricError(sourceChild),
|
|
165
|
+
children: []
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const i3sAttributesData: I3SAttributesData = {
|
|
169
|
+
tileContent: sourceChild.content,
|
|
170
|
+
textureFormat: sourceChild?.header?.textureFormat
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
|
|
174
|
+
source: this.workerSource.tile3dWorkerSource,
|
|
175
|
+
featureAttributes
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
child.content = {
|
|
179
|
+
uri: `${sourceChild.id}.b3dm`,
|
|
180
|
+
boundingVolume
|
|
181
|
+
};
|
|
182
|
+
await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
|
|
183
|
+
parentNode.children.push(child);
|
|
184
|
+
|
|
185
|
+
sourceChild.unloadContent();
|
|
186
|
+
await this._addChildren(sourceChild, child, level + 1);
|
|
187
|
+
} else {
|
|
188
|
+
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
127
192
|
/**
|
|
128
193
|
* The recursive function of traversal of a nodes tree
|
|
129
194
|
* @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
|
|
@@ -138,60 +203,11 @@ export default class Tiles3DConverter {
|
|
|
138
203
|
if (this.options.maxDepth && level > this.options.maxDepth) {
|
|
139
204
|
return;
|
|
140
205
|
}
|
|
206
|
+
const promises: Promise<void>[] = [];
|
|
141
207
|
for (const childNodeInfo of parentSourceNode.header.children || []) {
|
|
142
|
-
|
|
143
|
-
parentSourceNode.children.push(sourceChild);
|
|
144
|
-
if (sourceChild.contentUrl) {
|
|
145
|
-
await this.sourceTileset!._loadTile(sourceChild);
|
|
146
|
-
this.vertexCounter += sourceChild.content.vertexCount;
|
|
147
|
-
|
|
148
|
-
let featureAttributes: FeatureAttribute | null = null;
|
|
149
|
-
if (this.attributeStorageInfo) {
|
|
150
|
-
featureAttributes = await this._loadChildAttributes(
|
|
151
|
-
sourceChild,
|
|
152
|
-
this.attributeStorageInfo
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!sourceChild.header.obb) {
|
|
157
|
-
sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const boundingVolume = {
|
|
161
|
-
box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
|
|
162
|
-
};
|
|
163
|
-
const child: Node3D = {
|
|
164
|
-
boundingVolume,
|
|
165
|
-
geometricError: convertScreenThresholdToGeometricError(sourceChild),
|
|
166
|
-
children: []
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
const i3sAttributesData: I3SAttributesData = {
|
|
170
|
-
tileContent: sourceChild.content,
|
|
171
|
-
textureFormat: sourceChild?.header?.textureFormat
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
// TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.
|
|
175
|
-
// const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
|
|
176
|
-
// source: this.workerSource.tile3dWorkerSource,
|
|
177
|
-
// featureAttributes
|
|
178
|
-
// });
|
|
179
|
-
|
|
180
|
-
const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);
|
|
181
|
-
|
|
182
|
-
child.content = {
|
|
183
|
-
uri: `${sourceChild.id}.b3dm`,
|
|
184
|
-
boundingVolume
|
|
185
|
-
};
|
|
186
|
-
await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
|
|
187
|
-
parentNode.children.push(child);
|
|
188
|
-
|
|
189
|
-
sourceChild.unloadContent();
|
|
190
|
-
await this._addChildren(sourceChild, child, level + 1);
|
|
191
|
-
} else {
|
|
192
|
-
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
193
|
-
}
|
|
208
|
+
promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
|
|
194
209
|
}
|
|
210
|
+
await Promise.all(promises);
|
|
195
211
|
}
|
|
196
212
|
|
|
197
213
|
/**
|
|
@@ -27,7 +27,7 @@ export default class B3dmConverter {
|
|
|
27
27
|
i3sAttributesData: I3SAttributesData,
|
|
28
28
|
featureAttributes: any = null
|
|
29
29
|
): Promise<ArrayBuffer> {
|
|
30
|
-
const gltf = await this.buildGltf(i3sAttributesData);
|
|
30
|
+
const gltf = await this.buildGltf(i3sAttributesData, featureAttributes);
|
|
31
31
|
const b3dm = encodeSync(
|
|
32
32
|
{
|
|
33
33
|
gltfEncoded: new Uint8Array(gltf),
|
|
@@ -45,7 +45,10 @@ export default class B3dmConverter {
|
|
|
45
45
|
* @param i3sTile - Tile3D instance for I3S node
|
|
46
46
|
* @returns - encoded glb content
|
|
47
47
|
*/
|
|
48
|
-
async buildGltf(
|
|
48
|
+
async buildGltf(
|
|
49
|
+
i3sAttributesData: I3SAttributesData,
|
|
50
|
+
featureAttributes: any
|
|
51
|
+
): Promise<ArrayBuffer> {
|
|
49
52
|
const {tileContent, textureFormat} = i3sAttributesData;
|
|
50
53
|
const {
|
|
51
54
|
material,
|
|
@@ -77,6 +80,7 @@ export default class B3dmConverter {
|
|
|
77
80
|
cartographicOrigin,
|
|
78
81
|
modelMatrix
|
|
79
82
|
);
|
|
83
|
+
this._createBatchIds(tileContent, featureAttributes);
|
|
80
84
|
if (attributes.normals && !this._checkNormals(attributes.normals.value)) {
|
|
81
85
|
delete attributes.normals;
|
|
82
86
|
}
|
|
@@ -163,25 +167,28 @@ export default class B3dmConverter {
|
|
|
163
167
|
}
|
|
164
168
|
|
|
165
169
|
/**
|
|
166
|
-
*
|
|
167
|
-
* @param {
|
|
168
|
-
* @returns {
|
|
170
|
+
* Create _BATCHID attribute
|
|
171
|
+
* @param {Object} i3sContent - the source object
|
|
172
|
+
* @returns {void}
|
|
169
173
|
*/
|
|
170
|
-
|
|
171
|
-
const
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
for (let index = 0; index < faceRanges.length / 2; index++) {
|
|
177
|
-
const fromIndex = faceRanges[rangeIndex] * 3;
|
|
178
|
-
const untilPosition = (faceRanges[rangeIndex + 1] + 1) * 3;
|
|
174
|
+
_createBatchIds(i3sContent, featureAttributes) {
|
|
175
|
+
const {featureIds} = i3sContent;
|
|
176
|
+
const {OBJECTID: objectIds} = featureAttributes || {};
|
|
177
|
+
if (!featureIds || !objectIds) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
179
180
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
for (let i = 0; i < featureIds.length; i++) {
|
|
182
|
+
const featureId = featureIds[i];
|
|
183
|
+
const batchId = objectIds.indexOf(featureId);
|
|
184
|
+
featureIds[i] = batchId;
|
|
183
185
|
}
|
|
184
|
-
|
|
186
|
+
|
|
187
|
+
i3sContent.attributes._BATCHID = {
|
|
188
|
+
size: 1,
|
|
189
|
+
byteOffset: 0,
|
|
190
|
+
value: featureIds
|
|
191
|
+
};
|
|
185
192
|
}
|
|
186
193
|
|
|
187
194
|
/**
|
package/src/converter-cli.ts
CHANGED
|
@@ -14,6 +14,10 @@ type TileConversionOptions = {
|
|
|
14
14
|
/** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.
|
|
15
15
|
* Default: "data" folder */
|
|
16
16
|
output: string;
|
|
17
|
+
/** Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed */
|
|
18
|
+
instantNodeWriting: boolean;
|
|
19
|
+
/** Try to merge similar materials to be able to merge meshes into one node (I3S to 3DTiles conversion only) */
|
|
20
|
+
mergeMaterials: boolean;
|
|
17
21
|
/** 3DTiles->I3S only. location of 7z.exe archiver to create slpk on Windows OS, default: "C:\Program Files\7-Zip\7z.exe" */
|
|
18
22
|
sevenZipExe: string;
|
|
19
23
|
/** location of the Earth Gravity Model (*.pgm) file to convert heights from ellipsoidal to gravity-related format,
|
|
@@ -99,6 +103,12 @@ function printHelp(): void {
|
|
|
99
103
|
);
|
|
100
104
|
console.log('--name [Tileset name]');
|
|
101
105
|
console.log('--output [Output folder, default: "data" folder]');
|
|
106
|
+
console.log(
|
|
107
|
+
'--instant-node-writing [Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed]'
|
|
108
|
+
);
|
|
109
|
+
console.log(
|
|
110
|
+
'--split-nodes [Prevent to merge similar materials that could lead to incorrect visualization (I3S to 3DTiles conversion only)]'
|
|
111
|
+
);
|
|
102
112
|
console.log('--slpk [Generate slpk (Scene Layer Packages) I3S output file]');
|
|
103
113
|
console.log(
|
|
104
114
|
'--tileset [tileset.json file (3DTiles) / http://..../SceneServer/layers/0 resource (I3S)]'
|
|
@@ -154,9 +164,11 @@ async function convert(options: ValidatedTileConversionOptions) {
|
|
|
154
164
|
egmFilePath: options.egm,
|
|
155
165
|
token: options.token,
|
|
156
166
|
draco: options.draco,
|
|
167
|
+
mergeMaterials: options.mergeMaterials,
|
|
157
168
|
generateTextures: options.generateTextures,
|
|
158
169
|
generateBoundingVolumes: options.generateBoundingVolumes,
|
|
159
|
-
validate: options.validate
|
|
170
|
+
validate: options.validate,
|
|
171
|
+
instantNodeWriting: options.instantNodeWriting
|
|
160
172
|
});
|
|
161
173
|
break;
|
|
162
174
|
default:
|
|
@@ -196,7 +208,7 @@ function validateOptions(options: TileConversionOptions): ValidatedTileConversio
|
|
|
196
208
|
}
|
|
197
209
|
if (exceptions.length) {
|
|
198
210
|
exceptions.forEach((exeption) => exeption());
|
|
199
|
-
process.exit(
|
|
211
|
+
process.exit(1);
|
|
200
212
|
}
|
|
201
213
|
return <ValidatedTileConversionOptions>options;
|
|
202
214
|
}
|
|
@@ -222,6 +234,8 @@ function validateOptionsWithEqual(args: string[]): string[] {
|
|
|
222
234
|
function parseOptions(args: string[]): TileConversionOptions {
|
|
223
235
|
const opts: TileConversionOptions = {
|
|
224
236
|
output: 'data',
|
|
237
|
+
instantNodeWriting: false,
|
|
238
|
+
mergeMaterials: true,
|
|
225
239
|
sevenZipExe: 'C:\\Program Files\\7-Zip\\7z.exe',
|
|
226
240
|
egm: join(process.cwd(), 'deps', 'egm2008-5.pgm'),
|
|
227
241
|
draco: true,
|
|
@@ -240,7 +254,7 @@ function parseOptions(args: string[]): TileConversionOptions {
|
|
|
240
254
|
opts.inputType = getStringValue(index, args);
|
|
241
255
|
break;
|
|
242
256
|
case '--tileset':
|
|
243
|
-
opts.tileset =
|
|
257
|
+
opts.tileset = getURLValue(index, args);
|
|
244
258
|
break;
|
|
245
259
|
case '--name':
|
|
246
260
|
opts.name = getStringValue(index, args);
|
|
@@ -248,6 +262,12 @@ function parseOptions(args: string[]): TileConversionOptions {
|
|
|
248
262
|
case '--output':
|
|
249
263
|
opts.output = getStringValue(index, args);
|
|
250
264
|
break;
|
|
265
|
+
case '--instant-node-writing':
|
|
266
|
+
opts.instantNodeWriting = getBooleanValue(index, args);
|
|
267
|
+
break;
|
|
268
|
+
case '--split-nodes':
|
|
269
|
+
opts.mergeMaterials = getBooleanValue(index, args);
|
|
270
|
+
break;
|
|
251
271
|
case '--max-depth':
|
|
252
272
|
opts.maxDepth = getIntegerValue(index, args);
|
|
253
273
|
break;
|
|
@@ -308,6 +328,20 @@ function getStringValue(index: number, args: string[]): string {
|
|
|
308
328
|
return value;
|
|
309
329
|
}
|
|
310
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Modyfy URL path to be compatible with fetch
|
|
333
|
+
* @param index - option's name index in the argument's array.
|
|
334
|
+
* The value of the option should be next to name of the option.
|
|
335
|
+
* @param args - cli arguments array
|
|
336
|
+
* @returns - string value of the option
|
|
337
|
+
*/
|
|
338
|
+
function getURLValue(index: number, args: string[]): string {
|
|
339
|
+
const value = getStringValue(index, args);
|
|
340
|
+
console.log(`Input tileset value: ${value}`);
|
|
341
|
+
console.log(`Modified tileset value: ${value.replace(/\\/g, '/')}`);
|
|
342
|
+
return value.replace(/\\/g, '/');
|
|
343
|
+
}
|
|
344
|
+
|
|
311
345
|
/**
|
|
312
346
|
* Get integer option value from cli arguments
|
|
313
347
|
* @param index - option's name index in the argument's array
|
|
@@ -326,7 +360,7 @@ function getIntegerValue(index: number, args: string[]): number {
|
|
|
326
360
|
|
|
327
361
|
function getBooleanValue(index: number, args: string[]): boolean {
|
|
328
362
|
const stringValue: string = getStringValue(index, args).toLowerCase().trim();
|
|
329
|
-
if (
|
|
363
|
+
if (['--no-draco', '--split-nodes'].includes(args[index]) && !stringValue) {
|
|
330
364
|
return false;
|
|
331
365
|
}
|
|
332
366
|
if (!stringValue || stringValue === 'true') {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {load} from '@loaders.gl/core';
|
|
1
|
+
import {load, fetchFile} from '@loaders.gl/core';
|
|
2
2
|
import {ZipLoader} from '@loaders.gl/zip';
|
|
3
3
|
import {writeFile} from '../lib/utils/file-utils';
|
|
4
4
|
import {join} from 'path';
|
|
5
|
+
import {ChildProcessProxy} from '@loaders.gl/worker-utils';
|
|
6
|
+
|
|
7
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
|
|
5
9
|
|
|
6
10
|
const PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
|
|
7
11
|
|
|
@@ -15,8 +19,11 @@ export class DepsInstaller {
|
|
|
15
19
|
/**
|
|
16
20
|
* Run instalation
|
|
17
21
|
* @param path destination folder
|
|
22
|
+
* @param workersPath destination folder for workers.
|
|
23
|
+
* This path is '' by default and is not used by tile-converter.
|
|
24
|
+
* It is used in tests to prevent rewriting actual workers during tests running
|
|
18
25
|
*/
|
|
19
|
-
async install(path: string = ''): Promise<void> {
|
|
26
|
+
async install(path: string = '', workersPath: string = ''): Promise<void> {
|
|
20
27
|
console.log('Installing "EGM2008-5" model...'); // eslint-disable-line no-console
|
|
21
28
|
const fileMap = await load(PGM_LINK, ZipLoader, {});
|
|
22
29
|
|
|
@@ -27,6 +34,35 @@ export class DepsInstaller {
|
|
|
27
34
|
|
|
28
35
|
await writeFile(depsPath, new Uint8Array(fileMap['geoids/egm2008-5.pgm']), 'egm2008-5.pgm');
|
|
29
36
|
|
|
37
|
+
console.log('Installing "I3S Content Loader worker"'); // eslint-disable-line no-console
|
|
38
|
+
await this.installWorker('i3s', 'i3s-content-nodejs-worker.js', workersPath);
|
|
39
|
+
|
|
40
|
+
console.log('Installing "Draco Loader worker"'); // eslint-disable-line no-console
|
|
41
|
+
await this.installWorker('draco', 'draco-nodejs-worker.js', workersPath);
|
|
42
|
+
|
|
43
|
+
console.log('Installing "Basis Loader worker"'); // eslint-disable-line no-console
|
|
44
|
+
await this.installWorker('textures', 'basis-nodejs-worker.js', workersPath);
|
|
45
|
+
|
|
46
|
+
console.log('Installing "join-images" npm package');
|
|
47
|
+
const childProcess = new ChildProcessProxy();
|
|
48
|
+
await childProcess.start({
|
|
49
|
+
command: 'npm',
|
|
50
|
+
arguments: ['install', 'sharp', 'join-images'],
|
|
51
|
+
wait: 0
|
|
52
|
+
});
|
|
53
|
+
|
|
30
54
|
console.log('All dependencies were installed succesfully.'); // eslint-disable-line no-console
|
|
31
55
|
}
|
|
56
|
+
|
|
57
|
+
private async installWorker(module: string, name: string, extraPath: string) {
|
|
58
|
+
const fileResponse = await fetchFile(
|
|
59
|
+
`https://unpkg.com/@loaders.gl/${module}@${VERSION}/dist/${name}`
|
|
60
|
+
);
|
|
61
|
+
const fileData = await fileResponse.arrayBuffer();
|
|
62
|
+
if (!fileData) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const path = join(process.cwd(), extraPath, 'modules', module, 'dist');
|
|
66
|
+
await writeFile(path, fileData, name);
|
|
67
|
+
}
|
|
32
68
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {WorkerObject} from '@loaders.gl/worker-utils';
|
|
2
2
|
import type {ConvertedAttributes} from './i3s-converter/types';
|
|
3
3
|
import type {Matrix4, Vector3} from '@math.gl/core';
|
|
4
|
+
import type {GLTFImagePostprocessed, GLTFNodePostprocessed} from '@loaders.gl/gltf';
|
|
4
5
|
|
|
5
6
|
import {processOnWorker} from '@loaders.gl/worker-utils';
|
|
6
7
|
|
|
@@ -9,13 +10,16 @@ import {processOnWorker} from '@loaders.gl/worker-utils';
|
|
|
9
10
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
10
11
|
|
|
11
12
|
export type I3SAttributesWorkerOptions = {
|
|
13
|
+
_nodeWorkers: boolean;
|
|
14
|
+
reuseWorkers: boolean;
|
|
12
15
|
useCartesianPositions: boolean;
|
|
13
16
|
source: string;
|
|
14
17
|
};
|
|
15
18
|
|
|
16
19
|
export type B3DMAttributesData = {
|
|
17
20
|
gltfMaterials?: {id: string}[];
|
|
18
|
-
nodes:
|
|
21
|
+
nodes: GLTFNodePostprocessed[];
|
|
22
|
+
images: GLTFImagePostprocessed[];
|
|
19
23
|
cartographicOrigin: Vector3;
|
|
20
24
|
cartesianModelMatrix: Matrix4;
|
|
21
25
|
};
|