@loaders.gl/i3s 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/dist/arcgis-webscene-loader.d.ts +7 -0
- package/dist/arcgis-webscene-loader.d.ts.map +1 -0
- package/dist/arcgis-webscene-loader.js +28 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +15501 -0
- package/dist/es5/arcgis-webscene-loader.js +40 -0
- package/dist/es5/arcgis-webscene-loader.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/i3s-attribute-loader.js +195 -0
- package/dist/es5/i3s-attribute-loader.js.map +1 -0
- package/dist/es5/i3s-building-scene-layer-loader.js +46 -0
- package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -0
- package/dist/es5/i3s-content-loader.js +56 -0
- package/dist/es5/i3s-content-loader.js.map +1 -0
- package/dist/es5/i3s-loader.js +193 -0
- package/dist/es5/i3s-loader.js.map +1 -0
- package/dist/es5/i3s-node-page-loader.js +39 -0
- package/dist/es5/i3s-node-page-loader.js.map +1 -0
- package/dist/es5/i3s-slpk-loader.js +20 -0
- package/dist/es5/i3s-slpk-loader.js.map +1 -0
- package/dist/es5/index.js +82 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +312 -0
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
- package/dist/es5/lib/parsers/constants.js +72 -0
- package/dist/es5/lib/parsers/constants.js.map +1 -0
- package/dist/es5/lib/parsers/parse-arcgis-webscene.js +158 -0
- package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -0
- package/dist/es5/lib/parsers/parse-i3s-attribute.js +76 -0
- package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -0
- package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +65 -0
- package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js +510 -0
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -0
- package/dist/es5/lib/parsers/parse-i3s.js +116 -0
- package/dist/es5/lib/parsers/parse-i3s.js.map +1 -0
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +107 -0
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +258 -0
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js +46 -0
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +84 -0
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js +72 -0
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -0
- package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +17 -0
- package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
- package/dist/es5/lib/utils/customize-/321/201olors.js +184 -0
- package/dist/es5/lib/utils/customize-/321/201olors.js.map +1 -0
- package/dist/es5/lib/utils/url-utils.js +33 -0
- package/dist/es5/lib/utils/url-utils.js.map +1 -0
- package/dist/es5/types.js +26 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/workers/i3s-content-worker-node.js +7 -0
- package/dist/es5/workers/i3s-content-worker-node.js.map +1 -0
- package/dist/es5/workers/i3s-content-worker.js +6 -0
- package/dist/es5/workers/i3s-content-worker.js.map +1 -0
- package/dist/esm/arcgis-webscene-loader.js +16 -0
- package/dist/esm/arcgis-webscene-loader.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/i3s-attribute-loader.js +119 -0
- package/dist/esm/i3s-attribute-loader.js.map +1 -0
- package/dist/esm/i3s-building-scene-layer-loader.js +19 -0
- package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -0
- package/dist/esm/i3s-content-loader.js +30 -0
- package/dist/esm/i3s-content-loader.js.map +1 -0
- package/dist/esm/i3s-loader.js +87 -0
- package/dist/esm/i3s-loader.js.map +1 -0
- package/dist/esm/i3s-node-page-loader.js +15 -0
- package/dist/esm/i3s-node-page-loader.js.map +1 -0
- package/dist/esm/i3s-slpk-loader.js +13 -0
- package/dist/esm/i3s-slpk-loader.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +198 -0
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
- package/dist/esm/lib/parsers/constants.js +57 -0
- package/dist/esm/lib/parsers/constants.js.map +1 -0
- package/dist/esm/lib/parsers/parse-arcgis-webscene.js +70 -0
- package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -0
- package/dist/esm/lib/parsers/parse-i3s-attribute.js +60 -0
- package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -0
- package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +39 -0
- package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js +435 -0
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -0
- package/dist/esm/lib/parsers/parse-i3s.js +83 -0
- package/dist/esm/lib/parsers/parse-i3s.js.map +1 -0
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +41 -0
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +107 -0
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js +23 -0
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +37 -0
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js +25 -0
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -0
- package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js +9 -0
- package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
- package/dist/esm/lib/utils/customize-/321/201olors.js +98 -0
- package/dist/esm/lib/utils/customize-/321/201olors.js.map +1 -0
- package/dist/esm/lib/utils/url-utils.js +28 -0
- package/dist/esm/lib/utils/url-utils.js.map +1 -0
- package/dist/esm/types.js +18 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/workers/i3s-content-worker-node.js +5 -0
- package/dist/esm/workers/i3s-content-worker-node.js.map +1 -0
- package/dist/esm/workers/i3s-content-worker.js +4 -0
- package/dist/esm/workers/i3s-content-worker.js.map +1 -0
- package/dist/i3s-attribute-loader.d.ts +21 -0
- package/dist/i3s-attribute-loader.d.ts.map +1 -0
- package/dist/i3s-attribute-loader.js +155 -132
- package/dist/i3s-building-scene-layer-loader.d.ts +6 -0
- package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -0
- package/dist/i3s-building-scene-layer-loader.js +23 -18
- package/dist/i3s-content-loader.d.ts +6 -0
- package/dist/i3s-content-loader.d.ts.map +1 -0
- package/dist/i3s-content-loader.js +29 -22
- package/dist/i3s-content-worker-node.js +197 -0
- package/dist/i3s-content-worker-node.js.map +7 -0
- package/dist/i3s-content-worker.js +2308 -1376
- package/dist/i3s-loader.d.ts +11 -0
- package/dist/i3s-loader.d.ts.map +1 -0
- package/dist/i3s-loader.js +88 -81
- package/dist/i3s-node-page-loader.d.ts +7 -0
- package/dist/i3s-node-page-loader.d.ts.map +1 -0
- package/dist/i3s-node-page-loader.js +20 -20
- package/dist/i3s-slpk-loader.d.ts +13 -0
- package/dist/i3s-slpk-loader.d.ts.map +1 -0
- package/dist/i3s-slpk-loader.js +20 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -5
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +74 -0
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -0
- package/dist/lib/helpers/i3s-nodepages-tiles.js +232 -219
- package/dist/lib/parsers/constants.d.ts +40 -0
- package/dist/lib/parsers/constants.d.ts.map +1 -0
- package/dist/lib/parsers/constants.js +87 -42
- package/dist/lib/parsers/parse-arcgis-webscene.d.ts +7 -0
- package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
- package/dist/lib/parsers/parse-arcgis-webscene.js +88 -0
- package/dist/lib/parsers/parse-i3s-attribute.d.ts +12 -0
- package/dist/lib/parsers/parse-i3s-attribute.d.ts.map +1 -0
- package/dist/lib/parsers/parse-i3s-attribute.js +87 -62
- package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts +9 -0
- package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -0
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js +41 -38
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts +4 -0
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -0
- package/dist/lib/parsers/parse-i3s-tile-content.js +460 -415
- package/dist/lib/parsers/parse-i3s.d.ts +6 -0
- package/dist/lib/parsers/parse-i3s.d.ts.map +1 -0
- package/dist/lib/parsers/parse-i3s.js +92 -73
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +4 -0
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +54 -0
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +38 -0
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +142 -0
- package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts +37 -0
- package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/buffer-file-provider.js +47 -0
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +27 -0
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/cd-file-header.js +48 -0
- package/dist/lib/parsers/parse-zip/file-provider.d.ts +31 -0
- package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts +25 -0
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/local-file-header.js +34 -0
- package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts +2 -0
- package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts.map +1 -0
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js +19 -8
- package/dist/lib/utils/customize-/321/201olors.d.ts +14 -0
- package/dist/lib/utils/customize-/321/201olors.d.ts.map +1 -0
- package/dist/lib/utils/customize-/321/201olors.js +104 -0
- package/dist/lib/utils/url-utils.d.ts +22 -0
- package/dist/lib/utils/url-utils.d.ts.map +1 -0
- package/dist/lib/utils/url-utils.js +41 -29
- package/dist/types.d.ts +1065 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -2
- package/dist/workers/i3s-content-worker-node.d.ts +2 -0
- package/dist/workers/i3s-content-worker-node.d.ts.map +1 -0
- package/dist/workers/i3s-content-worker-node.js +7 -0
- package/dist/workers/i3s-content-worker.d.ts +2 -0
- package/dist/workers/i3s-content-worker.d.ts.map +1 -0
- package/dist/workers/i3s-content-worker.js +5 -4
- package/package.json +18 -16
- package/src/arcgis-webscene-loader.ts +31 -0
- package/src/i3s-attribute-loader.ts +9 -9
- package/src/i3s-content-loader.ts +17 -5
- package/src/i3s-loader.ts +24 -13
- package/src/i3s-node-page-loader.ts +6 -10
- package/src/i3s-slpk-loader.ts +27 -0
- package/src/index.ts +28 -7
- package/src/lib/helpers/i3s-nodepages-tiles.ts +84 -57
- package/src/lib/parsers/constants.ts +71 -37
- package/src/lib/parsers/parse-arcgis-webscene.ts +102 -0
- package/src/lib/parsers/parse-i3s-attribute.ts +21 -14
- package/src/lib/parsers/parse-i3s-building-scene-layer.ts +2 -1
- package/src/lib/parsers/parse-i3s-tile-content.ts +278 -194
- package/src/lib/parsers/parse-i3s.ts +55 -39
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +72 -0
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +173 -0
- package/src/lib/parsers/parse-zip/buffer-file-provider.ts +55 -0
- package/src/lib/parsers/parse-zip/cd-file-header.ts +86 -0
- package/src/lib/parsers/parse-zip/file-provider.ts +34 -0
- package/src/lib/parsers/parse-zip/local-file-header.ts +65 -0
- package/src/lib/utils/customize-/321/201olors.ts +144 -0
- package/src/lib/utils/url-utils.ts +7 -7
- package/src/types.ts +875 -86
- package/src/workers/i3s-content-worker-node.ts +6 -0
- package/dist/bundle.js.map +0 -1
- package/dist/i3s-attribute-loader.js.map +0 -1
- package/dist/i3s-building-scene-layer-loader.js.map +0 -1
- package/dist/i3s-content-loader.js.map +0 -1
- package/dist/i3s-loader.js.map +0 -1
- package/dist/i3s-node-page-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
- package/dist/lib/parsers/constants.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
- package/dist/lib/parsers/parse-i3s.js.map +0 -1
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
- package/dist/lib/utils/url-utils.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/workers/i3s-content-worker.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FileProvider } from './file-provider';
|
|
2
|
+
/**
|
|
3
|
+
* zip local file header info
|
|
4
|
+
* according to https://en.wikipedia.org/wiki/ZIP_(file_format)
|
|
5
|
+
*/
|
|
6
|
+
export type ZipLocalFileHeader = {
|
|
7
|
+
/** File name length */
|
|
8
|
+
fileNameLength: number;
|
|
9
|
+
/** File name */
|
|
10
|
+
fileName: string;
|
|
11
|
+
/** Extra field length */
|
|
12
|
+
extraFieldLength: number;
|
|
13
|
+
/** Offset of the file data */
|
|
14
|
+
fileDataOffset: number;
|
|
15
|
+
/** Compressed size */
|
|
16
|
+
compressedSize: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Parses local file header of zip file
|
|
20
|
+
* @param headerOffset - offset in the archive where header starts
|
|
21
|
+
* @param buffer - buffer containing whole array
|
|
22
|
+
* @returns Info from the header
|
|
23
|
+
*/
|
|
24
|
+
export declare const parseZipLocalFileHeader: (headerOffset: number, buffer: FileProvider) => Promise<ZipLocalFileHeader | undefined>;
|
|
25
|
+
//# sourceMappingURL=local-file-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-file-header.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-zip/local-file-header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAWF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBACpB,MAAM,UACZ,YAAY,KACnB,QAAQ,kBAAkB,GAAG,SAAS,CA2BxC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseZipLocalFileHeader = void 0;
|
|
4
|
+
const offsets = {
|
|
5
|
+
COMPRESSED_SIZE_OFFSET: 18,
|
|
6
|
+
FILE_NAME_LENGTH_OFFSET: 26,
|
|
7
|
+
EXTRA_FIELD_LENGTH_OFFSET: 28,
|
|
8
|
+
FILE_NAME_OFFSET: 30
|
|
9
|
+
};
|
|
10
|
+
const signature = Buffer.from([0x50, 0x4b, 0x03, 0x04]);
|
|
11
|
+
/**
|
|
12
|
+
* Parses local file header of zip file
|
|
13
|
+
* @param headerOffset - offset in the archive where header starts
|
|
14
|
+
* @param buffer - buffer containing whole array
|
|
15
|
+
* @returns Info from the header
|
|
16
|
+
*/
|
|
17
|
+
const parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
18
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4)).compare(signature) !== 0) {
|
|
19
|
+
return Promise.resolve(undefined);
|
|
20
|
+
}
|
|
21
|
+
const fileNameLength = await buffer.getUint16(headerOffset + offsets.FILE_NAME_LENGTH_OFFSET);
|
|
22
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.FILE_NAME_OFFSET, headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength));
|
|
23
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.EXTRA_FIELD_LENGTH_OFFSET);
|
|
24
|
+
const fileDataOffset = headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength + extraFieldLength;
|
|
25
|
+
const compressedSize = await buffer.getUint32(headerOffset + offsets.COMPRESSED_SIZE_OFFSET);
|
|
26
|
+
return {
|
|
27
|
+
fileNameLength,
|
|
28
|
+
fileName,
|
|
29
|
+
extraFieldLength,
|
|
30
|
+
fileDataOffset,
|
|
31
|
+
compressedSize
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.parseZipLocalFileHeader = parseZipLocalFileHeader;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-i3s-obb-to-mbs.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/convert-i3s-obb-to-mbs.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,GAAG,KAAA,SAgBrC"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertI3SObbToMbs = void 0;
|
|
4
|
+
const culling_1 = require("@math.gl/culling");
|
|
5
|
+
const geospatial_1 = require("@math.gl/geospatial");
|
|
6
|
+
function convertI3SObbToMbs(obb) {
|
|
7
|
+
const halfSize = obb.halfSize;
|
|
8
|
+
const centerCartesian = geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(obb.center);
|
|
9
|
+
const sphere = new culling_1.BoundingSphere().fromCornerPoints([
|
|
10
|
+
centerCartesian[0] - halfSize[0],
|
|
11
|
+
centerCartesian[1] - halfSize[1],
|
|
12
|
+
centerCartesian[2] - halfSize[2]
|
|
13
|
+
], [
|
|
14
|
+
centerCartesian[0] + halfSize[0],
|
|
15
|
+
centerCartesian[1] + halfSize[1],
|
|
16
|
+
centerCartesian[2] + halfSize[2]
|
|
17
|
+
]);
|
|
18
|
+
return [...obb.center, sphere.radius];
|
|
8
19
|
}
|
|
9
|
-
|
|
20
|
+
exports.convertI3SObbToMbs = convertI3SObbToMbs;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MeshAttribute } from '@loaders.gl/schema';
|
|
2
|
+
import type { I3STileOptions, I3STilesetOptions } from '../../types';
|
|
3
|
+
import { I3SLoaderOptions } from '../../i3s-loader';
|
|
4
|
+
/**
|
|
5
|
+
* Modify vertex colors array to visualize 3D objects in a attribute driven way
|
|
6
|
+
* @param colors - vertex colors attribute
|
|
7
|
+
* @param featureIds - feature Ids attribute
|
|
8
|
+
* @param tileOptions - tile - related options
|
|
9
|
+
* @param tilesetOptions - tileset-related options
|
|
10
|
+
* @param options - loader options
|
|
11
|
+
* @returns midified colors attribute
|
|
12
|
+
*/
|
|
13
|
+
export declare function customizeColors(colors: MeshAttribute, featureIds: MeshAttribute, tileOptions: I3STileOptions, tilesetOptions: I3STilesetOptions, options?: I3SLoaderOptions): Promise<MeshAttribute>;
|
|
14
|
+
//# sourceMappingURL=customize-%D1%81olors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customize-сolors.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/customize-сolors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAQ,cAAc,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAI1E,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGlD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,aAAa,EACzB,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,iBAAiB,EACjC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC,CAwExB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.customizeColors = void 0;
|
|
4
|
+
const core_1 = require("@loaders.gl/core");
|
|
5
|
+
const i3s_attribute_loader_1 = require("../../i3s-attribute-loader");
|
|
6
|
+
const url_utils_1 = require("./url-utils");
|
|
7
|
+
/**
|
|
8
|
+
* Modify vertex colors array to visualize 3D objects in a attribute driven way
|
|
9
|
+
* @param colors - vertex colors attribute
|
|
10
|
+
* @param featureIds - feature Ids attribute
|
|
11
|
+
* @param tileOptions - tile - related options
|
|
12
|
+
* @param tilesetOptions - tileset-related options
|
|
13
|
+
* @param options - loader options
|
|
14
|
+
* @returns midified colors attribute
|
|
15
|
+
*/
|
|
16
|
+
async function customizeColors(colors, featureIds, tileOptions, tilesetOptions, options) {
|
|
17
|
+
if (!options?.i3s?.colorsByAttribute) {
|
|
18
|
+
return colors;
|
|
19
|
+
}
|
|
20
|
+
const colorizeAttributeField = tilesetOptions.fields.find(({ name }) => name === options?.i3s?.colorsByAttribute?.attributeName);
|
|
21
|
+
if (!colorizeAttributeField ||
|
|
22
|
+
!['esriFieldTypeDouble', 'esriFieldTypeInteger', 'esriFieldTypeSmallInteger'].includes(colorizeAttributeField.type)) {
|
|
23
|
+
return colors;
|
|
24
|
+
}
|
|
25
|
+
const colorizeAttributeData = await loadFeatureAttributeData(colorizeAttributeField.name, tileOptions, tilesetOptions, options);
|
|
26
|
+
if (!colorizeAttributeData) {
|
|
27
|
+
return colors;
|
|
28
|
+
}
|
|
29
|
+
const objectIdField = tilesetOptions.fields.find(({ type }) => type === 'esriFieldTypeOID');
|
|
30
|
+
if (!objectIdField) {
|
|
31
|
+
return colors;
|
|
32
|
+
}
|
|
33
|
+
const objectIdAttributeData = await loadFeatureAttributeData(objectIdField.name, tileOptions, tilesetOptions, options);
|
|
34
|
+
if (!objectIdAttributeData) {
|
|
35
|
+
return colors;
|
|
36
|
+
}
|
|
37
|
+
const attributeValuesMap = {};
|
|
38
|
+
// @ts-expect-error
|
|
39
|
+
for (let i = 0; i < objectIdAttributeData[objectIdField.name].length; i++) {
|
|
40
|
+
// @ts-expect-error
|
|
41
|
+
attributeValuesMap[objectIdAttributeData[objectIdField.name][i]] = calculateColorForAttribute(
|
|
42
|
+
// @ts-expect-error
|
|
43
|
+
colorizeAttributeData[colorizeAttributeField.name][i], options);
|
|
44
|
+
}
|
|
45
|
+
for (let i = 0; i < featureIds.value.length; i++) {
|
|
46
|
+
const color = attributeValuesMap[featureIds.value[i]];
|
|
47
|
+
if (!color) {
|
|
48
|
+
continue; // eslint-disable-line no-continue
|
|
49
|
+
}
|
|
50
|
+
/* eslint max-statements: ["error", 30] */
|
|
51
|
+
/* eslint complexity: ["error", 12] */
|
|
52
|
+
if (options.i3s.colorsByAttribute.mode === 'multiply') {
|
|
53
|
+
// multiplying original mesh and calculated for attribute rgba colors in range 0-255
|
|
54
|
+
color.forEach((colorItem, index) => {
|
|
55
|
+
colors.value[i * 4 + index] = (colors.value[i * 4 + index] * colorItem) / 255;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
colors.value.set(color, i * 4);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return colors;
|
|
63
|
+
}
|
|
64
|
+
exports.customizeColors = customizeColors;
|
|
65
|
+
/**
|
|
66
|
+
* Calculate rgba color from the attribute value
|
|
67
|
+
* @param attributeValue - value of the attribute
|
|
68
|
+
* @param options - loader options
|
|
69
|
+
* @returns - color array for a specific attribute value
|
|
70
|
+
*/
|
|
71
|
+
function calculateColorForAttribute(attributeValue, options) {
|
|
72
|
+
if (!options?.i3s?.colorsByAttribute) {
|
|
73
|
+
return [255, 255, 255, 255];
|
|
74
|
+
}
|
|
75
|
+
const { minValue, maxValue, minColor, maxColor } = options.i3s.colorsByAttribute;
|
|
76
|
+
const rate = (attributeValue - minValue) / (maxValue - minValue);
|
|
77
|
+
const color = [255, 255, 255, 255];
|
|
78
|
+
for (let i = 0; i < minColor.length; i++) {
|
|
79
|
+
color[i] = Math.round((maxColor[i] - minColor[i]) * rate + minColor[i]);
|
|
80
|
+
}
|
|
81
|
+
return color;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Load feature attribute data from the ArcGIS rest service
|
|
85
|
+
* @param attributeName - attribute name
|
|
86
|
+
* @param tileOptions - tile-related options
|
|
87
|
+
* @param tilesetOptions - tileset-related options
|
|
88
|
+
* @param options - loader options
|
|
89
|
+
* @returns - Array-like list of the attribute values
|
|
90
|
+
*/
|
|
91
|
+
async function loadFeatureAttributeData(attributeName, { attributeUrls }, { attributeStorageInfo }, options) {
|
|
92
|
+
const attributeIndex = attributeStorageInfo.findIndex(({ name }) => attributeName === name);
|
|
93
|
+
if (attributeIndex === -1) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const objectIdAttributeUrl = (0, url_utils_1.getUrlWithToken)(attributeUrls[attributeIndex], options?.i3s?.token);
|
|
97
|
+
const attributeType = (0, i3s_attribute_loader_1.getAttributeValueType)(attributeStorageInfo[attributeIndex]);
|
|
98
|
+
const objectIdAttributeData = await (0, core_1.load)(objectIdAttributeUrl, i3s_attribute_loader_1.I3SAttributeLoader, {
|
|
99
|
+
attributeName,
|
|
100
|
+
attributeType
|
|
101
|
+
});
|
|
102
|
+
// @ts-expect-error TODO action engine
|
|
103
|
+
return objectIdAttributeData;
|
|
104
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Node3DIndexDocument } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Generates url with token if it is exists.
|
|
4
|
+
* @param url
|
|
5
|
+
* @param token
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare function getUrlWithToken(url: string, token?: string | null): string;
|
|
9
|
+
/**
|
|
10
|
+
* Generates attribute urls for tile.
|
|
11
|
+
* @param tile
|
|
12
|
+
* @returns list of attribute urls
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateTileAttributeUrls(url: string, tile: Node3DIndexDocument): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Generates attribute urls for tileset based on tileset and resource
|
|
17
|
+
* @param {Object} tileset
|
|
18
|
+
* @param {number} resource
|
|
19
|
+
* @returns {Array}
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateTilesetAttributeUrls(tileset: any, resource: any): string[];
|
|
22
|
+
//# sourceMappingURL=url-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAU1F;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,KAAA,EAAE,QAAQ,KAAA,YAU7D"}
|
|
@@ -1,32 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTilesetAttributeUrls = exports.generateTileAttributeUrls = exports.getUrlWithToken = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generates url with token if it is exists.
|
|
6
|
+
* @param url
|
|
7
|
+
* @param token
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
function getUrlWithToken(url, token = null) {
|
|
11
|
+
return token ? `${url}?token=${token}` : url;
|
|
3
12
|
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
exports.getUrlWithToken = getUrlWithToken;
|
|
14
|
+
/**
|
|
15
|
+
* Generates attribute urls for tile.
|
|
16
|
+
* @param tile
|
|
17
|
+
* @returns list of attribute urls
|
|
18
|
+
*/
|
|
19
|
+
function generateTileAttributeUrls(url, tile) {
|
|
20
|
+
const { attributeData = [] } = tile;
|
|
21
|
+
const attributeUrls = [];
|
|
22
|
+
for (let index = 0; index < attributeData.length; index++) {
|
|
23
|
+
const attributeUrl = attributeData[index].href.replace('./', '');
|
|
24
|
+
attributeUrls.push(`${url}/${attributeUrl}`);
|
|
25
|
+
}
|
|
26
|
+
return attributeUrls;
|
|
17
27
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
exports.generateTileAttributeUrls = generateTileAttributeUrls;
|
|
29
|
+
/**
|
|
30
|
+
* Generates attribute urls for tileset based on tileset and resource
|
|
31
|
+
* @param {Object} tileset
|
|
32
|
+
* @param {number} resource
|
|
33
|
+
* @returns {Array}
|
|
34
|
+
*/
|
|
35
|
+
function generateTilesetAttributeUrls(tileset, resource) {
|
|
36
|
+
const attributeUrls = [];
|
|
37
|
+
const { attributeStorageInfo, url } = tileset;
|
|
38
|
+
for (let index = 0; index < attributeStorageInfo.length; index++) {
|
|
39
|
+
const fileName = attributeStorageInfo[index].key;
|
|
40
|
+
attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
|
|
41
|
+
}
|
|
42
|
+
return attributeUrls;
|
|
31
43
|
}
|
|
32
|
-
|
|
44
|
+
exports.generateTilesetAttributeUrls = generateTilesetAttributeUrls;
|