@loaders.gl/tile-converter 3.1.0-beta.7 → 3.1.0
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/bundle.js +1267 -1174
- package/dist/converter.min.js +20 -20
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +429 -189
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +306 -209
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +8 -4
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +13 -13
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +51 -32
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +61 -17
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +55 -16
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +33 -9
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +103 -93
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +5 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +547 -336
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-debug.js +27 -31
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-pages.js +209 -101
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +1645 -700
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +213 -177
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/metadata.js +24 -20
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/node.js +92 -74
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/scene-server.js +34 -28
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +162 -107
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/store.js +4 -2
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +2 -0
- package/dist/es5/i3s-converter/types.js.map +1 -0
- package/dist/es5/i3s-server/app.js +6 -6
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/index-controller.js +60 -20
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +41 -14
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/index.js +4 -4
- package/dist/es5/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
- package/dist/es5/lib/utils/compress-util.js +345 -123
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +98 -20
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +9 -9
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/statistic-utills.js +152 -41
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/pgm-loader.js +31 -4
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +7 -6
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +12 -9
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +2 -6
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +35 -3
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +2 -2
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +5 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +50 -16
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-debug.js +2 -4
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-pages.js +15 -4
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +147 -62
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/layers.js +37 -27
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js +2 -2
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/node.js +16 -12
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js +2 -2
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +19 -14
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +2 -0
- package/dist/esm/i3s-converter/types.js.map +1 -0
- package/dist/esm/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
- package/dist/esm/pgm-loader.js +3 -3
- package/dist/esm/pgm-loader.js.map +1 -1
- package/package.json +15 -13
- package/src/3d-tiles-converter/3d-tiles-converter.ts +21 -20
- package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +19 -2
- 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/deps-installer/deps-installer.js +2 -2
- package/src/i3s-converter/helpers/coordinate-converter.ts +62 -9
- package/src/i3s-converter/helpers/{create-scene-server-path.js → create-scene-server-path.ts} +2 -2
- package/src/i3s-converter/helpers/{geometry-attributes.js → geometry-attributes.ts} +4 -4
- package/src/i3s-converter/helpers/geometry-converter.d.ts +5 -1
- package/src/i3s-converter/helpers/geometry-converter.js +63 -13
- package/src/i3s-converter/helpers/{node-debug.js → node-debug.ts} +3 -2
- package/src/i3s-converter/helpers/{node-pages.js → node-pages.ts} +41 -26
- package/src/i3s-converter/i3s-converter.ts +204 -133
- package/src/i3s-converter/json-templates/{layers.js → layers.ts} +29 -27
- 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} +14 -14
- package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
- package/src/i3s-converter/types.ts +14 -0
- package/src/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
- package/src/pgm-loader.ts +2 -2
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
- package/dist/es5/i3s-converter/helpers/node-pages.d.ts +0 -144
- package/dist/es5/lib/geoid-height-model.d.ts +0 -41
- package/dist/es5/lib/geoid-height-model.js +0 -149
- package/dist/es5/lib/geoid-height-model.js.map +0 -1
- package/dist/es5/lib/pgm-parser.d.ts +0 -14
- package/dist/es5/lib/pgm-parser.js +0 -192
- package/dist/es5/lib/pgm-parser.js.map +0 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
- package/dist/esm/i3s-converter/helpers/node-pages.d.ts +0 -144
- package/dist/esm/lib/geoid-height-model.d.ts +0 -41
- package/dist/esm/lib/geoid-height-model.js +0 -140
- package/dist/esm/lib/geoid-height-model.js.map +0 -1
- package/dist/esm/lib/pgm-parser.d.ts +0 -14
- package/dist/esm/lib/pgm-parser.js +0 -183
- package/dist/esm/lib/pgm-parser.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/i3s-converter/helpers/node-pages.d.ts +0 -144
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
import {STORE} from './store';
|
|
3
3
|
|
|
4
|
-
const PLAIN_GEOMETRY_DEFINITION = {
|
|
4
|
+
const PLAIN_GEOMETRY_DEFINITION = () => ({
|
|
5
5
|
offset: 8,
|
|
6
6
|
position: {
|
|
7
7
|
type: 'Float32',
|
|
@@ -29,9 +29,9 @@ const PLAIN_GEOMETRY_DEFINITION = {
|
|
|
29
29
|
type: 'UInt32',
|
|
30
30
|
component: 2
|
|
31
31
|
}
|
|
32
|
-
};
|
|
32
|
+
});
|
|
33
33
|
|
|
34
|
-
const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
34
|
+
const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
|
|
35
35
|
offset: 8,
|
|
36
36
|
position: {
|
|
37
37
|
type: 'Float32',
|
|
@@ -55,23 +55,23 @@ const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
|
55
55
|
type: 'UInt32',
|
|
56
56
|
component: 2
|
|
57
57
|
}
|
|
58
|
-
};
|
|
58
|
+
});
|
|
59
59
|
|
|
60
|
-
const COMPRESSED_GEOMETRY_DEFINITION = {
|
|
60
|
+
const COMPRESSED_GEOMETRY_DEFINITION = () => ({
|
|
61
61
|
compressedAttributes: {
|
|
62
62
|
encoding: 'draco',
|
|
63
63
|
attributes: ['position', 'normal', 'uv0', 'color', 'feature-index']
|
|
64
64
|
}
|
|
65
|
-
};
|
|
65
|
+
});
|
|
66
66
|
|
|
67
|
-
const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
67
|
+
const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
|
|
68
68
|
compressedAttributes: {
|
|
69
69
|
encoding: 'draco',
|
|
70
70
|
attributes: ['position', 'normal', 'color', 'feature-index']
|
|
71
71
|
}
|
|
72
|
-
};
|
|
72
|
+
});
|
|
73
73
|
|
|
74
|
-
const SPATIAL_REFERENCE = {
|
|
74
|
+
const SPATIAL_REFERENCE = () => ({
|
|
75
75
|
wkid: {
|
|
76
76
|
path: 'wkid',
|
|
77
77
|
default: 4326
|
|
@@ -88,9 +88,9 @@ const SPATIAL_REFERENCE = {
|
|
|
88
88
|
path: 'latestVcsWkid',
|
|
89
89
|
default: 5773
|
|
90
90
|
}
|
|
91
|
-
};
|
|
91
|
+
});
|
|
92
92
|
|
|
93
|
-
const HEIGHT_MODEL_INFO = {
|
|
93
|
+
const HEIGHT_MODEL_INFO = () => ({
|
|
94
94
|
heightModel: {
|
|
95
95
|
path: 'heightModel',
|
|
96
96
|
default: 'gravity_related_height'
|
|
@@ -103,9 +103,9 @@ const HEIGHT_MODEL_INFO = {
|
|
|
103
103
|
path: 'heightUnit',
|
|
104
104
|
default: 'meter'
|
|
105
105
|
}
|
|
106
|
-
};
|
|
106
|
+
});
|
|
107
107
|
|
|
108
|
-
const NODE_PAGES = {
|
|
108
|
+
const NODE_PAGES = () => ({
|
|
109
109
|
nodesPerPage: {
|
|
110
110
|
path: 'nodesPerPage'
|
|
111
111
|
},
|
|
@@ -113,9 +113,9 @@ const NODE_PAGES = {
|
|
|
113
113
|
path: 'lodSelectionMetricType',
|
|
114
114
|
default: 'maxScreenThresholdSQ'
|
|
115
115
|
}
|
|
116
|
-
};
|
|
116
|
+
});
|
|
117
117
|
|
|
118
|
-
export const LAYERS = {
|
|
118
|
+
export const LAYERS = () => ({
|
|
119
119
|
version: {
|
|
120
120
|
path: 'version',
|
|
121
121
|
transform: (val) => val.toUpperCase()
|
|
@@ -137,7 +137,7 @@ export const LAYERS = {
|
|
|
137
137
|
},
|
|
138
138
|
spatialReference: {
|
|
139
139
|
path: 'spatialReference',
|
|
140
|
-
transform: (val) => transform(val, SPATIAL_REFERENCE)
|
|
140
|
+
transform: (val) => transform(val, SPATIAL_REFERENCE())
|
|
141
141
|
},
|
|
142
142
|
capabilities: {
|
|
143
143
|
path: 'capabilities',
|
|
@@ -149,11 +149,11 @@ export const LAYERS = {
|
|
|
149
149
|
},
|
|
150
150
|
heightModelInfo: {
|
|
151
151
|
path: 'heightModelInfo',
|
|
152
|
-
transform: (val) => transform(val, HEIGHT_MODEL_INFO)
|
|
152
|
+
transform: (val) => transform(val, HEIGHT_MODEL_INFO())
|
|
153
153
|
},
|
|
154
154
|
nodePages: {
|
|
155
155
|
path: 'nodePages',
|
|
156
|
-
transform: (val) => transform(val, NODE_PAGES)
|
|
156
|
+
transform: (val) => transform(val, NODE_PAGES())
|
|
157
157
|
},
|
|
158
158
|
materialDefinitions: {
|
|
159
159
|
path: 'materialDefinitions',
|
|
@@ -166,21 +166,23 @@ export const LAYERS = {
|
|
|
166
166
|
geometryDefinitions: {
|
|
167
167
|
path: 'compressGeometry',
|
|
168
168
|
transform: (val) => {
|
|
169
|
-
const result = [{}, {}];
|
|
170
|
-
result[0].geometryBuffers = [];
|
|
171
|
-
result[1].geometryBuffers = [];
|
|
169
|
+
const result = [{geometryBuffers: []}, {geometryBuffers: []}];
|
|
172
170
|
|
|
173
|
-
|
|
174
|
-
result[
|
|
171
|
+
// @ts-expect-error
|
|
172
|
+
result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION());
|
|
173
|
+
// @ts-expect-error
|
|
174
|
+
result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0());
|
|
175
175
|
if (val) {
|
|
176
|
-
|
|
177
|
-
result[
|
|
176
|
+
// @ts-expect-error
|
|
177
|
+
result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION());
|
|
178
|
+
// @ts-expect-error
|
|
179
|
+
result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0());
|
|
178
180
|
}
|
|
179
181
|
return result;
|
|
180
182
|
},
|
|
181
183
|
default: [
|
|
182
184
|
{
|
|
183
|
-
geometryBuffers: [PLAIN_GEOMETRY_DEFINITION, PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0]
|
|
185
|
+
geometryBuffers: [PLAIN_GEOMETRY_DEFINITION(), PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0()]
|
|
184
186
|
}
|
|
185
187
|
]
|
|
186
188
|
},
|
|
@@ -196,4 +198,4 @@ export const LAYERS = {
|
|
|
196
198
|
path: 'popupInfo',
|
|
197
199
|
default: null
|
|
198
200
|
}
|
|
199
|
-
};
|
|
201
|
+
});
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
|
|
3
|
-
const COORDINATES = {
|
|
3
|
+
const COORDINATES = () => ({
|
|
4
4
|
mbs: {
|
|
5
5
|
path: 'mbs'
|
|
6
6
|
},
|
|
7
7
|
obb: {
|
|
8
8
|
path: 'obb'
|
|
9
9
|
}
|
|
10
|
-
};
|
|
10
|
+
});
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const HREF = () => ({
|
|
13
13
|
href: {
|
|
14
14
|
path: 'href'
|
|
15
15
|
}
|
|
16
|
-
};
|
|
16
|
+
});
|
|
17
17
|
|
|
18
|
-
const PARENT_NODE = {
|
|
18
|
+
const PARENT_NODE = () => ({
|
|
19
19
|
id: {
|
|
20
20
|
path: 'id'
|
|
21
21
|
},
|
|
22
|
-
...
|
|
23
|
-
...COORDINATES
|
|
24
|
-
};
|
|
22
|
+
...HREF(),
|
|
23
|
+
...COORDINATES()
|
|
24
|
+
});
|
|
25
25
|
|
|
26
|
-
export const NODE = {
|
|
26
|
+
export const NODE = () => ({
|
|
27
27
|
version: {
|
|
28
28
|
path: 'version'
|
|
29
29
|
},
|
|
@@ -36,7 +36,7 @@ export const NODE = {
|
|
|
36
36
|
level: {
|
|
37
37
|
path: 'level'
|
|
38
38
|
},
|
|
39
|
-
...COORDINATES,
|
|
39
|
+
...COORDINATES(),
|
|
40
40
|
lodSelection: {
|
|
41
41
|
path: 'lodSelection',
|
|
42
42
|
default: [
|
|
@@ -60,7 +60,7 @@ export const NODE = {
|
|
|
60
60
|
},
|
|
61
61
|
parentNode: {
|
|
62
62
|
path: 'parentNode',
|
|
63
|
-
transform: (val) => transform(val, PARENT_NODE),
|
|
63
|
+
transform: (val) => transform(val, PARENT_NODE()),
|
|
64
64
|
default: null
|
|
65
65
|
},
|
|
66
66
|
sharedResource: {
|
|
@@ -83,4 +83,4 @@ export const NODE = {
|
|
|
83
83
|
path: 'attributeData',
|
|
84
84
|
default: null
|
|
85
85
|
}
|
|
86
|
-
};
|
|
86
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
|
|
3
|
-
const MATERIAL_DEFINITION_INFO_PARAMS = {
|
|
3
|
+
const MATERIAL_DEFINITION_INFO_PARAMS = () => ({
|
|
4
4
|
renderMode: {
|
|
5
5
|
path: 'renderMode',
|
|
6
6
|
default: 'solid'
|
|
@@ -37,9 +37,9 @@ const MATERIAL_DEFINITION_INFO_PARAMS = {
|
|
|
37
37
|
path: 'vertexColors',
|
|
38
38
|
default: true
|
|
39
39
|
}
|
|
40
|
-
};
|
|
40
|
+
});
|
|
41
41
|
|
|
42
|
-
const MATERIAL_DEFINITION_INFO = {
|
|
42
|
+
const MATERIAL_DEFINITION_INFO = () => ({
|
|
43
43
|
name: {
|
|
44
44
|
path: 'name',
|
|
45
45
|
default: 'standard'
|
|
@@ -51,11 +51,11 @@ const MATERIAL_DEFINITION_INFO = {
|
|
|
51
51
|
params: {
|
|
52
52
|
path: 'params',
|
|
53
53
|
transform: (val, thisObject, originalObject) =>
|
|
54
|
-
transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)
|
|
54
|
+
transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS())
|
|
55
55
|
}
|
|
56
|
-
};
|
|
56
|
+
});
|
|
57
57
|
|
|
58
|
-
const TEXTURE_DEFINITION_IMAGE = {
|
|
58
|
+
const TEXTURE_DEFINITION_IMAGE = () => ({
|
|
59
59
|
id: {
|
|
60
60
|
path: 'id'
|
|
61
61
|
},
|
|
@@ -69,9 +69,9 @@ const TEXTURE_DEFINITION_IMAGE = {
|
|
|
69
69
|
length: {
|
|
70
70
|
path: 'length'
|
|
71
71
|
}
|
|
72
|
-
};
|
|
72
|
+
});
|
|
73
73
|
|
|
74
|
-
const TEXTURE_DEFINITION_INFO = {
|
|
74
|
+
const TEXTURE_DEFINITION_INFO = () => ({
|
|
75
75
|
encoding: {
|
|
76
76
|
path: 'encoding'
|
|
77
77
|
},
|
|
@@ -94,11 +94,11 @@ const TEXTURE_DEFINITION_INFO = {
|
|
|
94
94
|
images: {
|
|
95
95
|
path: 'images',
|
|
96
96
|
transform: (val, thisObject, originalObject) =>
|
|
97
|
-
val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE))
|
|
97
|
+
val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE()))
|
|
98
98
|
}
|
|
99
|
-
};
|
|
99
|
+
});
|
|
100
100
|
|
|
101
|
-
export const
|
|
101
|
+
export const SHARED_RESOURCES = () => ({
|
|
102
102
|
materialDefinitions: {
|
|
103
103
|
path: 'materialDefinitionInfos',
|
|
104
104
|
transform: transfromMaterialDefinitions
|
|
@@ -107,14 +107,14 @@ export const SHARED_RESOURCES_TEMPLATE = {
|
|
|
107
107
|
path: 'textureDefinitionInfos',
|
|
108
108
|
transform: transfromTextureDefinitions
|
|
109
109
|
}
|
|
110
|
-
};
|
|
110
|
+
});
|
|
111
111
|
|
|
112
112
|
function transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {
|
|
113
113
|
const result = {};
|
|
114
114
|
for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {
|
|
115
115
|
result[`Mat${originalObject.nodePath}${index}`] = transform(
|
|
116
116
|
materialDefinitionInfo,
|
|
117
|
-
MATERIAL_DEFINITION_INFO
|
|
117
|
+
MATERIAL_DEFINITION_INFO()
|
|
118
118
|
);
|
|
119
119
|
}
|
|
120
120
|
return result;
|
|
@@ -128,7 +128,7 @@ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, origina
|
|
|
128
128
|
for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {
|
|
129
129
|
const imageIndex = `${originalObject.nodePath}${index}`;
|
|
130
130
|
textureDefinitionInfo.imageIndex = imageIndex;
|
|
131
|
-
result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);
|
|
131
|
+
result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO());
|
|
132
132
|
}
|
|
133
133
|
return result;
|
|
134
134
|
}
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {BoundingVolumes, I3SMaterialDefinition, SharedResources} from '@loaders.gl/i3s';
|
|
2
|
+
|
|
3
|
+
export type I3SConvertedResources = {
|
|
4
|
+
geometry: ArrayBuffer | null;
|
|
5
|
+
compressedGeometry?: ArrayBuffer | null;
|
|
6
|
+
texture: any | null;
|
|
7
|
+
sharedResources: SharedResources | null;
|
|
8
|
+
meshMaterial?: I3SMaterialDefinition | null;
|
|
9
|
+
vertexCount: number | null;
|
|
10
|
+
attributes: any | null;
|
|
11
|
+
featureCount: number | null;
|
|
12
|
+
geometryBuffer?: ArrayBuffer;
|
|
13
|
+
boundingVolumes: BoundingVolumes | null;
|
|
14
|
+
};
|
|
File without changes
|
package/src/pgm-loader.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
|
4
4
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
5
5
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {parsePGM} from '@math.gl/geoid';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Loader for PGM - Netpbm grayscale image format
|
|
@@ -15,7 +15,7 @@ export const PGMLoader: LoaderWithParser = {
|
|
|
15
15
|
module: 'tile-converter',
|
|
16
16
|
version: VERSION,
|
|
17
17
|
mimeTypes: ['image/x-portable-graymap'],
|
|
18
|
-
parse: (arrayBuffer, options) =>
|
|
18
|
+
parse: async (arrayBuffer, options) => parsePGM(new Uint8Array(arrayBuffer), options),
|
|
19
19
|
extensions: ['pgm'],
|
|
20
20
|
options: {
|
|
21
21
|
// TODO - use pgm namespace
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts content of an I3S node to *.b3dm's file content
|
|
3
|
-
*/
|
|
4
|
-
export default class B3dmConverter {
|
|
5
|
-
rtcCenter: Float32Array;
|
|
6
|
-
i3sTile: any;
|
|
7
|
-
|
|
8
|
-
constructor();
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The starter of content conversion
|
|
12
|
-
* @param i3sTile - Tile3D instance for I3S node
|
|
13
|
-
* @returns - encoded content
|
|
14
|
-
*/
|
|
15
|
-
convert(i3sTile: Object, attributes?: any): ArrayBuffer;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Build and encode gltf
|
|
19
|
-
* @param i3sTile - Tile3D instance for I3S node
|
|
20
|
-
* @returns - encoded glb content
|
|
21
|
-
*/
|
|
22
|
-
buildGltf(i3sTile): ArrayBuffer;
|
|
23
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {GeoidHeightModel} from '@loaders.gl/tile-converter/lib/geoid-height-model';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Convert quaternion-based OBB to half-axes-based OBB
|
|
5
|
-
* @param i3SObb quaternion based OBB
|
|
6
|
-
* @param geoidHeightModel the Earth Gravity Model instance
|
|
7
|
-
* @returns number[12] 3DTiles OBB https://github.com/CesiumGS/3d-tiles/tree/master/specification#box
|
|
8
|
-
*/
|
|
9
|
-
export function i3sObbTo3dTilesObb(
|
|
10
|
-
i3SObb: {
|
|
11
|
-
center: number[];
|
|
12
|
-
halfSize: number[];
|
|
13
|
-
quaternion: number[];
|
|
14
|
-
},
|
|
15
|
-
geoidHeightModel: GeoidHeightModel
|
|
16
|
-
): number[];
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represents one page node
|
|
3
|
-
* {@link https://github.com/Esri/i3s-spec/blob/master/docs/1.7/node.cmn.md}
|
|
4
|
-
*/
|
|
5
|
-
export type PageNodeType = {
|
|
6
|
-
lodThreshold: number;
|
|
7
|
-
obb: any;
|
|
8
|
-
children: any[];
|
|
9
|
-
mesh?: {
|
|
10
|
-
geometry: {
|
|
11
|
-
resource?: number;
|
|
12
|
-
definition?: number;
|
|
13
|
-
};
|
|
14
|
-
material?: {
|
|
15
|
-
resource?: number;
|
|
16
|
-
definition?: number;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* class NodePages - wrapper of nodePages array
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* import writeFile from './helpers/write-file';
|
|
26
|
-
*
|
|
27
|
-
* // create an instance of the class
|
|
28
|
-
* const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);
|
|
29
|
-
* ...
|
|
30
|
-
* // push root node
|
|
31
|
-
* const parentId = nodePages.push({
|
|
32
|
-
lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
|
|
33
|
-
obb: coordinates.obb,
|
|
34
|
-
children: []
|
|
35
|
-
});
|
|
36
|
-
* ...
|
|
37
|
-
* // push node with parent relation
|
|
38
|
-
* const nodeInPage = {
|
|
39
|
-
lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
|
|
40
|
-
obb: coordinates.obb,
|
|
41
|
-
children: [],
|
|
42
|
-
mesh: {
|
|
43
|
-
geometry: {
|
|
44
|
-
definition: 0
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
* const nodeId = this.nodePages.push(nodeInPage, parentId);
|
|
49
|
-
* ...
|
|
50
|
-
* // save all the nodePages in the end of pushing all the nodes
|
|
51
|
-
* await this.nodePages.save(layers0path);
|
|
52
|
-
*/
|
|
53
|
-
export default class NodePages {
|
|
54
|
-
readonly nodesPerPage: number;
|
|
55
|
-
readonly nodesCounter: number;
|
|
56
|
-
readonly writeFile: any;
|
|
57
|
-
readonly nodePages: {nodes: PageNodeType[]}[];
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @constructs
|
|
61
|
-
* Create a nodePages instance.
|
|
62
|
-
* @param writeFileFunc - function to save one nodePage into a file
|
|
63
|
-
* @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met
|
|
64
|
-
*/
|
|
65
|
-
constructor(writeFileFunc, nodesPerPage);
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Setup function to save node pages
|
|
69
|
-
* @param func - function which should be used to save node pages
|
|
70
|
-
*/
|
|
71
|
-
useWriteFunction(func: Function): void;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Get the node by its end-to-end index
|
|
75
|
-
* @param id - end-to-end index of the node
|
|
76
|
-
* @return the node object
|
|
77
|
-
*/
|
|
78
|
-
getNodeById(id: number): object;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Add a child id into the parent node.children array
|
|
82
|
-
* @param parentId - end-to-end parent node index
|
|
83
|
-
* @param childId - end-to-end child node index
|
|
84
|
-
*/
|
|
85
|
-
addChildRelation(parentId: number, childId: number): void;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Update resource index in node.mesh object
|
|
89
|
-
* @param {object} node - node object
|
|
90
|
-
*/
|
|
91
|
-
updateResourceInMesh(node: object): void;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Update material in node.mesh object by node id
|
|
95
|
-
* @param id - end-to-end index of the node
|
|
96
|
-
* @param materialId - id from scene layer materialDefinitions
|
|
97
|
-
*/
|
|
98
|
-
updateMaterialByNodeId(id: number, materialId: number);
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Update vertexCount in node.mesh.geometry object by node id
|
|
102
|
-
* @param id - end-to-end index of the node
|
|
103
|
-
* @param vertexCount - vertex count for particular node
|
|
104
|
-
*/
|
|
105
|
-
updateVertexCountByNodeId(id: number, vertexCount: number);
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Update resource in node.mesh.attribute object by node id
|
|
109
|
-
* @param id - end-to-end index of the node
|
|
110
|
-
*/
|
|
111
|
-
updateNodeAttributeByNodeId(id: number);
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Update featureCount in node.mesh.geometry object by node id
|
|
115
|
-
* @param id - end-to-end index of the node
|
|
116
|
-
* @param featureCount - features count of the node
|
|
117
|
-
*/
|
|
118
|
-
updateFeatureCountByNodeId(id: number, featureCount: number);
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Update texelCountHint in node.mesh.material object by node id
|
|
122
|
-
* @param id - end-to-end index of the node
|
|
123
|
-
* @param texelCountHint - texelCountHint of particular node
|
|
124
|
-
*/
|
|
125
|
-
updateTexelCountHintByNodeId(id: number, texelCountHint: number);
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Put new node in nodePages array
|
|
129
|
-
* @param node - node object
|
|
130
|
-
* @param parentId - index of parent node
|
|
131
|
-
* @return
|
|
132
|
-
*/
|
|
133
|
-
push(node: PageNodeType, parentId?: number): number;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Save all the node pages
|
|
137
|
-
* Run this method when all nodes is pushed in nodePages
|
|
138
|
-
* @param {string} layers0path - path of layer
|
|
139
|
-
* @param {Object} fileMap - fileMap which keep info for slpk archive
|
|
140
|
-
* @param {boolean} slpk
|
|
141
|
-
* @return {promise}
|
|
142
|
-
*/
|
|
143
|
-
save(layers0path: string, fileMap: Object, slpk: boolean): Promise<void>;
|
|
144
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* class GeoidHeightModel - "Gravity Height Model"
|
|
3
|
-
* Calculates difference between mean see level height and WGS84 ellipsoid height
|
|
4
|
-
* Input data have to be loaded from "Earth Gravity Model" *.pgm file with "PGMLoader"
|
|
5
|
-
* A particular model file can be loaded on https://geographiclib.sourceforge.io/html/geoid.html
|
|
6
|
-
*
|
|
7
|
-
* The implementation is ported from GeographicLib-1.50.1
|
|
8
|
-
*/
|
|
9
|
-
export class GeoidHeightModel {
|
|
10
|
-
/**
|
|
11
|
-
* @constructs
|
|
12
|
-
* Create a GeoidHeightModel instance.
|
|
13
|
-
* @param options - object which includes parameters parsed from *.pgm header
|
|
14
|
-
* @param options.data - binary buffer of *.pgm file
|
|
15
|
-
*/
|
|
16
|
-
constructor(options: {
|
|
17
|
-
cubic: boolean;
|
|
18
|
-
_width: number;
|
|
19
|
-
_height: number;
|
|
20
|
-
_rlonres: number;
|
|
21
|
-
_rlatres: number;
|
|
22
|
-
_offset: number;
|
|
23
|
-
_scale: number;
|
|
24
|
-
_swidth: number;
|
|
25
|
-
_datastart: number;
|
|
26
|
-
_maxerror: number;
|
|
27
|
-
_rmserror: number;
|
|
28
|
-
_description: string;
|
|
29
|
-
_datetime: string;
|
|
30
|
-
data: Uint8Array;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Calculates difference between mean see level height and WGS84 ellipsoid height
|
|
35
|
-
* Code is ported from /GeographicLib-1.50.1/src/Geoid.cpp
|
|
36
|
-
* @param lat - latitude
|
|
37
|
-
* @param lon - longitude
|
|
38
|
-
* @returns height in meters
|
|
39
|
-
*/
|
|
40
|
-
getHeight(lat: number, lon: number): number;
|
|
41
|
-
}
|