@loaders.gl/tile-converter 3.1.6 → 3.2.0-alpha.1

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.
Files changed (117) hide show
  1. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +78 -0
  2. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  3. package/dist/3d-tiles-converter/3d-tiles-converter.js +242 -0
  4. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +83 -0
  5. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  6. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +278 -0
  7. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +13 -0
  8. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  9. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +23 -0
  10. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  11. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  12. package/dist/3d-tiles-converter/helpers/texture-atlas.js +52 -0
  13. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  14. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  15. package/dist/3d-tiles-converter/json-templates/tileset.js +43 -0
  16. package/dist/bundle.d.ts +2 -0
  17. package/dist/bundle.d.ts.map +1 -0
  18. package/dist/bundle.js +5 -0
  19. package/dist/converter.min.js +21 -21
  20. package/dist/deps-installer/deps-installer.d.ts +4 -0
  21. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  22. package/dist/deps-installer/deps-installer.js +21 -0
  23. package/dist/dist.min.js +1913 -908
  24. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +2 -1
  25. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  26. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +14 -21
  27. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  28. package/dist/es5/i3s-converter/helpers/node-pages.js +78 -35
  29. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  30. package/dist/es5/i3s-converter/i3s-converter.js +35 -25
  31. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  32. package/dist/es5/pgm-loader.js +1 -1
  33. package/dist/es5/pgm-loader.js.map +1 -1
  34. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +2 -1
  35. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  36. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -5
  37. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  38. package/dist/esm/i3s-converter/helpers/node-pages.js +2 -7
  39. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  40. package/dist/esm/i3s-converter/i3s-converter.js +10 -0
  41. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  42. package/dist/esm/pgm-loader.js +1 -1
  43. package/dist/esm/pgm-loader.js.map +1 -1
  44. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
  45. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  46. package/dist/i3s-converter/helpers/coordinate-converter.js +118 -0
  47. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  48. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  49. package/dist/i3s-converter/helpers/create-scene-server-path.js +28 -0
  50. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  51. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  52. package/dist/i3s-converter/helpers/geometry-attributes.js +176 -0
  53. package/dist/i3s-converter/helpers/geometry-converter.d.ts +12 -0
  54. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  55. package/dist/i3s-converter/helpers/geometry-converter.js +791 -0
  56. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  57. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  58. package/dist/i3s-converter/helpers/node-debug.js +114 -0
  59. package/dist/i3s-converter/helpers/node-pages.d.ts +116 -0
  60. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  61. package/dist/i3s-converter/helpers/node-pages.js +203 -0
  62. package/dist/i3s-converter/i3s-converter.d.ts +321 -0
  63. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  64. package/dist/i3s-converter/i3s-converter.js +994 -0
  65. package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
  66. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  67. package/dist/i3s-converter/json-templates/layers.js +199 -0
  68. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  69. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  70. package/dist/i3s-converter/json-templates/metadata.js +25 -0
  71. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  72. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  73. package/dist/i3s-converter/json-templates/node.js +89 -0
  74. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  75. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  76. package/dist/i3s-converter/json-templates/scene-server.js +31 -0
  77. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  78. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  79. package/dist/i3s-converter/json-templates/shared-resources.js +129 -0
  80. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  81. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  82. package/dist/i3s-converter/json-templates/store.js +103 -0
  83. package/dist/i3s-converter/types.d.ts +39 -0
  84. package/dist/i3s-converter/types.d.ts.map +1 -0
  85. package/dist/i3s-converter/types.js +2 -0
  86. package/dist/i3s-server/app.d.ts +3 -0
  87. package/dist/i3s-server/app.d.ts.map +1 -0
  88. package/dist/i3s-server/app.js +14 -0
  89. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  90. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  91. package/dist/i3s-server/controllers/index-controller.js +23 -0
  92. package/dist/i3s-server/routes/index.d.ts +3 -0
  93. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  94. package/dist/i3s-server/routes/index.js +16 -0
  95. package/dist/index.d.ts +5 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +14 -0
  98. package/dist/lib/utils/compress-util.d.ts +6 -0
  99. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  100. package/dist/lib/utils/compress-util.js +190 -0
  101. package/dist/lib/utils/file-utils.d.ts +6 -0
  102. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  103. package/dist/lib/utils/file-utils.js +42 -0
  104. package/dist/lib/utils/lod-conversion-utils.d.ts +20 -0
  105. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  106. package/dist/lib/utils/lod-conversion-utils.js +57 -0
  107. package/dist/lib/utils/statistic-utills.d.ts +3 -0
  108. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  109. package/dist/lib/utils/statistic-utills.js +64 -0
  110. package/dist/pgm-loader.d.ts +6 -0
  111. package/dist/pgm-loader.d.ts.map +1 -0
  112. package/dist/pgm-loader.js +23 -0
  113. package/package.json +16 -17
  114. package/src/3d-tiles-converter/3d-tiles-converter.ts +4 -1
  115. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +6 -5
  116. package/src/i3s-converter/helpers/node-pages.ts +6 -6
  117. package/src/i3s-converter/i3s-converter.ts +12 -0
