@loaders.gl/tile-converter 4.0.0-alpha.1 → 4.0.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/bin/converter.js +1 -1
- package/bin/slpk-extractor.js +4 -0
- package/dist/3d-tiles-attributes-worker.d.ts +28 -0
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/3d-tiles-attributes-worker.js +3 -0
- package/dist/3d-tiles-attributes-worker.js.map +7 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +90 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js +275 -226
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +71 -18
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -236
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
- package/dist/3d-tiles-converter/json-templates/tileset.js +42 -36
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -0
- package/dist/converter-cli.d.ts +2 -0
- package/dist/converter-cli.d.ts.map +1 -0
- package/dist/converter-cli.js +214 -0
- package/dist/converter.min.js +185 -190
- package/dist/deps-installer/deps-installer.d.ts +11 -3
- package/dist/deps-installer/deps-installer.d.ts.map +1 -0
- package/dist/deps-installer/deps-installer.js +61 -23
- package/dist/dist.min.js +64143 -0
- package/dist/es5/3d-tiles-attributes-worker.js +25 -0
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/constants.js +9 -0
- package/dist/es5/constants.js.map +1 -0
- package/dist/es5/converter-cli.js +244 -0
- package/dist/es5/converter-cli.js.map +1 -0
- package/dist/es5/deps-installer/deps-installer.js +124 -0
- package/dist/es5/deps-installer/deps-installer.js.map +1 -0
- package/dist/es5/i3s-attributes-worker.js +25 -0
- package/dist/es5/i3s-attributes-worker.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +89 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +1192 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +113 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js +521 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/es5/i3s-converter/i3s-converter.js +1541 -0
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
- 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 +163 -0
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/node.js +99 -0
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/store.js +107 -0
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/es5/i3s-converter/types.js +18 -0
- package/dist/es5/i3s-converter/types.js.map +1 -0
- package/dist/es5/i3s-server/README.md +19 -0
- package/dist/es5/i3s-server/app.js +27 -0
- package/dist/es5/i3s-server/app.js.map +1 -0
- package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/es5/i3s-server/routes/index.js +37 -0
- package/dist/es5/i3s-server/routes/index.js.map +1 -0
- package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
- package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/es5/index.js +21 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/utils/cli-utils.js +57 -0
- package/dist/es5/lib/utils/cli-utils.js.map +1 -0
- package/dist/es5/lib/utils/compress-util.js +346 -0
- package/dist/es5/lib/utils/compress-util.js.map +1 -0
- package/dist/es5/lib/utils/file-utils.js +208 -0
- package/dist/es5/lib/utils/file-utils.js.map +1 -0
- package/dist/es5/lib/utils/geometry-utils.js +15 -0
- package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/es5/lib/utils/queue.js +47 -0
- package/dist/es5/lib/utils/queue.js.map +1 -0
- package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
- package/dist/es5/lib/utils/statistic-utills.js +147 -0
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
- package/dist/es5/lib/utils/write-queue.js +214 -0
- package/dist/es5/lib/utils/write-queue.js.map +1 -0
- package/dist/es5/pgm-loader.js +41 -0
- package/dist/es5/pgm-loader.js.map +1 -0
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js +181 -0
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js +172 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/es5/slpk-extractor-cli.js +117 -0
- package/dist/es5/slpk-extractor-cli.js.map +1 -0
- package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/workers/i3s-attributes-worker.js +30 -0
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-attributes-worker.js +16 -0
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/converter-cli.js +187 -0
- package/dist/esm/converter-cli.js.map +1 -0
- package/dist/esm/deps-installer/deps-installer.js +45 -0
- package/dist/esm/deps-installer/deps-installer.js.map +1 -0
- package/dist/esm/i3s-attributes-worker.js +16 -0
- package/dist/esm/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +79 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/{src → dist/esm}/i3s-converter/helpers/geometry-attributes.js +80 -106
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +906 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +110 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/{src → dist/esm}/i3s-converter/helpers/node-debug.js +20 -41
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js +201 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/esm/i3s-converter/i3s-converter.js +778 -0
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
- 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 +133 -0
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/node.js +80 -0
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/store.js +98 -0
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/esm/i3s-converter/types.js +11 -0
- package/dist/esm/i3s-converter/types.js.map +1 -0
- package/dist/esm/i3s-server/README.md +19 -0
- package/dist/esm/i3s-server/app.js +26 -0
- package/dist/esm/i3s-server/app.js.map +1 -0
- package/dist/esm/i3s-server/bin/www +102 -0
- package/dist/esm/i3s-server/certs/cert.pem +19 -0
- package/dist/esm/i3s-server/certs/key.pem +27 -0
- package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/esm/i3s-server/routes/index.js +16 -0
- package/dist/esm/i3s-server/routes/index.js.map +1 -0
- package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
- package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/utils/cli-utils.js +47 -0
- package/dist/esm/lib/utils/cli-utils.js.map +1 -0
- package/dist/esm/lib/utils/compress-util.js +168 -0
- package/dist/esm/lib/utils/compress-util.js.map +1 -0
- package/dist/esm/lib/utils/file-utils.js +87 -0
- package/dist/esm/lib/utils/file-utils.js.map +1 -0
- package/dist/esm/lib/utils/geometry-utils.js +8 -0
- package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/esm/lib/utils/queue.js +15 -0
- package/dist/esm/lib/utils/queue.js.map +1 -0
- package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
- package/dist/esm/lib/utils/statistic-utills.js +62 -0
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
- package/dist/esm/lib/utils/write-queue.js +85 -0
- package/dist/esm/lib/utils/write-queue.js.map +1 -0
- package/dist/esm/pgm-loader.js +15 -0
- package/dist/esm/pgm-loader.js.map +1 -0
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js +43 -0
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js +63 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/esm/slpk-extractor-cli.js +74 -0
- package/dist/esm/slpk-extractor-cli.js.map +1 -0
- package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/workers/i3s-attributes-worker.js +7 -0
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/i3s-attributes-worker.d.ts +45 -0
- package/dist/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/i3s-attributes-worker.js +9 -0
- package/dist/i3s-attributes-worker.js.map +7 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +138 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +39 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +118 -42
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
- 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 +8 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +41 -35
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-converter.js +1179 -650
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +28 -0
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/gltf-attributes.js +129 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-debug.js +106 -74
- package/dist/i3s-converter/helpers/node-index-document.d.ts +103 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-index-document.js +268 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts +125 -113
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-pages.js +313 -133
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +22 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +75 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
- package/dist/i3s-converter/i3s-converter.d.ts +267 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
- package/dist/i3s-converter/i3s-converter.js +891 -867
- 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 +70 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/layers.js +138 -190
- package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
- package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/metadata.js +25 -22
- package/dist/i3s-converter/json-templates/node.d.ts +61 -0
- package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/node.js +88 -79
- package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
- package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/scene-server.js +31 -28
- package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
- package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/shared-resources.js +124 -125
- package/dist/i3s-converter/json-templates/store.d.ts +95 -0
- package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/store.js +100 -95
- package/dist/i3s-converter/types.d.ts +163 -0
- package/dist/i3s-converter/types.d.ts.map +1 -0
- package/dist/i3s-converter/types.js +17 -0
- package/dist/i3s-server/app.d.ts +3 -0
- package/dist/i3s-server/app.d.ts.map +1 -0
- package/dist/i3s-server/app.js +11 -10
- package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
- package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/index-controller.js +16 -24
- package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
- package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/slpk-controller.js +32 -0
- package/dist/i3s-server/routes/index.d.ts +3 -0
- package/dist/i3s-server/routes/index.d.ts.map +1 -0
- package/dist/i3s-server/routes/index.js +11 -15
- package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
- package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
- package/dist/i3s-server/routes/slpk-router.js +33 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
- package/dist/i3s-server/utils/create-scene-server.js +14 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -5
- package/dist/lib/utils/cli-utils.d.ts +34 -0
- package/dist/lib/utils/cli-utils.d.ts.map +1 -0
- package/dist/lib/utils/cli-utils.js +82 -0
- package/dist/lib/utils/compress-util.d.ts +45 -0
- package/dist/lib/utils/compress-util.d.ts.map +1 -0
- package/dist/lib/utils/compress-util.js +238 -160
- package/dist/lib/utils/file-utils.d.ts +22 -14
- package/dist/lib/utils/file-utils.d.ts.map +1 -0
- package/dist/lib/utils/file-utils.js +134 -36
- package/dist/lib/utils/geometry-utils.d.ts +9 -0
- package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/lib/utils/geometry-utils.js +18 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +23 -13
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
- package/dist/lib/utils/lod-conversion-utils.js +72 -39
- package/dist/lib/utils/queue.d.ts +7 -0
- package/dist/lib/utils/queue.d.ts.map +1 -0
- package/dist/lib/utils/queue.js +18 -0
- package/dist/lib/utils/statistic-utills.d.ts +3 -25
- package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
- package/dist/lib/utils/statistic-utills.js +58 -67
- package/dist/lib/utils/write-queue.d.ts +39 -0
- package/dist/lib/utils/write-queue.d.ts.map +1 -0
- package/dist/lib/utils/write-queue.js +80 -0
- package/dist/pgm-loader.d.ts +6 -0
- package/dist/pgm-loader.d.ts.map +1 -0
- package/dist/pgm-loader.js +23 -14
- package/dist/slpk-extractor/helpers/file-handle-provider.d.ts +48 -0
- package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +1 -0
- package/dist/slpk-extractor/helpers/file-handle-provider.js +71 -0
- package/dist/slpk-extractor/slpk-extractor.d.ts +23 -0
- package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -0
- package/dist/slpk-extractor/slpk-extractor.js +78 -0
- package/dist/slpk-extractor-cli.d.ts +17 -0
- package/dist/slpk-extractor-cli.d.ts.map +1 -0
- package/dist/slpk-extractor-cli.js +102 -0
- package/dist/slpk-extractor.min.js +189 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/workers/3d-tiles-attributes-worker.js +9 -0
- package/dist/workers/i3s-attributes-worker.d.ts +2 -0
- package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/workers/i3s-attributes-worker.js +5 -0
- package/package.json +36 -24
- package/src/3d-tiles-attributes-worker.ts +43 -0
- package/src/3d-tiles-converter/3d-tiles-converter.ts +131 -63
- package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +72 -53
- package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
- package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
- package/src/constants.ts +2 -0
- package/src/converter-cli.ts +305 -0
- package/src/deps-installer/deps-installer.ts +72 -0
- package/src/i3s-attributes-worker.ts +59 -0
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +202 -0
- package/src/i3s-converter/helpers/coordinate-converter.ts +94 -34
- package/src/i3s-converter/helpers/create-scene-server-path.ts +29 -0
- package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
- package/src/i3s-converter/helpers/geometry-attributes.ts +267 -0
- package/src/i3s-converter/helpers/geometry-converter.ts +1667 -0
- package/src/i3s-converter/helpers/gltf-attributes.ts +162 -0
- package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
- package/src/i3s-converter/helpers/node-debug.ts +146 -0
- package/src/i3s-converter/helpers/node-index-document.ts +335 -0
- package/src/i3s-converter/helpers/node-pages.ts +344 -0
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +79 -0
- package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
- package/src/i3s-converter/i3s-converter.ts +650 -669
- package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
- package/src/i3s-converter/json-templates/layers.ts +137 -0
- package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
- package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
- package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
- package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +17 -17
- package/src/i3s-converter/types.ts +185 -0
- package/src/i3s-server/README.md +19 -0
- package/src/i3s-server/app.js +8 -1
- package/src/i3s-server/controllers/slpk-controller.js +38 -0
- package/src/i3s-server/routes/slpk-router.js +33 -0
- package/src/i3s-server/utils/create-scene-server.js +15 -0
- package/src/index.ts +0 -4
- package/src/lib/utils/cli-utils.ts +78 -0
- package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
- package/src/lib/utils/file-utils.ts +140 -0
- package/src/lib/utils/geometry-utils.ts +14 -0
- package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +31 -5
- package/src/lib/utils/queue.ts +17 -0
- package/src/lib/utils/write-queue.ts +110 -0
- package/src/pgm-loader.ts +3 -3
- package/src/slpk-extractor/helpers/file-handle-provider.ts +91 -0
- package/src/slpk-extractor/slpk-extractor.ts +102 -0
- package/src/slpk-extractor-cli.ts +128 -0
- package/src/workers/3d-tiles-attributes-worker.ts +6 -0
- package/src/workers/i3s-attributes-worker.ts +7 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
- package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/deps-installer/deps-installer.js.map +0 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
- package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
- package/dist/i3s-converter/i3s-converter.js.map +0 -1
- package/dist/i3s-converter/json-templates/layers.js.map +0 -1
- package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
- package/dist/i3s-converter/json-templates/node.js.map +0 -1
- package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
- package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
- package/dist/i3s-converter/json-templates/store.js.map +0 -1
- package/dist/i3s-server/app.js.map +0 -1
- package/dist/i3s-server/controllers/index-controller.js.map +0 -1
- package/dist/i3s-server/routes/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/geoid-height-model.d.ts +0 -41
- package/dist/lib/geoid-height-model.js +0 -140
- package/dist/lib/geoid-height-model.js.map +0 -1
- package/dist/lib/pgm-parser.d.ts +0 -14
- package/dist/lib/pgm-parser.js +0 -183
- package/dist/lib/pgm-parser.js.map +0 -1
- package/dist/lib/utils/compress-util.js.map +0 -1
- package/dist/lib/utils/compress-utils.d.ts +0 -53
- package/dist/lib/utils/file-utils.js.map +0 -1
- package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
- package/dist/lib/utils/statistic-utills.js.map +0 -1
- package/dist/pgm-loader.js.map +0 -1
- package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
- package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
- package/src/deps-installer/deps-installer.d.ts +0 -10
- package/src/deps-installer/deps-installer.js +0 -22
- package/src/i3s-converter/helpers/create-scene-server-path.js +0 -25
- package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -40
- package/src/i3s-converter/helpers/geometry-converter.js +0 -915
- package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
- package/src/i3s-converter/helpers/node-pages.js +0 -208
- package/src/i3s-converter/json-templates/layers.js +0 -199
- package/src/lib/geoid-height-model.d.ts +0 -41
- package/src/lib/geoid-height-model.js +0 -239
- package/src/lib/pgm-parser.d.ts +0 -14
- package/src/lib/pgm-parser.js +0 -179
- package/src/lib/utils/compress-utils.d.ts +0 -53
- package/src/lib/utils/file-utils.d.ts +0 -43
- package/src/lib/utils/file-utils.js +0 -38
- package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
- /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
- /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
- /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
- /package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
- /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-converter.js","names":["load","encode","fetchFile","getLoaderOptions","isBrowser","CesiumIonLoader","Tiles3DLoader","join","v4","uuidv4","process","transform","md5","NodePages","writeFile","removeDir","writeFileForSlpk","removeFile","compressFileWithGzip","compressWithChildProcess","calculateFilesSize","timeConverter","convertB3dmToI3sGeometry","getPropertyTable","createBoundingVolumes","convertBoundingVolumeToI3SFullExtent","createSceneServerPath","convertGeometricErrorToScreenThreshold","PGMLoader","LAYERS","layersTemplate","GEOMETRY_DEFINITION","geometryDefinitionTemlate","SHARED_RESOURCES","sharedResourcesTemplate","validateNodeBoundingVolumes","KTX2BasisWriterWorker","ImageWriter","GltfPrimitiveModeString","getWorkerURL","WorkerFarm","DracoWriterWorker","WriteQueue","I3SAttributesWorker","BROWSER_ERROR_MESSAGE","createdStorageAttribute","createFieldAttribute","createPopupInfo","getAttributeType","getFieldAttributeType","NodeIndexDocument","loadNestedTileset","loadTile3DContent","Matrix4","createBoundingVolume","traverseDatasetWith","analyzeTileContent","mergePreprocessData","ION_DEFAULT_TOKEN","_process$env","env","IonToken","HARDCODED_NODES_PER_PAGE","_3D_TILES","_3D_OBJECT_LAYER_TYPE","REFRESH_TOKEN_TIMEOUT","CESIUM_DATASET_PREFIX","I3SConverter","constructor","_defineProperty","_nodeWorkers","reuseWorkers","basis","format","workerUrl","draco","fetch","meshTopologyTypes","Set","nodePages","options","layers0Path","materialMap","Map","materialDefinitions","geometryMap","geometryConfigs","vertexCounter","layers0","featuresHashArray","refinementCounter","tilesCount","tilesWithAddRefineCount","validate","generateTextures","generateBoundingVolumes","layersHasTexture","compressList","convert","console","log","conversionStartTime","hrtime","tilesetName","slpk","egmFilePath","inputUrl","outputPath","sevenZipExe","maxDepth","token","instantNodeWriting","mergeMaterials","Boolean","Loader","indexOf","writeQueue","startListening","geoidHeightModel","useWriteFunction","loadWorkers","preloadOptions","_fetchPreloadOptions","headers","loadOptions","sourceTileset","preprocessResult","preprocessConversion","_createAndSaveTileset","_finishConversion","error","finalize","workerFarm","getWorkerFarm","destroy","sourceRootTile","root","analyzeTile","bind","undefined","preprocessData","concat","Array","from","has","TRIANGLES","TRIANGLE_STRIP","sourceTile","traversalProps","type","id","tileContent","loadGLTF","tilePreprocessData","_this$sourceTileset","_this$sourceTileset$r","_this$sourceTileset$r2","tilesetPath","e","sourceBoundingVolume","boundingVolume","_formLayers0","region","boundingVolumes","push","index","lodThreshold","obb","children","rootNode","createRootNode","parentNodes","convertTile","finalizeTile","geometryDefinitions","map","config","geometryConfig","store","defaultGeometrySchema","ordering","filter","attribute","_writeLayers0","filePath","save","_createSlpk","boundingVolumeRegion","_this$sourceTileset2","fullExtent","zmin","zmax","extent","xmin","ymin","xmax","ymax","layers0data","version","toUpperCase","name","href","nodesPerPage","compressGeometry","enqueue","archiveKey","writePromise","JSON","stringify","slpkTilesetPath","slpkFileName","transformationMatrix","clone","multiplyRight","parentNode","childNodes","_createNode","addChildren","newTraversalProps","conversionResults","currentTraversalProps","result","node","addNeighbors","_this$layers","_this$layers$attribut","_checkAddRefinementTypeForTile","_updateTilesetOptions","propertyTable","attributeStorageInfo","length","_convertPropertyTableToNodeAttributes","resourcesData","_convertResources","inPageId","nodes","nodeIds","nodesInPage","emptyResources","geometry","compressedGeometry","texture","hasUvRegions","sharedResources","meshMaterial","vertexCount","attributes","featureCount","resources","lodSelection","maxScreenThresholdSQ","find","val","metricType","maxError","nodeInPage","_updateNodeInNodePages","nodeData","createNodeIndexDocument","addData","mesh","_writeResources","boundingVolumeWarnings","warn","parentId","_this$layers2","isContentSupported","draftObb","center","halfSize","quaternion","workerSource","definition","findOrCreateGeometryDefinition","resource","material","nodeId","getNodeById","updateAll","updateMaterialByNodeId","_findOrCreateMaterial","texelCountHint","image","height","width","updateTexelCountHintByNodeId","updateVertexCountByNodeId","updateNodeAttributeByNodeId","updateFeatureCountByNodeId","saveNode","nodePath","geometryBuffer","childPath","slpkChildPath","_writeGeometries","_writeShared","_writeTexture","_writeAttributes","slpkGeometryPath","geometryPath","slpkCompressedGeometryPath","compressedGeometryPath","sharedData","sharedDataStr","slpkSharedPath","sharedPath","_getFormatByMimeType","mimeType","formats","textureData","bufferView","data","writeTextureFile","copyArrayBuffer","subarray","arrayToEncode","Uint8Array","ktx2TextureData","source","ktx2","decodedFromKTX2TextureData","textureSetDefinitions","atlas","slpkTexturePath","compress","texturePath","_this$layers3","_this$layers3$attribu","arguments","folderName","key","fileBuffer","slpkAttributesPath","attributesPath","hash","get","newMaterialId","set","hasTexture","newGeometryId","attributeIndex","propertyTableWithObjectId","OBJECTID","firstAttribute","attributeType","storageAttribute","fieldAttributeType","fieldAttribute","popupInfo","fields","layerType","params","addRefinementPercentage","filesSize","diff","conversionTime","preload","accessToken","refreshTokenTime","tile","ADD_TILE_REFINEMENT","refine","includes","url","sourceResponse","text","i3sAttributesWorkerUrl","I3SAttributes"],"sources":["../../../src/i3s-converter/i3s-converter.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {\n FeatureTableJson,\n Tiles3DLoaderOptions,\n Tiles3DTileContent,\n Tiles3DTileJSONPostprocessed,\n Tiles3DTilesetJSONPostprocessed\n} from '@loaders.gl/3d-tiles';\nimport type {WriteQueueItem} from '../lib/utils/write-queue';\nimport type {\n SceneLayer3D,\n BoundingVolumes,\n MaxScreenThresholdSQ,\n NodeInPage\n} from '@loaders.gl/i3s';\nimport {load, encode, fetchFile, getLoaderOptions, isBrowser} from '@loaders.gl/core';\nimport {CesiumIonLoader, Tiles3DLoader} from '@loaders.gl/3d-tiles';\nimport {Geoid} from '@math.gl/geoid';\nimport {join} from 'path';\nimport {v4 as uuidv4} from 'uuid';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport md5 from 'md5';\n\nimport NodePages from './helpers/node-pages';\nimport {writeFile, removeDir, writeFileForSlpk, removeFile} from '../lib/utils/file-utils';\nimport {\n compressFileWithGzip,\n compressWithChildProcess\n // generateHash128FromZip,\n // addFileToZip\n} from '../lib/utils/compress-util';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport convertB3dmToI3sGeometry, {getPropertyTable} from './helpers/geometry-converter';\nimport {\n createBoundingVolumes,\n convertBoundingVolumeToI3SFullExtent\n} from './helpers/coordinate-converter';\nimport {createSceneServerPath} from './helpers/create-scene-server-path';\nimport {convertGeometricErrorToScreenThreshold} from '../lib/utils/lod-conversion-utils';\nimport {PGMLoader} from '../pgm-loader';\n\nimport {LAYERS as layersTemplate} from './json-templates/layers';\nimport {GEOMETRY_DEFINITION as geometryDefinitionTemlate} from './json-templates/geometry-definitions';\nimport {SHARED_RESOURCES as sharedResourcesTemplate} from './json-templates/shared-resources';\nimport {validateNodeBoundingVolumes} from './helpers/node-debug';\nimport {KTX2BasisWriterWorker} from '@loaders.gl/textures';\nimport {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {I3SMaterialDefinition, TextureSetDefinitionFormats} from '@loaders.gl/i3s';\nimport {ImageWriter} from '@loaders.gl/images';\nimport {GLTFImagePostprocessed} from '@loaders.gl/gltf';\nimport {\n GltfPrimitiveModeString,\n I3SConvertedResources,\n PreprocessData,\n SharedResourcesArrays\n} from './types';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\nimport {DracoWriterWorker} from '@loaders.gl/draco';\nimport WriteQueue from '../lib/utils/write-queue';\nimport {I3SAttributesWorker} from '../i3s-attributes-worker';\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\nimport {\n createdStorageAttribute,\n createFieldAttribute,\n createPopupInfo,\n getAttributeType,\n getFieldAttributeType\n} from './helpers/feature-attributes';\nimport {NodeIndexDocument} from './helpers/node-index-document';\nimport {loadNestedTileset, loadTile3DContent} from './helpers/load-3d-tiles';\nimport {Matrix4} from '@math.gl/core';\nimport {BoundingSphere, OrientedBoundingBox} from '@math.gl/culling';\nimport {createBoundingVolume} from '@loaders.gl/tiles';\nimport {TraversalConversionProps, traverseDatasetWith} from './helpers/tileset-traversal';\nimport {analyzeTileContent, mergePreprocessData} from './helpers/preprocess-3d-tiles';\n\nconst ION_DEFAULT_TOKEN =\n process.env?.IonToken || // eslint-disable-line\n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ'; // eslint-disable-line\nconst HARDCODED_NODES_PER_PAGE = 64;\nconst _3D_TILES = '3DTILES';\nconst _3D_OBJECT_LAYER_TYPE = '3DObject';\nconst REFRESH_TOKEN_TIMEOUT = 1800; // 30 minutes in seconds\nconst CESIUM_DATASET_PREFIX = 'https://';\n// const FS_FILE_TOO_LARGE = 'ERR_FS_FILE_TOO_LARGE';\n\n/**\n * Converter from 3d-tiles tileset to i3s layer\n */\nexport default class I3SConverter {\n nodePages: NodePages;\n options: any;\n layers0Path: string;\n materialMap: Map<string, number>;\n materialDefinitions: I3SMaterialDefinition[];\n geometryMap: Map<string, number>;\n geometryConfigs: {hasTexture: boolean; hasUvRegions: boolean}[];\n vertexCounter: number;\n layers0: SceneLayer3D | null;\n featuresHashArray: string[];\n refinementCounter: {\n tilesCount: number;\n tilesWithAddRefineCount: number;\n };\n validate: boolean;\n boundingVolumeWarnings?: string[] = [];\n conversionStartTime: [number, number] = [0, 0];\n refreshTokenTime: [number, number] = [0, 0];\n sourceTileset: Tiles3DTilesetJSONPostprocessed | null = null;\n loadOptions: Tiles3DLoaderOptions = {\n _nodeWorkers: true,\n reuseWorkers: true,\n basis: {\n format: 'rgba32',\n // We need to load local fs workers because nodejs can't load workers from the Internet\n workerUrl: './modules/textures/dist/basis-worker-node.js'\n },\n // We need to load local fs workers because nodejs can't load workers from the Internet\n draco: {workerUrl: './modules/draco/dist/draco-worker-node.js'},\n fetch: {}\n };\n geoidHeightModel: Geoid | null = null;\n Loader: LoaderWithParser = Tiles3DLoader;\n generateTextures: boolean;\n generateBoundingVolumes: boolean;\n layersHasTexture: boolean;\n workerSource: {[key: string]: string} = {};\n writeQueue: WriteQueue<WriteQueueItem> = new WriteQueue();\n compressList: string[] | null = null;\n preprocessData: PreprocessData = {\n meshTopologyTypes: new Set()\n };\n\n constructor() {\n this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE, this);\n this.options = {};\n this.layers0Path = '';\n this.materialMap = new Map();\n this.materialDefinitions = [];\n this.geometryMap = new Map();\n this.geometryConfigs = [];\n this.vertexCounter = 0;\n this.layers0 = null;\n this.featuresHashArray = [];\n this.refinementCounter = {\n tilesCount: 0,\n tilesWithAddRefineCount: 0\n };\n this.validate = false;\n this.generateTextures = false;\n this.generateBoundingVolumes = false;\n this.layersHasTexture = false;\n this.compressList = null;\n }\n\n /**\n * Convert a 3d tileset\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.maxDepth The max tree depth of conversion\n * @param options.slpk Generate slpk (Scene Layer Packages) output file\n * @param options.sevenZipExe Location of 7z.exe archiver to create slpk on Windows\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.token Token for Cesium ION tilesets authentication\n * @param options.draco Generate I3S 1.7 draco compressed geometries\n * @param options.validate -enable validation\n * @param options.generateTextures - generate alternative type of textures (to have non-compressed jpeg/png and compressed ktx2)\n * @param options.generateBoundingVolumes - generate bounding volumes from vertices coordinates instead of source tiles bounding volumes\n * @param options.instantNodeWriting - Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed\n */\n async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n sevenZipExe: string;\n egmFilePath: string;\n maxDepth?: number;\n slpk?: boolean;\n token?: string;\n draco?: boolean;\n mergeMaterials?: boolean;\n validate?: boolean;\n generateTextures?: boolean;\n generateBoundingVolumes?: boolean;\n instantNodeWriting?: boolean;\n }): Promise<string> {\n if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\n this.conversionStartTime = process.hrtime();\n const {\n tilesetName,\n slpk,\n egmFilePath,\n inputUrl,\n validate,\n outputPath,\n draco = true,\n sevenZipExe,\n maxDepth,\n token,\n generateTextures,\n generateBoundingVolumes,\n instantNodeWriting = false,\n mergeMaterials = true\n } = options;\n this.options = {\n maxDepth,\n slpk,\n sevenZipExe,\n egmFilePath,\n draco,\n token,\n inputUrl,\n instantNodeWriting,\n mergeMaterials\n };\n this.compressList = (this.options.instantNodeWriting && []) || null;\n this.validate = Boolean(validate);\n this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? CesiumIonLoader : Tiles3DLoader;\n this.generateTextures = Boolean(generateTextures);\n this.generateBoundingVolumes = Boolean(generateBoundingVolumes);\n\n this.writeQueue = new WriteQueue();\n this.writeQueue.startListening();\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 if (slpk) {\n this.nodePages.useWriteFunction(writeFileForSlpk);\n }\n\n await this.loadWorkers();\n\n try {\n const preloadOptions = await this._fetchPreloadOptions();\n if (preloadOptions.headers) {\n this.loadOptions.fetch = {headers: preloadOptions.headers};\n }\n this.sourceTileset = await load(inputUrl, this.Loader, this.loadOptions);\n\n const preprocessResult = await this.preprocessConversion();\n\n if (preprocessResult) {\n await this._createAndSaveTileset(outputPath, tilesetName);\n await this._finishConversion({slpk: Boolean(slpk), outputPath, tilesetName});\n }\n } catch (error) {\n throw error;\n } finally {\n await this.writeQueue.finalize();\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n return 'success';\n }\n\n /**\n * Preprocess stage of the tile converter. Traverse all the tiles tree and\n * check a tile content to be sure that the data is supported\n * @returns true - the conversion is possible, false - the tileset's content is not supported\n */\n private async preprocessConversion(): Promise<boolean> {\n console.log(`Analyze source tileset`);\n const sourceRootTile: Tiles3DTileJSONPostprocessed = this.sourceTileset!.root!;\n await traverseDatasetWith<null>(\n sourceRootTile,\n null,\n this.analyzeTile.bind(this),\n undefined,\n this.options.maxDepth\n );\n const {meshTopologyTypes} = this.preprocessData;\n console.log(`------------------------------------------------`);\n console.log(`Preprocess results:`);\n console.log(`glTF mesh topology types: ${Array.from(meshTopologyTypes).join(', ')}`);\n console.log(`------------------------------------------------`);\n if (\n !meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLES) &&\n !meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLE_STRIP)\n ) {\n console.log(\n 'The tileset is of unsupported mesh topology types. The conversion will be interrupted.'\n );\n console.log(`------------------------------------------------`);\n return false;\n }\n return true;\n }\n\n /**\n * Analyze a tile content. The callback for preprocess stage.\n * @param sourceTile - 3DTiles tile JSON metadata\n * @param traversalProps - mandatory argument but it is not used for the preprocess stage\n * @returns - nothing\n */\n private async analyzeTile(\n sourceTile: Tiles3DTileJSONPostprocessed,\n traversalProps: null\n ): Promise<null> {\n if (sourceTile.type === 'json') {\n await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);\n return null;\n }\n if (sourceTile.id) {\n console.log(`[analyze]: ${sourceTile.id}`); // eslint-disable-line\n }\n const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {\n ...this.loadOptions,\n '3d-tiles': {...this.loadOptions['3d-tiles'], loadGLTF: false}\n });\n const tilePreprocessData = await analyzeTileContent(tileContent);\n mergePreprocessData(this.preprocessData, tilePreprocessData);\n\n return null;\n }\n\n /**\n * Convert and save the layer and embedded tiles\n * @param outputPath - path to save output data\n * @param tilesetName - new tileset path\n */\n private async _createAndSaveTileset(outputPath: string, tilesetName: string): Promise<void> {\n const tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n this.layers0Path = join(tilesetPath, 'SceneServer', 'layers', '0');\n\n this.materialDefinitions = [];\n this.materialMap = new Map();\n\n const sourceRootTile: Tiles3DTileJSONPostprocessed = this.sourceTileset!.root!;\n const sourceBoundingVolume = createBoundingVolume(\n sourceRootTile.boundingVolume,\n new Matrix4(sourceRootTile.transform),\n null\n );\n\n this._formLayers0(\n tilesetName,\n sourceBoundingVolume,\n this.sourceTileset?.root?.boundingVolume?.region\n );\n\n const boundingVolumes = createBoundingVolumes(sourceBoundingVolume, this.geoidHeightModel!);\n\n await this.nodePages.push({\n index: 0,\n lodThreshold: 0,\n obb: boundingVolumes.obb,\n children: []\n });\n\n const rootNode = await NodeIndexDocument.createRootNode(boundingVolumes, this);\n await traverseDatasetWith<TraversalConversionProps>(\n sourceRootTile,\n {\n transform: new Matrix4(sourceRootTile.transform),\n parentNodes: [rootNode]\n },\n this.convertTile.bind(this),\n this.finalizeTile.bind(this),\n this.options.maxDepth\n );\n\n this.layers0!.materialDefinitions = this.materialDefinitions;\n // @ts-ignore\n this.layers0.geometryDefinitions = transform(\n this.geometryConfigs.map((config) => ({\n geometryConfig: {...config, draco: this.options.draco}\n })),\n geometryDefinitionTemlate()\n );\n\n if (this.layersHasTexture === false) {\n this.layers0!.store.defaultGeometrySchema.ordering =\n this.layers0!.store.defaultGeometrySchema.ordering.filter(\n (attribute) => attribute !== 'uv0'\n );\n }\n\n await this._writeLayers0();\n createSceneServerPath(tilesetName, this.layers0!, tilesetPath);\n for (const filePath of this.compressList || []) {\n await compressFileWithGzip(filePath);\n await removeFile(filePath);\n }\n await this.nodePages.save();\n await this.writeQueue.finalize();\n await this._createSlpk(tilesetPath);\n }\n\n /**\n * Form object of 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md\n * @param tilesetName - Name of layer\n * @param sourceBoundingVolume - initialized bounding volume of the source root tile\n * @param boundingVolumeRegion - region bounding volume of the source root tile\n */\n private _formLayers0(\n tilesetName: string,\n sourceBoundingVolume: OrientedBoundingBox | BoundingSphere,\n boundingVolumeRegion?: number[]\n ): void {\n if (!this.sourceTileset?.root) {\n return;\n }\n const fullExtent = convertBoundingVolumeToI3SFullExtent(sourceBoundingVolume);\n if (boundingVolumeRegion) {\n fullExtent.zmin = boundingVolumeRegion[4];\n fullExtent.zmax = boundingVolumeRegion[5];\n }\n const extent = [fullExtent.xmin, fullExtent.ymin, fullExtent.xmax, fullExtent.ymax];\n const layers0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 0,\n name: tilesetName,\n href: './layers/0',\n store: {\n id: `{${uuidv4().toUpperCase()}}`,\n extent\n },\n nodePages: {\n nodesPerPage: HARDCODED_NODES_PER_PAGE\n },\n compressGeometry: this.options.draco,\n fullExtent\n };\n this.layers0 = transform(layers0data, layersTemplate());\n }\n\n /**\n * Write 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md in file\n */\n private async _writeLayers0(): Promise<void> {\n if (this.options.slpk) {\n await this.writeQueue.enqueue({\n archiveKey: '3dSceneLayer.json.gz',\n writePromise: () =>\n writeFileForSlpk(this.layers0Path, JSON.stringify(this.layers0), '3dSceneLayer.json')\n });\n } else {\n await this.writeQueue.enqueue({\n writePromise: () => writeFile(this.layers0Path, JSON.stringify(this.layers0))\n });\n }\n }\n\n /**\n * Pack files into *.slpk archive\n * @param tilesetPath - Path to save file\n */\n private async _createSlpk(tilesetPath: string): Promise<void> {\n if (this.options.slpk) {\n const slpkTilesetPath = join(tilesetPath, 'SceneServer', 'layers', '0');\n const slpkFileName = `${tilesetPath}.slpk`;\n await compressWithChildProcess(\n slpkTilesetPath,\n slpkFileName,\n 0,\n '.',\n this.options.sevenZipExe\n );\n\n // TODO: `addFileToZip` corrupts archive so it can't be validated with windows i3s_converter.exe\n // const fileHash128Path = `${tilesetPath}/@specialIndexFileHASH128@`;\n // try {\n // await generateHash128FromZip(slpkFileName, fileHash128Path);\n // await addFileToZip(\n // tilesetPath,\n // '@specialIndexFileHASH128@',\n // slpkFileName,\n // this.options.sevenZipExe\n // );\n // } catch (error) {\n // if (error.code === FS_FILE_TOO_LARGE) {\n // console.warn(`${slpkFileName} file is too big to generate a hash`); // eslint-disable-line\n // } else {\n // console.error(error); // eslint-disable-line\n // }\n // }\n // All converted files are contained in slpk now they can be deleted\n try {\n await removeDir(tilesetPath);\n } catch (e) {\n // do nothing\n }\n }\n }\n\n /**\n * Convert the specific 3DTiles tile to I3S nodes.\n * This is callback function for the traversal generic function\n * @param sourceTile - current 3DTiles tile JSON metadata\n * @param traversalProps - traversal properties calculated recursively\n * @returns - traversal properties for the child tiles\n */\n private async convertTile(\n sourceTile: Tiles3DTileJSONPostprocessed,\n traversalProps: TraversalConversionProps\n ): Promise<TraversalConversionProps> {\n if (sourceTile.type === 'json' || sourceTile.type === 'empty') {\n if (sourceTile.type === 'json') {\n if (sourceTile.id) {\n console.log(`[load]: ${sourceTile.id}`); // eslint-disable-line\n }\n await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);\n }\n return traversalProps;\n }\n if (sourceTile.id) {\n console.log(`[convert]: ${sourceTile.id}`); // eslint-disable-line\n }\n\n const {parentNodes, transform} = traversalProps;\n let transformationMatrix: Matrix4 = transform.clone();\n if (sourceTile.transform) {\n transformationMatrix = transformationMatrix.multiplyRight(sourceTile.transform);\n }\n const parentNode = parentNodes[0];\n const childNodes = await this._createNode(parentNode, sourceTile, transformationMatrix);\n await parentNode.addChildren(childNodes);\n\n const newTraversalProps: TraversalConversionProps = {\n transform: transformationMatrix,\n parentNodes: childNodes\n };\n return newTraversalProps;\n }\n\n /**\n * Do final action with nodes after the current node and all child nodes been converted.\n * @param conversionResults - array of conversion results of the current node\n * @param currentTraversalProps - traversal properties of the current node\n */\n private async finalizeTile(\n conversionResults: TraversalConversionProps[],\n currentTraversalProps: TraversalConversionProps\n ): Promise<void> {\n for (const result of conversionResults) {\n for (const node of result.parentNodes) {\n await node.addNeighbors();\n }\n }\n for (const node of currentTraversalProps.parentNodes) {\n await node.save();\n }\n }\n\n /**\n * Convert tile to one or more I3S nodes\n * @param parentNode - 3DNodeIndexDocument of parent node\n * @param sourceTile - source 3DTile data\n * @param transformationMatrix - transformation matrix of the current tile, calculated recursively multiplying\n * transform of all parent tiles and transform of the current tile\n * @param level - tree level\n */\n private async _createNode(\n parentNode: NodeIndexDocument,\n sourceTile: Tiles3DTileJSONPostprocessed,\n transformationMatrix: Matrix4\n ): Promise<NodeIndexDocument[]> {\n this._checkAddRefinementTypeForTile(sourceTile);\n\n await this._updateTilesetOptions();\n\n const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);\n const sourceBoundingVolume = createBoundingVolume(\n sourceTile.boundingVolume,\n transformationMatrix,\n null\n );\n let boundingVolumes = createBoundingVolumes(sourceBoundingVolume, this.geoidHeightModel!);\n\n const propertyTable = getPropertyTable(tileContent);\n\n if (propertyTable && !this.layers0?.attributeStorageInfo?.length) {\n this._convertPropertyTableToNodeAttributes(propertyTable);\n }\n\n const resourcesData = await this._convertResources(\n sourceTile,\n transformationMatrix,\n sourceBoundingVolume,\n tileContent,\n parentNode.inPageId,\n propertyTable\n );\n\n const nodes: NodeIndexDocument[] = [];\n const nodeIds: number[] = [];\n const nodesInPage: NodeInPage[] = [];\n const emptyResources = {\n geometry: null,\n compressedGeometry: null,\n texture: null,\n hasUvRegions: false,\n sharedResources: null,\n meshMaterial: null,\n vertexCount: null,\n attributes: null,\n featureCount: null,\n boundingVolumes: null\n };\n\n for (const resources of resourcesData || [emptyResources]) {\n this.layersHasTexture = this.layersHasTexture || Boolean(resources.texture);\n\n if (this.generateBoundingVolumes && resources.boundingVolumes) {\n boundingVolumes = resources.boundingVolumes;\n }\n\n const lodSelection = convertGeometricErrorToScreenThreshold(sourceTile, boundingVolumes);\n const maxScreenThresholdSQ = lodSelection.find(\n (val) => val.metricType === 'maxScreenThresholdSQ'\n ) || {maxError: 0};\n\n const nodeInPage = await this._updateNodeInNodePages(\n maxScreenThresholdSQ,\n boundingVolumes,\n sourceTile,\n parentNode.inPageId,\n resources\n );\n\n const nodeData = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, this).addData(nodeData);\n nodes.push(node);\n\n if (nodeInPage.mesh) {\n await this._writeResources(resources, node.id);\n }\n\n if (this.validate) {\n this.boundingVolumeWarnings = validateNodeBoundingVolumes(nodeData);\n\n if (this.boundingVolumeWarnings && this.boundingVolumeWarnings.length) {\n console.warn('Bounding Volume Warnings: ', ...this.boundingVolumeWarnings); //eslint-disable-line\n }\n }\n\n nodeIds.push(nodeInPage.index);\n nodesInPage.push(nodeInPage);\n }\n\n return nodes;\n }\n\n /**\n * Convert tile to one or more I3S nodes\n * @param sourceTile - source tile (3DTile)\n * @param transformationMatrix - transformation matrix of the current tile, calculated recursively multiplying\n * transform of all parent tiles and transform of the current tile\n * @param boundingVolume - initialized bounding volume of the source tile\n * @param tileContent - content of the source tile\n * @param parentId - id of parent node in node pages\n * @param propertyTable - batch table from b3dm / feature properties from EXT_FEATURE_METADATA\n * @returns - converted node resources\n */\n private async _convertResources(\n sourceTile: Tiles3DTileJSONPostprocessed,\n transformationMatrix: Matrix4,\n boundingVolume: OrientedBoundingBox | BoundingSphere,\n tileContent: Tiles3DTileContent | null,\n parentId: number,\n propertyTable: FeatureTableJson | null\n ): Promise<I3SConvertedResources[] | null> {\n if (!this.isContentSupported(sourceTile) || !tileContent) {\n return null;\n }\n const draftObb = {\n center: [],\n halfSize: [],\n quaternion: []\n };\n const resourcesData = await convertB3dmToI3sGeometry(\n tileContent,\n transformationMatrix,\n boundingVolume,\n async () => (await this.nodePages.push({index: 0, obb: draftObb}, parentId)).index,\n propertyTable,\n this.featuresHashArray,\n this.layers0?.attributeStorageInfo,\n this.options.draco,\n this.generateBoundingVolumes,\n this.options.mergeMaterials,\n this.geoidHeightModel!,\n this.workerSource\n );\n return resourcesData;\n }\n\n /**\n * Update node object (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/node.cmn.md)\n * in node pages (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodePage.cmn.md)\n * @param maxScreenThresholdSQ - Level of Details (LOD) metric\n * @param boundingVolumes - Bounding volumes\n * @param sourceTile - source tile (3DTile)\n * @param parentId - id of parent node in node pages\n * @param resources - the node resources data\n * @param resources.meshMaterial - PBR-like material object\n * @param resources.texture - texture image\n * @param resources.vertexCount - number of vertices in geometry\n * @param resources.featureCount - number of features\n * @param resources.geometry - Uint8Array with geometry attributes\n * @return the node object in node pages\n */\n private async _updateNodeInNodePages(\n maxScreenThresholdSQ: MaxScreenThresholdSQ,\n boundingVolumes: BoundingVolumes,\n sourceTile: Tiles3DTileJSONPostprocessed,\n parentId: number,\n resources: I3SConvertedResources\n ): Promise<NodeInPage> {\n const {meshMaterial, texture, vertexCount, featureCount, geometry, hasUvRegions} = resources;\n const nodeInPage: NodeInPage = {\n index: 0,\n lodThreshold: maxScreenThresholdSQ.maxError,\n obb: boundingVolumes.obb,\n children: []\n };\n if (geometry && this.isContentSupported(sourceTile)) {\n nodeInPage.mesh = {\n geometry: {\n definition: this.findOrCreateGeometryDefinition(Boolean(texture), hasUvRegions),\n resource: 0\n },\n attribute: {\n resource: 0\n },\n material: {\n definition: 0\n }\n };\n }\n\n let nodeId = resources.nodeId;\n let node;\n if (!nodeId) {\n node = await this.nodePages.push(nodeInPage, parentId);\n } else {\n node = await this.nodePages.getNodeById(nodeId);\n }\n\n NodePages.updateAll(node, nodeInPage);\n if (meshMaterial) {\n NodePages.updateMaterialByNodeId(node, this._findOrCreateMaterial(meshMaterial));\n }\n if (texture) {\n const texelCountHint = texture.image.height * texture.image.width;\n NodePages.updateTexelCountHintByNodeId(node, texelCountHint);\n }\n if (vertexCount) {\n this.vertexCounter += vertexCount;\n NodePages.updateVertexCountByNodeId(node, vertexCount);\n }\n NodePages.updateNodeAttributeByNodeId(node);\n if (featureCount) {\n NodePages.updateFeatureCountByNodeId(node, featureCount);\n }\n\n this.nodePages.saveNode(node);\n\n return node;\n }\n\n /**\n * Write node resources in files\n * @param resources - source tile (3DTile)\n * @param resources.geometry - Uint8Array with geometry attributes\n * @param resources.compressedGeometry - Uint8Array with compressed (draco) geometry\n * @param resources.texture - texture image\n * @param resources.sharedResources - shared resource data object\n * @param resources.attributes - feature attributes\n * @return {Promise<void>}\n */\n private async _writeResources(resources: I3SConvertedResources, nodePath: string): Promise<void> {\n const {\n geometry: geometryBuffer,\n compressedGeometry,\n texture,\n sharedResources,\n attributes\n } = resources;\n const childPath = join(this.layers0Path, 'nodes', nodePath);\n const slpkChildPath = join('nodes', nodePath);\n\n await this._writeGeometries(geometryBuffer!, compressedGeometry!, childPath, slpkChildPath);\n await this._writeShared(sharedResources, childPath, slpkChildPath, nodePath);\n await this._writeTexture(texture, childPath, slpkChildPath);\n await this._writeAttributes(attributes, childPath, slpkChildPath);\n }\n\n /**\n * Write non-compressed and compressed geometries in files\n * @param geometryBuffer - Uint8Array with geometry attributes\n * @param compressedGeometry - Uint8Array with compressed (draco) geometry\n * @param childPath - a child path to write resources\n * @param slpkChildPath - resource path inside *slpk file\n */\n private async _writeGeometries(\n geometryBuffer: ArrayBuffer,\n compressedGeometry: Promise<ArrayBuffer>,\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (this.options.slpk) {\n const slpkGeometryPath = join(childPath, 'geometries');\n await this.writeQueue.enqueue({\n archiveKey: `${slpkChildPath}/geometries/0.bin.gz`,\n writePromise: () => writeFileForSlpk(slpkGeometryPath, geometryBuffer, '0.bin')\n });\n } else {\n const geometryPath = join(childPath, 'geometries/0/');\n await this.writeQueue.enqueue({\n writePromise: () => writeFile(geometryPath, geometryBuffer, 'index.bin')\n });\n }\n\n if (this.options.draco) {\n if (this.options.slpk) {\n const slpkCompressedGeometryPath = join(childPath, 'geometries');\n await this.writeQueue.enqueue({\n archiveKey: `${slpkChildPath}/geometries/1.bin.gz`,\n writePromise: () =>\n writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, '1.bin')\n });\n } else {\n const compressedGeometryPath = join(childPath, 'geometries/1/');\n await this.writeQueue.enqueue({\n writePromise: () => writeFile(compressedGeometryPath, compressedGeometry, 'index.bin')\n });\n }\n }\n }\n\n /**\n * Write shared resources in a file\n * @param sharedResources - shared resource data object\n * @param childPath - a child path to write resources\n * @param slpkChildPath - resource path inside *slpk file\n * @param nodePath - a node path\n */\n private async _writeShared(\n sharedResources: SharedResourcesArrays | null,\n childPath: string,\n slpkChildPath: string,\n nodePath: string\n ): Promise<void> {\n if (!sharedResources) {\n return;\n }\n sharedResources.nodePath = nodePath;\n const sharedData = transform(sharedResources, sharedResourcesTemplate());\n const sharedDataStr = JSON.stringify(sharedData);\n if (this.options.slpk) {\n const slpkSharedPath = join(childPath, 'shared');\n await this.writeQueue.enqueue({\n archiveKey: `${slpkChildPath}/shared/sharedResource.json.gz`,\n writePromise: () => writeFileForSlpk(slpkSharedPath, sharedDataStr, 'sharedResource.json')\n });\n } else {\n const sharedPath = join(childPath, 'shared/');\n await this.writeQueue.enqueue({writePromise: () => writeFile(sharedPath, sharedDataStr)});\n }\n }\n\n /**\n * Generates textures based on texture mime type and fill in textureSetDefinitions data.\n * @param texture - the texture image\n * @param childPath - a child path to write resources\n * @param slpkChildPath - the resource path inside *slpk file\n */\n private async _writeTexture(\n texture: GLTFImagePostprocessed,\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (texture) {\n const format = this._getFormatByMimeType(texture?.mimeType);\n const formats: TextureSetDefinitionFormats = [];\n const textureData = texture.bufferView!.data;\n\n switch (format) {\n case 'jpg':\n case 'png': {\n formats.push({name: '0', format});\n await this.writeTextureFile(textureData, '0', format, childPath, slpkChildPath);\n\n if (this.generateTextures) {\n formats.push({name: '1', format: 'ktx2'});\n // For Node.js texture.image.data is type of Buffer\n const copyArrayBuffer = texture.image.data.subarray();\n const arrayToEncode = new Uint8Array(copyArrayBuffer);\n const ktx2TextureData = encode(\n {...texture.image, data: arrayToEncode},\n KTX2BasisWriterWorker,\n {\n ...KTX2BasisWriterWorker.options,\n source: this.workerSource.ktx2,\n reuseWorkers: true,\n _nodeWorkers: true\n }\n );\n\n await this.writeTextureFile(ktx2TextureData, '1', 'ktx2', childPath, slpkChildPath);\n }\n\n break;\n }\n\n case 'ktx2': {\n formats.push({name: '1', format});\n await this.writeTextureFile(textureData, '1', format, childPath, slpkChildPath);\n\n if (this.generateTextures) {\n formats.push({name: '0', format: 'jpg'});\n const decodedFromKTX2TextureData = encode(texture.image!.data[0], ImageWriter);\n await this.writeTextureFile(\n decodedFromKTX2TextureData,\n '0',\n 'jpg',\n childPath,\n slpkChildPath\n );\n }\n }\n }\n\n if (!this.layers0!.textureSetDefinitions!.length) {\n this.layers0!.textureSetDefinitions!.push({formats});\n this.layers0!.textureSetDefinitions!.push({formats, atlas: true});\n }\n }\n }\n\n /**\n * Write the texture image in a file\n * @param textureData\n * @param name\n * @param format\n * @param childPath\n * @param slpkChildPath\n */\n private async writeTextureFile(\n textureData: Uint8Array | Promise<ArrayBuffer>,\n name: string,\n format: 'jpg' | 'png' | 'ktx2',\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (this.options.slpk) {\n const slpkTexturePath = join(childPath, 'textures');\n const compress = false;\n\n await this.writeQueue.enqueue({\n archiveKey: `${slpkChildPath}/textures/${name}.${format}`,\n writePromise: () =>\n writeFileForSlpk(slpkTexturePath, textureData, `${name}.${format}`, compress)\n });\n } else {\n const texturePath = join(childPath, `textures/${name}/`);\n await this.writeQueue.enqueue({\n writePromise: () => writeFile(texturePath, textureData, `index.${format}`)\n });\n }\n }\n\n /**\n * Write feature attributes in files\n * @param attributes - feature attributes\n * @param childPath - a child path to write resources\n * @param slpkChildPath - the resource path inside *slpk file\n */\n private async _writeAttributes(\n attributes: ArrayBuffer[] | null = [],\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (attributes?.length && this.layers0?.attributeStorageInfo?.length) {\n for (let index = 0; index < attributes.length; index++) {\n const folderName = this.layers0.attributeStorageInfo[index].key;\n const fileBuffer = new Uint8Array(attributes[index]);\n\n if (this.options.slpk) {\n const slpkAttributesPath = join(childPath, 'attributes', folderName);\n await this.writeQueue.enqueue({\n archiveKey: `${slpkChildPath}/attributes/${folderName}.bin.gz`,\n writePromise: () => writeFileForSlpk(slpkAttributesPath, fileBuffer, '0.bin')\n });\n } else {\n const attributesPath = join(childPath, `attributes/${folderName}/0`);\n await this.writeQueue.enqueue({\n writePromise: () => writeFile(attributesPath, fileBuffer, 'index.bin')\n });\n }\n }\n }\n }\n\n /**\n * Return file format by its MIME type\n * @param mimeType - feature attributes\n */\n private _getFormatByMimeType(mimeType: string | undefined): 'jpg' | 'png' | 'ktx2' {\n switch (mimeType) {\n case 'image/jpeg':\n return 'jpg';\n case 'image/png':\n return 'png';\n case 'image/ktx2':\n return 'ktx2';\n default:\n return 'jpg';\n }\n }\n\n /**\n * Find or create material in materialDefinitions array\n * @param material - end-to-end index of the node\n * @return material id\n */\n private _findOrCreateMaterial(material: I3SMaterialDefinition): number {\n const hash = md5(JSON.stringify(material));\n if (this.materialMap.has(hash)) {\n return this.materialMap.get(hash) || 0;\n }\n const newMaterialId = this.materialDefinitions.push(material) - 1;\n this.materialMap.set(hash, newMaterialId);\n return newMaterialId;\n }\n\n /**\n * Get unique geometry configuration index\n * In the end of conversion configurations will be transformed to geometryDefinitions array\n * @param hasTexture\n * @param hasUvRegions\n * @returns\n */\n private findOrCreateGeometryDefinition(hasTexture: boolean, hasUvRegions: boolean): number {\n const geometryConfig = {hasTexture, hasUvRegions};\n const hash = md5(JSON.stringify(geometryConfig));\n if (this.geometryMap.has(hash)) {\n return this.geometryMap.get(hash) || 0;\n }\n const newGeometryId = this.geometryConfigs.push(geometryConfig) - 1;\n this.geometryMap.set(hash, newGeometryId);\n return newGeometryId;\n }\n\n /**\n * Do conversion of 3DTiles property table to I3s node attributes.\n * @param propertyTable - Table with layer meta data.\n */\n private _convertPropertyTableToNodeAttributes(propertyTable: FeatureTableJson): void {\n let attributeIndex = 0;\n const propertyTableWithObjectId = {\n OBJECTID: [0],\n ...propertyTable\n };\n\n for (const key in propertyTableWithObjectId) {\n const firstAttribute = propertyTableWithObjectId[key][0];\n const attributeType = getAttributeType(key, firstAttribute);\n\n const storageAttribute = createdStorageAttribute(attributeIndex, key, attributeType);\n const fieldAttributeType = getFieldAttributeType(attributeType);\n const fieldAttribute = createFieldAttribute(key, fieldAttributeType);\n const popupInfo = createPopupInfo(propertyTableWithObjectId);\n\n this.layers0!.attributeStorageInfo!.push(storageAttribute);\n this.layers0!.fields!.push(fieldAttribute);\n this.layers0!.popupInfo = popupInfo;\n this.layers0!.layerType = _3D_OBJECT_LAYER_TYPE;\n\n attributeIndex += 1;\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 {tilesCount, tilesWithAddRefineCount} = this.refinementCounter;\n const addRefinementPercentage = tilesWithAddRefineCount\n ? (tilesWithAddRefineCount / tilesCount) * 100\n : 0;\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n console.log(`------------------------------------------------`); // eslint-disable-line no-undef, no-console\n console.log(`Finishing conversion of ${_3D_TILES}`); // eslint-disable-line no-undef, no-console\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line no-undef, no-console\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line no-undef, no-console\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line no-undef, no-console\n console.log(`Percentage of tiles with \"ADD\" refinement type:`, addRefinementPercentage, '%'); // eslint-disable-line no-undef, no-console\n console.log(`------------------------------------------------`); // eslint-disable-line no-undef, no-console\n }\n\n /**\n * Fetch preload options for ION tileset\n */\n private async _fetchPreloadOptions(): Promise<any> {\n if (!this.Loader.preload) {\n return {};\n }\n const options = {\n 'cesium-ion': {accessToken: this.options.token || ION_DEFAULT_TOKEN}\n };\n const preloadOptions = await this.Loader.preload(this.options.inputUrl, options);\n this.refreshTokenTime = process.hrtime();\n return {...options, ...preloadOptions};\n }\n\n /**\n * Update options of source tileset\n */\n private async _updateTilesetOptions(): Promise<void> {\n const diff = process.hrtime(this.refreshTokenTime);\n if (diff[0] < REFRESH_TOKEN_TIMEOUT) {\n return;\n }\n this.refreshTokenTime = process.hrtime();\n\n const preloadOptions = await this._fetchPreloadOptions();\n if (preloadOptions.headers) {\n this.loadOptions.fetch = {\n ...this.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n console.log('Authorization Bearer token has been updated'); // eslint-disable-line no-undef, no-console\n }\n }\n\n /** Do calculations of all tiles and tiles with \"ADD\" type of refinement.\n * @param tile\n */\n private _checkAddRefinementTypeForTile(tile: Tiles3DTileJSONPostprocessed): void {\n const ADD_TILE_REFINEMENT = 1;\n\n if (tile.refine === ADD_TILE_REFINEMENT) {\n this.refinementCounter.tilesWithAddRefineCount += 1;\n console.warn('This tile uses \"ADD\" type of refinement'); // eslint-disable-line\n }\n\n this.refinementCounter.tilesCount += 1;\n }\n\n /**\n * Check if the tile's content format is supported by the converter\n * @param sourceTile\n * @returns\n */\n private isContentSupported(sourceTile: Tiles3DTileJSONPostprocessed): boolean {\n return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n if (this.options.draco) {\n const url = getWorkerURL(DracoWriterWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(url);\n const source = await sourceResponse.text();\n this.workerSource.draco = source;\n }\n\n if (this.generateTextures) {\n const url = getWorkerURL(KTX2BasisWriterWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(url);\n const source = await sourceResponse.text();\n this.workerSource.ktx2 = source;\n }\n\n const i3sAttributesWorkerUrl = getWorkerURL(I3SAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(i3sAttributesWorkerUrl);\n const source = await sourceResponse.text();\n this.workerSource.I3SAttributes = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import transform from 'json-map-transform';
|
|
2
|
+
const PLAIN_GEOMETRY_DEFINITION = () => ({
|
|
3
|
+
offset: {
|
|
4
|
+
default: 8
|
|
5
|
+
},
|
|
6
|
+
position: {
|
|
7
|
+
default: {
|
|
8
|
+
type: 'Float32',
|
|
9
|
+
component: 3
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
normal: {
|
|
13
|
+
default: {
|
|
14
|
+
type: 'Float32',
|
|
15
|
+
component: 3
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
uv0: {
|
|
19
|
+
path: 'hasTexture',
|
|
20
|
+
transform: val => val && {
|
|
21
|
+
type: 'Float32',
|
|
22
|
+
component: 2
|
|
23
|
+
} || false,
|
|
24
|
+
omitValues: [false]
|
|
25
|
+
},
|
|
26
|
+
color: {
|
|
27
|
+
default: {
|
|
28
|
+
type: 'UInt8',
|
|
29
|
+
component: 4
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
uvRegion: {
|
|
33
|
+
path: 'hasUvRegions',
|
|
34
|
+
transform: val => val && {
|
|
35
|
+
type: 'UInt16',
|
|
36
|
+
component: 4
|
|
37
|
+
} || false,
|
|
38
|
+
omitValues: [false]
|
|
39
|
+
},
|
|
40
|
+
featureId: {
|
|
41
|
+
default: {
|
|
42
|
+
binding: 'per-feature',
|
|
43
|
+
type: 'UInt64',
|
|
44
|
+
component: 1
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
faceRange: {
|
|
48
|
+
default: {
|
|
49
|
+
binding: 'per-feature',
|
|
50
|
+
type: 'UInt32',
|
|
51
|
+
component: 2
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const COMPRESSED_GEOMETRY_DEFINITION = () => ({
|
|
56
|
+
'compressedAttributes.encoding': {
|
|
57
|
+
default: 'draco'
|
|
58
|
+
},
|
|
59
|
+
'compressedAttributes.attributes': {
|
|
60
|
+
path: 'geometryConfig',
|
|
61
|
+
transform: val => {
|
|
62
|
+
const result = ['position', 'normal'];
|
|
63
|
+
if (val.hasTexture) {
|
|
64
|
+
result.push('uv0');
|
|
65
|
+
}
|
|
66
|
+
result.push('color');
|
|
67
|
+
if (val.hasUvRegions) {
|
|
68
|
+
result.push('uv-region');
|
|
69
|
+
}
|
|
70
|
+
result.push('feature-index');
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
export const GEOMETRY_DEFINITION = () => ({
|
|
76
|
+
geometryBuffers: {
|
|
77
|
+
path: 'geometryConfig',
|
|
78
|
+
transform: val => {
|
|
79
|
+
const result = [transform(val, PLAIN_GEOMETRY_DEFINITION())];
|
|
80
|
+
if (val.draco) {
|
|
81
|
+
result.push(transform({
|
|
82
|
+
geometryConfig: val
|
|
83
|
+
}, COMPRESSED_GEOMETRY_DEFINITION()));
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=geometry-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry-definitions.js","names":["transform","PLAIN_GEOMETRY_DEFINITION","offset","default","position","type","component","normal","uv0","path","val","omitValues","color","uvRegion","featureId","binding","faceRange","COMPRESSED_GEOMETRY_DEFINITION","result","hasTexture","push","hasUvRegions","GEOMETRY_DEFINITION","geometryBuffers","draco","geometryConfig"],"sources":["../../../../src/i3s-converter/json-templates/geometry-definitions.ts"],"sourcesContent":["import transform from 'json-map-transform';\n\nconst PLAIN_GEOMETRY_DEFINITION = () => ({\n offset: {\n default: 8\n },\n position: {\n default: {\n type: 'Float32',\n component: 3\n }\n },\n normal: {\n default: {\n type: 'Float32',\n component: 3\n }\n },\n uv0: {\n path: 'hasTexture',\n transform: (val) => (val && {type: 'Float32', component: 2}) || false,\n omitValues: [false]\n },\n color: {\n default: {\n type: 'UInt8',\n component: 4\n }\n },\n uvRegion: {\n path: 'hasUvRegions',\n transform: (val) => (val && {type: 'UInt16', component: 4}) || false,\n omitValues: [false]\n },\n featureId: {\n default: {\n binding: 'per-feature',\n type: 'UInt64',\n component: 1\n }\n },\n faceRange: {\n default: {\n binding: 'per-feature',\n type: 'UInt32',\n component: 2\n }\n }\n});\n\nconst COMPRESSED_GEOMETRY_DEFINITION = () => ({\n 'compressedAttributes.encoding': {\n default: 'draco'\n },\n 'compressedAttributes.attributes': {\n path: 'geometryConfig',\n transform: (val) => {\n const result = ['position', 'normal'];\n if (val.hasTexture) {\n result.push('uv0');\n }\n result.push('color');\n if (val.hasUvRegions) {\n result.push('uv-region');\n }\n result.push('feature-index');\n return result;\n }\n }\n});\n\nexport const GEOMETRY_DEFINITION = () => ({\n geometryBuffers: {\n path: 'geometryConfig',\n transform: (val) => {\n const result = [transform(val, PLAIN_GEOMETRY_DEFINITION())];\n if (val.draco) {\n result.push(transform({geometryConfig: val}, COMPRESSED_GEOMETRY_DEFINITION()));\n }\n return result;\n }\n }\n});\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,oBAAoB;AAE1C,MAAMC,yBAAyB,GAAGA,CAAA,MAAO;EACvCC,MAAM,EAAE;IACNC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRD,OAAO,EAAE;MACPE,IAAI,EAAE,SAAS;MACfC,SAAS,EAAE;IACb;EACF,CAAC;EACDC,MAAM,EAAE;IACNJ,OAAO,EAAE;MACPE,IAAI,EAAE,SAAS;MACfC,SAAS,EAAE;IACb;EACF,CAAC;EACDE,GAAG,EAAE;IACHC,IAAI,EAAE,YAAY;IAClBT,SAAS,EAAGU,GAAG,IAAMA,GAAG,IAAI;MAACL,IAAI,EAAE,SAAS;MAAEC,SAAS,EAAE;IAAC,CAAC,IAAK,KAAK;IACrEK,UAAU,EAAE,CAAC,KAAK;EACpB,CAAC;EACDC,KAAK,EAAE;IACLT,OAAO,EAAE;MACPE,IAAI,EAAE,OAAO;MACbC,SAAS,EAAE;IACb;EACF,CAAC;EACDO,QAAQ,EAAE;IACRJ,IAAI,EAAE,cAAc;IACpBT,SAAS,EAAGU,GAAG,IAAMA,GAAG,IAAI;MAACL,IAAI,EAAE,QAAQ;MAAEC,SAAS,EAAE;IAAC,CAAC,IAAK,KAAK;IACpEK,UAAU,EAAE,CAAC,KAAK;EACpB,CAAC;EACDG,SAAS,EAAE;IACTX,OAAO,EAAE;MACPY,OAAO,EAAE,aAAa;MACtBV,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAE;IACb;EACF,CAAC;EACDU,SAAS,EAAE;IACTb,OAAO,EAAE;MACPY,OAAO,EAAE,aAAa;MACtBV,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAE;IACb;EACF;AACF,CAAC,CAAC;AAEF,MAAMW,8BAA8B,GAAGA,CAAA,MAAO;EAC5C,+BAA+B,EAAE;IAC/Bd,OAAO,EAAE;EACX,CAAC;EACD,iCAAiC,EAAE;IACjCM,IAAI,EAAE,gBAAgB;IACtBT,SAAS,EAAGU,GAAG,IAAK;MAClB,MAAMQ,MAAM,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;MACrC,IAAIR,GAAG,CAACS,UAAU,EAAE;QAClBD,MAAM,CAACE,IAAI,CAAC,KAAK,CAAC;MACpB;MACAF,MAAM,CAACE,IAAI,CAAC,OAAO,CAAC;MACpB,IAAIV,GAAG,CAACW,YAAY,EAAE;QACpBH,MAAM,CAACE,IAAI,CAAC,WAAW,CAAC;MAC1B;MACAF,MAAM,CAACE,IAAI,CAAC,eAAe,CAAC;MAC5B,OAAOF,MAAM;IACf;EACF;AACF,CAAC,CAAC;AAEF,OAAO,MAAMI,mBAAmB,GAAGA,CAAA,MAAO;EACxCC,eAAe,EAAE;IACfd,IAAI,EAAE,gBAAgB;IACtBT,SAAS,EAAGU,GAAG,IAAK;MAClB,MAAMQ,MAAM,GAAG,CAAClB,SAAS,CAACU,GAAG,EAAET,yBAAyB,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAIS,GAAG,CAACc,KAAK,EAAE;QACbN,MAAM,CAACE,IAAI,CAACpB,SAAS,CAAC;UAACyB,cAAc,EAAEf;QAAG,CAAC,EAAEO,8BAA8B,CAAC,CAAC,CAAC,CAAC;MACjF;MACA,OAAOC,MAAM;IACf;EACF;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import transform from 'json-map-transform';
|
|
2
|
+
import { STORE } from './store';
|
|
3
|
+
const SPATIAL_REFERENCE = () => ({
|
|
4
|
+
wkid: {
|
|
5
|
+
path: 'wkid',
|
|
6
|
+
default: 4326
|
|
7
|
+
},
|
|
8
|
+
latestWkid: {
|
|
9
|
+
path: 'latestWkid',
|
|
10
|
+
default: 4326
|
|
11
|
+
},
|
|
12
|
+
vcsWkid: {
|
|
13
|
+
path: 'vcsWkid',
|
|
14
|
+
default: 5773
|
|
15
|
+
},
|
|
16
|
+
latestVcsWkid: {
|
|
17
|
+
path: 'latestVcsWkid',
|
|
18
|
+
default: 5773
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const HEIGHT_MODEL_INFO = () => ({
|
|
22
|
+
heightModel: {
|
|
23
|
+
path: 'heightModel',
|
|
24
|
+
default: 'gravity_related_height'
|
|
25
|
+
},
|
|
26
|
+
vertCRS: {
|
|
27
|
+
path: 'vertCRS',
|
|
28
|
+
default: 'EGM96_Geoid'
|
|
29
|
+
},
|
|
30
|
+
heightUnit: {
|
|
31
|
+
path: 'heightUnit',
|
|
32
|
+
default: 'meter'
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const NODE_PAGES = () => ({
|
|
36
|
+
nodesPerPage: {
|
|
37
|
+
path: 'nodesPerPage'
|
|
38
|
+
},
|
|
39
|
+
lodSelectionMetricType: {
|
|
40
|
+
path: 'lodSelectionMetricType',
|
|
41
|
+
default: 'maxScreenThresholdSQ'
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const FULL_EXTENT = () => ({
|
|
45
|
+
xmin: {
|
|
46
|
+
path: 'xmin'
|
|
47
|
+
},
|
|
48
|
+
ymin: {
|
|
49
|
+
path: 'ymin'
|
|
50
|
+
},
|
|
51
|
+
xmax: {
|
|
52
|
+
path: 'xmax'
|
|
53
|
+
},
|
|
54
|
+
ymax: {
|
|
55
|
+
path: 'ymax'
|
|
56
|
+
},
|
|
57
|
+
zmin: {
|
|
58
|
+
path: 'zmin'
|
|
59
|
+
},
|
|
60
|
+
zmax: {
|
|
61
|
+
path: 'zmax'
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
export const LAYERS = () => ({
|
|
65
|
+
version: {
|
|
66
|
+
path: 'version',
|
|
67
|
+
transform: val => val.toUpperCase()
|
|
68
|
+
},
|
|
69
|
+
id: {
|
|
70
|
+
path: 'id',
|
|
71
|
+
default: 0
|
|
72
|
+
},
|
|
73
|
+
name: {
|
|
74
|
+
path: 'name'
|
|
75
|
+
},
|
|
76
|
+
href: {
|
|
77
|
+
path: 'href',
|
|
78
|
+
default: './layers/0'
|
|
79
|
+
},
|
|
80
|
+
layerType: {
|
|
81
|
+
path: 'layerType',
|
|
82
|
+
default: 'IntegratedMesh'
|
|
83
|
+
},
|
|
84
|
+
spatialReference: {
|
|
85
|
+
path: 'spatialReference',
|
|
86
|
+
transform: val => transform(val, SPATIAL_REFERENCE())
|
|
87
|
+
},
|
|
88
|
+
capabilities: {
|
|
89
|
+
path: 'capabilities',
|
|
90
|
+
default: ['View', 'Query']
|
|
91
|
+
},
|
|
92
|
+
store: {
|
|
93
|
+
path: 'store',
|
|
94
|
+
transform: val => transform(val, STORE)
|
|
95
|
+
},
|
|
96
|
+
fullExtent: {
|
|
97
|
+
path: 'fullExtent',
|
|
98
|
+
transform: val => transform(val, FULL_EXTENT())
|
|
99
|
+
},
|
|
100
|
+
heightModelInfo: {
|
|
101
|
+
path: 'heightModelInfo',
|
|
102
|
+
transform: val => transform(val, HEIGHT_MODEL_INFO())
|
|
103
|
+
},
|
|
104
|
+
nodePages: {
|
|
105
|
+
path: 'nodePages',
|
|
106
|
+
transform: val => transform(val, NODE_PAGES())
|
|
107
|
+
},
|
|
108
|
+
materialDefinitions: {
|
|
109
|
+
path: 'materialDefinitions',
|
|
110
|
+
default: []
|
|
111
|
+
},
|
|
112
|
+
textureSetDefinitions: {
|
|
113
|
+
path: 'textureSetDefinitions',
|
|
114
|
+
default: []
|
|
115
|
+
},
|
|
116
|
+
geometryDefinitions: {
|
|
117
|
+
path: 'geometryDefinitions',
|
|
118
|
+
default: []
|
|
119
|
+
},
|
|
120
|
+
attributeStorageInfo: {
|
|
121
|
+
path: 'attributeStorageInfo',
|
|
122
|
+
default: []
|
|
123
|
+
},
|
|
124
|
+
fields: {
|
|
125
|
+
path: 'fields',
|
|
126
|
+
default: []
|
|
127
|
+
},
|
|
128
|
+
popupInfo: {
|
|
129
|
+
path: 'popupInfo',
|
|
130
|
+
default: null
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.js","names":["transform","STORE","SPATIAL_REFERENCE","wkid","path","default","latestWkid","vcsWkid","latestVcsWkid","HEIGHT_MODEL_INFO","heightModel","vertCRS","heightUnit","NODE_PAGES","nodesPerPage","lodSelectionMetricType","FULL_EXTENT","xmin","ymin","xmax","ymax","zmin","zmax","LAYERS","version","val","toUpperCase","id","name","href","layerType","spatialReference","capabilities","store","fullExtent","heightModelInfo","nodePages","materialDefinitions","textureSetDefinitions","geometryDefinitions","attributeStorageInfo","fields","popupInfo"],"sources":["../../../../src/i3s-converter/json-templates/layers.ts"],"sourcesContent":["import transform from 'json-map-transform';\nimport {STORE} from './store';\n\nconst SPATIAL_REFERENCE = () => ({\n wkid: {\n path: 'wkid',\n default: 4326\n },\n latestWkid: {\n path: 'latestWkid',\n default: 4326\n },\n vcsWkid: {\n path: 'vcsWkid',\n default: 5773\n },\n latestVcsWkid: {\n path: 'latestVcsWkid',\n default: 5773\n }\n});\n\nconst HEIGHT_MODEL_INFO = () => ({\n heightModel: {\n path: 'heightModel',\n default: 'gravity_related_height'\n },\n vertCRS: {\n path: 'vertCRS',\n default: 'EGM96_Geoid'\n },\n heightUnit: {\n path: 'heightUnit',\n default: 'meter'\n }\n});\n\nconst NODE_PAGES = () => ({\n nodesPerPage: {\n path: 'nodesPerPage'\n },\n lodSelectionMetricType: {\n path: 'lodSelectionMetricType',\n default: 'maxScreenThresholdSQ'\n }\n});\n\nconst FULL_EXTENT = () => ({\n xmin: {\n path: 'xmin'\n },\n ymin: {\n path: 'ymin'\n },\n xmax: {\n path: 'xmax'\n },\n ymax: {\n path: 'ymax'\n },\n zmin: {\n path: 'zmin'\n },\n zmax: {\n path: 'zmax'\n }\n});\n\nexport const LAYERS = () => ({\n version: {\n path: 'version',\n transform: (val) => val.toUpperCase()\n },\n id: {\n path: 'id',\n default: 0\n },\n name: {\n path: 'name'\n },\n href: {\n path: 'href',\n default: './layers/0'\n },\n layerType: {\n path: 'layerType',\n default: 'IntegratedMesh'\n },\n spatialReference: {\n path: 'spatialReference',\n transform: (val) => transform(val, SPATIAL_REFERENCE())\n },\n capabilities: {\n path: 'capabilities',\n default: ['View', 'Query']\n },\n store: {\n path: 'store',\n transform: (val) => transform(val, STORE)\n },\n fullExtent: {\n path: 'fullExtent',\n transform: (val) => transform(val, FULL_EXTENT())\n },\n heightModelInfo: {\n path: 'heightModelInfo',\n transform: (val) => transform(val, HEIGHT_MODEL_INFO())\n },\n nodePages: {\n path: 'nodePages',\n transform: (val) => transform(val, NODE_PAGES())\n },\n materialDefinitions: {\n path: 'materialDefinitions',\n default: []\n },\n textureSetDefinitions: {\n path: 'textureSetDefinitions',\n default: []\n },\n geometryDefinitions: {\n path: 'geometryDefinitions',\n default: []\n },\n attributeStorageInfo: {\n path: 'attributeStorageInfo',\n default: []\n },\n fields: {\n path: 'fields',\n default: []\n },\n popupInfo: {\n path: 'popupInfo',\n default: null\n }\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const METADATA = () => ({
|
|
2
|
+
folderPattern: {
|
|
3
|
+
path: 'folderPattern',
|
|
4
|
+
default: 'BASIC'
|
|
5
|
+
},
|
|
6
|
+
archiveCompressionType: {
|
|
7
|
+
path: 'archiveCompressionType',
|
|
8
|
+
default: 'STORE'
|
|
9
|
+
},
|
|
10
|
+
resourceCompressionType: {
|
|
11
|
+
path: 'resourceCompressionType',
|
|
12
|
+
default: 'GZIP'
|
|
13
|
+
},
|
|
14
|
+
I3SVersion: {
|
|
15
|
+
path: 'I3SVersion',
|
|
16
|
+
default: '1.8'
|
|
17
|
+
},
|
|
18
|
+
nodeCount: {
|
|
19
|
+
path: 'nodeCount'
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","names":["METADATA","folderPattern","path","default","archiveCompressionType","resourceCompressionType","I3SVersion","nodeCount"],"sources":["../../../../src/i3s-converter/json-templates/metadata.ts"],"sourcesContent":["export const METADATA = () => ({\n folderPattern: {\n path: 'folderPattern',\n default: 'BASIC'\n },\n archiveCompressionType: {\n path: 'archiveCompressionType',\n default: 'STORE'\n },\n resourceCompressionType: {\n path: 'resourceCompressionType',\n default: 'GZIP'\n },\n I3SVersion: {\n path: 'I3SVersion',\n default: '1.8'\n },\n nodeCount: {\n path: 'nodeCount'\n }\n});\n"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,GAAGA,CAAA,MAAO;EAC7BC,aAAa,EAAE;IACbC,IAAI,EAAE,eAAe;IACrBC,OAAO,EAAE;EACX,CAAC;EACDC,sBAAsB,EAAE;IACtBF,IAAI,EAAE,wBAAwB;IAC9BC,OAAO,EAAE;EACX,CAAC;EACDE,uBAAuB,EAAE;IACvBH,IAAI,EAAE,yBAAyB;IAC/BC,OAAO,EAAE;EACX,CAAC;EACDG,UAAU,EAAE;IACVJ,IAAI,EAAE,YAAY;IAClBC,OAAO,EAAE;EACX,CAAC;EACDI,SAAS,EAAE;IACTL,IAAI,EAAE;EACR;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import transform from 'json-map-transform';
|
|
2
|
+
const COORDINATES = () => ({
|
|
3
|
+
mbs: {
|
|
4
|
+
path: 'mbs'
|
|
5
|
+
},
|
|
6
|
+
obb: {
|
|
7
|
+
path: 'obb'
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
const HREF = () => ({
|
|
11
|
+
href: {
|
|
12
|
+
path: 'href'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const PARENT_NODE = () => ({
|
|
16
|
+
id: {
|
|
17
|
+
path: 'id'
|
|
18
|
+
},
|
|
19
|
+
...HREF(),
|
|
20
|
+
...COORDINATES()
|
|
21
|
+
});
|
|
22
|
+
export const NODE = () => ({
|
|
23
|
+
version: {
|
|
24
|
+
path: 'version'
|
|
25
|
+
},
|
|
26
|
+
id: {
|
|
27
|
+
path: 'id'
|
|
28
|
+
},
|
|
29
|
+
path: {
|
|
30
|
+
path: 'path'
|
|
31
|
+
},
|
|
32
|
+
level: {
|
|
33
|
+
path: 'level'
|
|
34
|
+
},
|
|
35
|
+
...COORDINATES(),
|
|
36
|
+
lodSelection: {
|
|
37
|
+
path: 'lodSelection',
|
|
38
|
+
default: [{
|
|
39
|
+
metricType: 'maxScreenThresholdSQ',
|
|
40
|
+
maxError: 196349.54374999998
|
|
41
|
+
}, {
|
|
42
|
+
metricType: 'maxScreenThreshold',
|
|
43
|
+
maxError: 999.99999999999994
|
|
44
|
+
}]
|
|
45
|
+
},
|
|
46
|
+
children: {
|
|
47
|
+
path: 'children',
|
|
48
|
+
default: null
|
|
49
|
+
},
|
|
50
|
+
neighbors: {
|
|
51
|
+
path: 'neighbors',
|
|
52
|
+
default: null
|
|
53
|
+
},
|
|
54
|
+
parentNode: {
|
|
55
|
+
path: 'parentNode',
|
|
56
|
+
transform: val => transform(val, PARENT_NODE()),
|
|
57
|
+
default: null
|
|
58
|
+
},
|
|
59
|
+
sharedResource: {
|
|
60
|
+
path: 'sharedResource',
|
|
61
|
+
default: null
|
|
62
|
+
},
|
|
63
|
+
featureData: {
|
|
64
|
+
path: 'featureData',
|
|
65
|
+
default: null
|
|
66
|
+
},
|
|
67
|
+
geometryData: {
|
|
68
|
+
path: 'geometryData',
|
|
69
|
+
default: null
|
|
70
|
+
},
|
|
71
|
+
textureData: {
|
|
72
|
+
path: 'textureData',
|
|
73
|
+
default: null
|
|
74
|
+
},
|
|
75
|
+
attributeData: {
|
|
76
|
+
path: 'attributeData',
|
|
77
|
+
default: null
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","names":["transform","COORDINATES","mbs","path","obb","HREF","href","PARENT_NODE","id","NODE","version","level","lodSelection","default","metricType","maxError","children","neighbors","parentNode","val","sharedResource","featureData","geometryData","textureData","attributeData"],"sources":["../../../../src/i3s-converter/json-templates/node.ts"],"sourcesContent":["import transform from 'json-map-transform';\n\nconst COORDINATES = () => ({\n mbs: {\n path: 'mbs'\n },\n obb: {\n path: 'obb'\n }\n});\n\nconst HREF = () => ({\n href: {\n path: 'href'\n }\n});\n\nconst PARENT_NODE = () => ({\n id: {\n path: 'id'\n },\n ...HREF(),\n ...COORDINATES()\n});\n\nexport const NODE = () => ({\n version: {\n path: 'version'\n },\n id: {\n path: 'id'\n },\n path: {\n path: 'path'\n },\n level: {\n path: 'level'\n },\n ...COORDINATES(),\n lodSelection: {\n path: 'lodSelection',\n default: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 196349.54374999998\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 999.99999999999994\n }\n ]\n },\n children: {\n path: 'children',\n default: null\n },\n neighbors: {\n path: 'neighbors',\n default: null\n },\n parentNode: {\n path: 'parentNode',\n transform: (val) => transform(val, PARENT_NODE()),\n default: null\n },\n sharedResource: {\n path: 'sharedResource',\n default: null\n },\n featureData: {\n path: 'featureData',\n default: null\n },\n geometryData: {\n path: 'geometryData',\n default: null\n },\n textureData: {\n path: 'textureData',\n default: null\n },\n attributeData: {\n path: 'attributeData',\n default: null\n }\n});\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,oBAAoB;AAE1C,MAAMC,WAAW,GAAGA,CAAA,MAAO;EACzBC,GAAG,EAAE;IACHC,IAAI,EAAE;EACR,CAAC;EACDC,GAAG,EAAE;IACHD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAEF,MAAME,IAAI,GAAGA,CAAA,MAAO;EAClBC,IAAI,EAAE;IACJH,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAEF,MAAMI,WAAW,GAAGA,CAAA,MAAO;EACzBC,EAAE,EAAE;IACFL,IAAI,EAAE;EACR,CAAC;EACD,GAAGE,IAAI,CAAC,CAAC;EACT,GAAGJ,WAAW,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMQ,IAAI,GAAGA,CAAA,MAAO;EACzBC,OAAO,EAAE;IACPP,IAAI,EAAE;EACR,CAAC;EACDK,EAAE,EAAE;IACFL,IAAI,EAAE;EACR,CAAC;EACDA,IAAI,EAAE;IACJA,IAAI,EAAE;EACR,CAAC;EACDQ,KAAK,EAAE;IACLR,IAAI,EAAE;EACR,CAAC;EACD,GAAGF,WAAW,CAAC,CAAC;EAChBW,YAAY,EAAE;IACZT,IAAI,EAAE,cAAc;IACpBU,OAAO,EAAE,CACP;MACEC,UAAU,EAAE,sBAAsB;MAClCC,QAAQ,EAAE;IACZ,CAAC,EACD;MACED,UAAU,EAAE,oBAAoB;MAChCC,QAAQ,EAAE;IACZ,CAAC;EAEL,CAAC;EACDC,QAAQ,EAAE;IACRb,IAAI,EAAE,UAAU;IAChBU,OAAO,EAAE;EACX,CAAC;EACDI,SAAS,EAAE;IACTd,IAAI,EAAE,WAAW;IACjBU,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVf,IAAI,EAAE,YAAY;IAClBH,SAAS,EAAGmB,GAAG,IAAKnB,SAAS,CAACmB,GAAG,EAAEZ,WAAW,CAAC,CAAC,CAAC;IACjDM,OAAO,EAAE;EACX,CAAC;EACDO,cAAc,EAAE;IACdjB,IAAI,EAAE,gBAAgB;IACtBU,OAAO,EAAE;EACX,CAAC;EACDQ,WAAW,EAAE;IACXlB,IAAI,EAAE,aAAa;IACnBU,OAAO,EAAE;EACX,CAAC;EACDS,YAAY,EAAE;IACZnB,IAAI,EAAE,cAAc;IACpBU,OAAO,EAAE;EACX,CAAC;EACDU,WAAW,EAAE;IACXpB,IAAI,EAAE,aAAa;IACnBU,OAAO,EAAE;EACX,CAAC;EACDW,aAAa,EAAE;IACbrB,IAAI,EAAE,eAAe;IACrBU,OAAO,EAAE;EACX;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const SCENE_SERVER = () => ({
|
|
2
|
+
serviceItemId: {
|
|
3
|
+
path: 'serviceItemId'
|
|
4
|
+
},
|
|
5
|
+
serviceName: {
|
|
6
|
+
path: 'layerName'
|
|
7
|
+
},
|
|
8
|
+
name: {
|
|
9
|
+
path: 'layerName'
|
|
10
|
+
},
|
|
11
|
+
currentVersion: {
|
|
12
|
+
path: 'currentVersion',
|
|
13
|
+
default: 10.7
|
|
14
|
+
},
|
|
15
|
+
serviceVersion: {
|
|
16
|
+
path: 'serviceVersion',
|
|
17
|
+
default: '1.8'
|
|
18
|
+
},
|
|
19
|
+
supportedBindings: {
|
|
20
|
+
path: 'supportedBindings',
|
|
21
|
+
default: ['REST']
|
|
22
|
+
},
|
|
23
|
+
layers: {
|
|
24
|
+
path: 'layers0',
|
|
25
|
+
transform: layers0 => [layers0]
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=scene-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-server.js","names":["SCENE_SERVER","serviceItemId","path","serviceName","name","currentVersion","default","serviceVersion","supportedBindings","layers","transform","layers0"],"sources":["../../../../src/i3s-converter/json-templates/scene-server.ts"],"sourcesContent":["export const SCENE_SERVER = () => ({\n serviceItemId: {\n path: 'serviceItemId'\n },\n serviceName: {\n path: 'layerName'\n },\n name: {\n path: 'layerName'\n },\n currentVersion: {\n path: 'currentVersion',\n default: 10.7\n },\n serviceVersion: {\n path: 'serviceVersion',\n default: '1.8'\n },\n supportedBindings: {\n path: 'supportedBindings',\n default: ['REST']\n },\n layers: {\n path: 'layers0',\n transform: (layers0) => [layers0]\n }\n});\n"],"mappings":"AAAA,OAAO,MAAMA,YAAY,GAAGA,CAAA,MAAO;EACjCC,aAAa,EAAE;IACbC,IAAI,EAAE;EACR,CAAC;EACDC,WAAW,EAAE;IACXD,IAAI,EAAE;EACR,CAAC;EACDE,IAAI,EAAE;IACJF,IAAI,EAAE;EACR,CAAC;EACDG,cAAc,EAAE;IACdH,IAAI,EAAE,gBAAgB;IACtBI,OAAO,EAAE;EACX,CAAC;EACDC,cAAc,EAAE;IACdL,IAAI,EAAE,gBAAgB;IACtBI,OAAO,EAAE;EACX,CAAC;EACDE,iBAAiB,EAAE;IACjBN,IAAI,EAAE,mBAAmB;IACzBI,OAAO,EAAE,CAAC,MAAM;EAClB,CAAC;EACDG,MAAM,EAAE;IACNP,IAAI,EAAE,SAAS;IACfQ,SAAS,EAAGC,OAAO,IAAK,CAACA,OAAO;EAClC;AACF,CAAC,CAAC"}
|