@@ -0,0 +1,321 @@
1
+ import type { SceneLayer3D } from '@loaders.gl/i3s';
2
+ import { Tileset3D } from '@loaders.gl/tiles';
3
+ import { Geoid } from '@math.gl/geoid';
4
+ import NodePages from './helpers/node-pages';
5
+ import { LoaderWithParser } from '@loaders.gl/loader-utils';
6
+ import { I3SMaterialDefinition } from '@loaders.gl/i3s/src/types';
7
+ /**
8
+ * Converter from 3d-tiles tileset to i3s layer
9
+ */
10
+ export default class I3SConverter {
11
+ nodePages: NodePages;
12
+ fileMap: {
13
+ [key: string]: string;
14
+ };
15
+ options: any;
16
+ layers0Path: string;
17
+ materialMap: Map<any, any>;
18
+ materialDefinitions: I3SMaterialDefinition[];
19
+ vertexCounter: number;
20
+ layers0: SceneLayer3D | null;
21
+ featuresHashArray: string[];
22
+ refinementCounter: {
23
+ tilesCount: number;
24
+ tilesWithAddRefineCount: number;
25
+ };
26
+ validate: boolean;
27
+ boundingVolumeWarnings?: string[];
28
+ conversionStartTime: [number, number];
29
+ refreshTokenTime: [number, number];
30
+ sourceTileset: Tileset3D | null;
31
+ geoidHeightModel: Geoid | null;
32
+ Loader: LoaderWithParser;
33
+ generateTextures: boolean;
34
+ generateBoundingVolumes: boolean;
35
+ layersHasTexture: boolean;
36
+ constructor();
37
+ /**
38
+ * Convert a 3d tileset
39
+ * @param options
40
+ * @param options.inputUrl the url to read the tileset from
41
+ * @param options.outputPath the output filename
42
+ * @param options.tilesetName the output name of the tileset
43
+ * @param options.maxDepth The max tree depth of conversion
44
+ * @param options.slpk Generate slpk (Scene Layer Packages) output file
45
+ * @param options.sevenZipExe Location of 7z.exe archiver to create slpk on Windows
46
+ * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format
47
+ * @param options.token Token for Cesium ION tilesets authentication
48
+ * @param options.draco Generate I3S 1.7 draco compressed geometries
49
+ * @param options.validate -enable validation
50
+ */
51
+ convert(options: {
52
+ inputUrl: string;
53
+ outputPath: string;
54
+ tilesetName: string;
55
+ sevenZipExe: string;
56
+ egmFilePath: string;
57
+ maxDepth?: number;
58
+ slpk?: boolean;
59
+ token?: string;
60
+ draco?: boolean;
61
+ validate?: boolean;
62
+ generateTextures?: boolean;
63
+ generateBoundingVolumes?: boolean;
64
+ /** @deprecated */
65
+ inputType?: string;
66
+ }): Promise<any>;
67
+ /**
68
+ * Convert and save the layer and embedded tiles
69
+ * @param outputPath - path to save output data
70
+ * @param tilesetName - new tileset path
71
+ */
72
+ private _createAndSaveTileset;
73
+ /**
74
+ * Form object of 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md
75
+ * @param tilesetName - Name of layer
76
+ */
77
+ private _formLayers0;
78
+ /**
79
+ * Convert and save the layer and embedded tiles
80
+ * @param boundingVolumes - mbs and obb data about node's bounding volume
81
+ * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
82
+ */
83
+ private _formRootNodeIndexDocument;
84
+ /**
85
+ * Form object of 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md
86
+ * @param root0 - 3DNodeIndexDocument of root node https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
87
+ * @param sourceRootTile - Source (3DTile) tile data
88
+ * @param parentId - node id in node pages
89
+ * @param boundingVolumes - mbs and obb data about node's bounding volume
90
+ */
91
+ private _convertNodesTree;
92
+ /**
93
+ * Write 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md in file
94
+ */
95
+ private _writeLayers0;
96
+ /**
97
+ * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md in file
98
+ */
99
+ private _writeNodeIndexDocument;
100
+ /**
101
+ * Pack files into *.slpk archive
102
+ * @param tilesetPath - Path to save file
103
+ */
104
+ private _createSlpk;
105
+ /**
106
+ * Add child nodes recursively and write them to files
107
+ * @param data - arguments
108
+ * @param data.sourceTiles - array of source child nodes
109
+ * @param data.parentNode - 3DNodeIndexDocument of parent node for processing child nodes
110
+ * @param data.parentId - id of parent node in node pages
111
+ * @param data.level - level of node (distanse to root node in the tree)
112
+ */
113
+ private _addChildrenWithNeighborsAndWriteFile;
114
+ /**
115
+ * Add child nodes recursively and write them to files
116
+ * @param data - arguments
117
+ * @param data.childNodes - array of target child nodes
118
+ * @param data.sourceTiles - array of source child nodes
119
+ * @param data.parentNode - 3DNodeIndexDocument of parent node for processing child nodes
120
+ * @param data.parentId - id of parent node in node pages
121
+ * @param data.level - level of node (distanse to root node in the tree)
122
+ */
123
+ private _addChildren;
124
+ /**
125
+ * Add neightbors to 3DNodeIndexDocument and write it in a file
126
+ * @param parentNode - arguments
127
+ * @param childNodes - array of target child nodes
128
+ */
129
+ private _addNeighborsAndWriteFile;
130
+ /**
131
+ * Convert tile to one or more I3S nodes
132
+ * @param parentTile - parent 3DNodeIndexDocument
133
+ * @param sourceTile - source tile (3DTile)
134
+ * @param parentId - id of parent node in node pages
135
+ * @param level - level of node (distanse to root node in the tree)
136
+ */
137
+ private _createNode;
138
+ /**
139
+ * Convert attributesStorageInfo https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md
140
+ * from B3DM batch table
141
+ * @param sourceTileContent - tile content of 3DTile
142
+ * @return {void}
143
+ */
144
+ private _convertAttributeStorageInfo;
145
+ /**
146
+ * Convert tile to one or more I3S nodes
147
+ * @param sourceTile - source tile (3DTile)
148
+ * result.geometry - ArrayBuffer with geometry attributes
149
+ * result.compressedGeometry - ArrayBuffer with compressed (draco) geometry
150
+ * result.texture - texture image
151
+ * result.sharedResources - shared resource data object
152
+ * result.meshMaterial - PBR-like material object
153
+ * result.vertexCount - number of vertices in geometry
154
+ * result.attributes - feature attributes
155
+ * result.featureCount - number of features
156
+ */
157
+ private _convertResources;
158
+ /**
159
+ * Create a new node object (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/node.cmn.md)
160
+ * in node pages (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodePage.cmn.md)
161
+ * @param maxScreenThresholdSQ - Level of Details (LOD) metric
162
+ * @param boundingVolumes - Bounding volumes
163
+ * @param sourceTile - source tile (3DTile)
164
+ * @param parentId - id of parent node in node pages
165
+ * @param resources - the node resources data
166
+ * @param resources.meshMaterial - PBR-like material object
167
+ * @param resources.texture - texture image
168
+ * @param resources.vertexCount - number of vertices in geometry
169
+ * @param resources.featureCount - number of features
170
+ * @return the node object in node pages
171
+ */
172
+ private _createNodeInNodePages;
173
+ /**
174
+ * Create a new node page object in node pages
175
+ * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node
176
+ * @param boundingVolumes - Bounding volumes
177
+ * @param lodSelection - Level of Details (LOD) metrics
178
+ * @param nodeInPage - corresponding node object in a node page
179
+ * @param resources - the node resources data
180
+ * @param resources.texture - texture image
181
+ * @param resources.attributes - feature attributes
182
+ * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object
183
+ */
184
+ private _createNodeIndexDocument;
185
+ /**
186
+ * Write node resources in files
187
+ * @param resources - source tile (3DTile)
188
+ * @param resources.geometry - Uint8Array with geometry attributes
189
+ * @param resources.compressedGeometry - Uint8Array with compressed (draco) geometry
190
+ * @param resources.texture - texture image
191
+ * @param resources.sharedResources - shared resource data object
192
+ * @param resources.attributes - feature attributes
193
+ * @return {Promise<void>}
194
+ */
195
+ private _writeResources;
196
+ /**
197
+ * Write non-compressed and compressed geometries in files
198
+ * @param geometryBuffer - Uint8Array with geometry attributes
199
+ * @param compressedGeometry - Uint8Array with compressed (draco) geometry
200
+ * @param childPath - a child path to write resources
201
+ * @param slpkChildPath - resource path inside *slpk file
202
+ */
203
+ private _writeGeometries;
204
+ /**
205
+ * Write shared resources in a file
206
+ * @param sharedResources - shared resource data object
207
+ * @param childPath - a child path to write resources
208
+ * @param slpkChildPath - resource path inside *slpk file
209
+ * @param nodePath - a node path
210
+ */
211
+ private _writeShared;
212
+ /**
213
+ * Generates textures based on texture mime type and fill in textureSetDefinitions data.
214
+ * @param texture - the texture image
215
+ * @param childPath - a child path to write resources
216
+ * @param slpkChildPath - the resource path inside *slpk file
217
+ */
218
+ private _writeTexture;
219
+ /**
220
+ * Write the texture image in a file
221
+ * @param textureData
222
+ * @param name
223
+ * @param format
224
+ * @param childPath
225
+ * @param slpkChildPath
226
+ */
227
+ private writeTextureFile;
228
+ /**
229
+ * Write feature attributes in files
230
+ * @param attributes - feature attributes
231
+ * @param childPath - a child path to write resources
232
+ * @param slpkChildPath - the resource path inside *slpk file
233
+ */
234
+ private _writeAttributes;
235
+ /**
236
+ * Return file format by its MIME type
237
+ * @param mimeType - feature attributes
238
+ */
239
+ private _getFormatByMimeType;
240
+ /**
241
+ * Find or create material in materialDefinitions array
242
+ * @param material - end-to-end index of the node
243
+ * @return material id
244
+ */
245
+ private _findOrCreateMaterial;
246
+ /**
247
+ * Generate storage attribute for map segmentation.
248
+ * @param attributeIndex - order index of attribute (f_0, f_1 ...).
249
+ * @param key - attribute key from batch table.\
250
+ * @param attributeType - attribute type.
251
+ * @return Updated storageAttribute.
252
+ */
253
+ private _createdStorageAttribute;
254
+ /**
255
+ * Get the attribute type for attributeStorageInfo https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md
256
+ * @param key - attribute's key
257
+ * @param attribute - attribute's type in batchTable
258
+ */
259
+ private getAttributeType;
260
+ /**
261
+ * Setup storage attribute as string.
262
+ * @param storageAttribute - attribute for map segmentation.
263
+ */
264
+ private _setupStringAttribute;
265
+ /**
266
+ * Setup Id attribute for map segmentation.
267
+ * @param storageAttribute - attribute for map segmentation .
268
+ */
269
+ private _setupIdAttribute;
270
+ /**
271
+ * Setup double attribute for map segmentation.
272
+ * @param storageAttribute - attribute for map segmentation .
273
+ */
274
+ private _setupDoubleAttribute;
275
+ /**
276
+ * Setup field attribute for map segmentation.
277
+ * @param key - attribute for map segmentation.
278
+ * @param fieldAttributeType - esri attribute type ('esriFieldTypeString' or 'esriFieldTypeOID').
279
+ */
280
+ private _createFieldAttribute;
281
+ /**
282
+ * Do conversion of 3DTiles batch table to I3s node attributes.
283
+ * @param batchTable - Table with layer meta data.
284
+ */
285
+ private _convertBatchTableInfoToNodeAttributes;
286
+ /**
287
+ * Find and return attribute type based on key form Batch table.
288
+ * @param attributeType
289
+ */
290
+ private _getFieldAttributeType;
291
+ /**
292
+ * Generate popup info to show metadata on the map.
293
+ * @param batchTable - Batch table data with OBJECTID.
294
+ * @return data for correct rendering of popup.
295
+ */
296
+ private _createPopupInfo;
297
+ /**
298
+ * Print statistics in the end of conversion
299
+ * @param params - output files data
300
+ */
301
+ private _finishConversion;
302
+ /**
303
+ * Fetch preload options for ION tileset
304
+ */
305
+ private _fetchPreloadOptions;
306
+ /**
307
+ * Update options of source tileset
308
+ */
309
+ private _updateTilesetOptions;
310
+ /** Do calculations of all tiles and tiles with "ADD" type of refinement.
311
+ * @param tile
312
+ */
313
+ private _checkAddRefinementTypeForTile;
314
+ /**
315
+ * Check if the tile's content format is supported by the converter
316
+ * @param sourceRootTile
317
+ * @returns
318
+ */
319
+ private isContentSupported;
320
+ }
321
+ //# sourceMappingURL=i3s-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}