@loaders.gl/tile-converter 4.0.0-beta.2 → 4.0.0-beta.4

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 (294) hide show
  1. package/bin/converter.js +1 -3
  2. package/bin/i3s-server.js +1 -3
  3. package/bin/slpk-extractor.js +1 -3
  4. package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/3d-tiles-converter.js +31 -32
  5. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  6. package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/b3dm-converter.js +5 -6
  7. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  8. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  9. package/dist/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  10. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  11. package/dist/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  12. package/dist/constants.js.map +1 -0
  13. package/dist/{esm/converter-cli.js → converter-cli.js} +37 -15
  14. package/dist/converter-cli.js.map +1 -0
  15. package/dist/converter.min.cjs +524 -0
  16. package/dist/{esm/deps-installer → deps-installer}/deps-installer.js +3 -3
  17. package/dist/deps-installer/deps-installer.js.map +1 -0
  18. package/dist/{esm/i3s-converter → i3s-converter}/helpers/batch-ids-extensions.js +2 -2
  19. package/dist/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  20. package/dist/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  21. package/dist/{esm/i3s-converter → i3s-converter}/helpers/create-scene-server-path.js +2 -2
  22. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  23. package/dist/{esm/i3s-converter → i3s-converter}/helpers/feature-attributes.js +1 -1
  24. package/dist/i3s-converter/helpers/feature-attributes.js.map +1 -0
  25. package/dist/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  26. package/dist/{esm/i3s-converter → i3s-converter}/helpers/geometry-converter.js +11 -11
  27. package/dist/i3s-converter/helpers/geometry-converter.js.map +1 -0
  28. package/dist/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  29. package/dist/{esm/i3s-converter → i3s-converter}/helpers/load-3d-tiles.js +1 -1
  30. package/dist/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  31. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-debug.js +2 -2
  32. package/dist/i3s-converter/helpers/node-debug.js.map +1 -0
  33. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-index-document.js +14 -15
  34. package/dist/i3s-converter/helpers/node-index-document.js.map +1 -0
  35. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-pages.js +13 -14
  36. package/dist/i3s-converter/helpers/node-pages.js.map +1 -0
  37. package/dist/{esm/i3s-converter → i3s-converter}/helpers/preprocess-3d-tiles.js +1 -1
  38. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  39. package/dist/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  40. package/dist/i3s-converter/i3s-converter.d.ts +6 -0
  41. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  42. package/dist/{esm/i3s-converter → i3s-converter}/i3s-converter.js +120 -111
  43. package/dist/i3s-converter/i3s-converter.js.map +1 -0
  44. package/dist/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  45. package/dist/{esm/i3s-converter → i3s-converter}/json-templates/layers.js +1 -1
  46. package/dist/i3s-converter/json-templates/layers.js.map +1 -0
  47. package/dist/i3s-converter/json-templates/metadata.js.map +1 -0
  48. package/dist/i3s-converter/json-templates/node.js.map +1 -0
  49. package/dist/i3s-converter/json-templates/scene-server.js.map +1 -0
  50. package/dist/{esm/i3s-converter → i3s-converter}/json-templates/shared-resources.js +2 -2
  51. package/dist/i3s-converter/json-templates/shared-resources.js.map +1 -0
  52. package/dist/i3s-converter/json-templates/store.js.map +1 -0
  53. package/dist/i3s-converter/types.js.map +1 -0
  54. package/dist/{esm/i3s-server → i3s-server}/app.js +1 -1
  55. package/dist/i3s-server/app.js.map +1 -0
  56. package/dist/i3s-server/bin/i3s-server.min.cjs +874 -0
  57. package/dist/{esm/i3s-server → i3s-server}/bin/www.js +4 -4
  58. package/dist/i3s-server/bin/www.js.map +1 -0
  59. package/dist/{esm/i3s-server → i3s-server}/controllers/index-controller.js +1 -1
  60. package/dist/i3s-server/controllers/index-controller.js.map +1 -0
  61. package/dist/i3s-server/controllers/slpk-controller.d.ts +2 -3
  62. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -1
  63. package/dist/i3s-server/controllers/slpk-controller.js +19 -0
  64. package/dist/i3s-server/controllers/slpk-controller.js.map +1 -0
  65. package/dist/i3s-server/routes/index.js.map +1 -0
  66. package/dist/{esm/i3s-server → i3s-server}/routes/slpk-router.js +2 -2
  67. package/dist/i3s-server/routes/slpk-router.js.map +1 -0
  68. package/dist/i3s-server/utils/create-scene-server.js.map +1 -0
  69. package/dist/{esm/i3s-server → i3s-server}/utils/server-utils.js +5 -5
  70. package/dist/i3s-server/utils/server-utils.js.map +1 -0
  71. package/dist/index.cjs +5129 -0
  72. package/dist/index.js +3 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/{esm/lib → lib}/utils/cli-utils.js +2 -2
  75. package/dist/lib/utils/cli-utils.js.map +1 -0
  76. package/dist/{esm/lib → lib}/utils/compress-util.js +15 -15
  77. package/dist/lib/utils/compress-util.js.map +1 -0
  78. package/dist/{esm/lib → lib}/utils/file-utils.js +5 -5
  79. package/dist/lib/utils/file-utils.js.map +1 -0
  80. package/dist/lib/utils/geometry-utils.js.map +1 -0
  81. package/dist/lib/utils/lod-conversion-utils.js.map +1 -0
  82. package/dist/lib/utils/queue.js.map +1 -0
  83. package/dist/lib/utils/statistic-utills.d.js +2 -0
  84. package/dist/lib/utils/statistic-utills.d.js.map +1 -0
  85. package/dist/{esm/lib → lib}/utils/statistic-utills.js +6 -6
  86. package/dist/lib/utils/statistic-utills.js.map +1 -0
  87. package/dist/{esm/lib → lib}/utils/write-queue.js +6 -7
  88. package/dist/lib/utils/write-queue.js.map +1 -0
  89. package/dist/{esm/pgm-loader.js → pgm-loader.js} +1 -1
  90. package/dist/pgm-loader.js.map +1 -0
  91. package/dist/{esm/slpk-extractor → slpk-extractor}/slpk-extractor.js +4 -4
  92. package/dist/slpk-extractor/slpk-extractor.js.map +1 -0
  93. package/dist/{esm/slpk-extractor-cli.js → slpk-extractor-cli.js} +6 -6
  94. package/dist/slpk-extractor-cli.js.map +1 -0
  95. package/dist/slpk-extractor.min.cjs +335 -0
  96. package/package.json +33 -26
  97. package/src/converter-cli.ts +32 -14
  98. package/src/i3s-converter/i3s-converter.ts +44 -30
  99. package/src/i3s-server/controllers/slpk-controller.ts +12 -10
  100. package/src/slpk-extractor/slpk-extractor.ts +1 -1
  101. package/dist/bundle.d.ts +0 -2
  102. package/dist/bundle.d.ts.map +0 -1
  103. package/dist/converter.min.js +0 -356
  104. package/dist/dist.min.js +0 -64291
  105. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +0 -447
  106. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  107. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +0 -295
  108. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  109. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -18
  110. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  111. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js +0 -63
  112. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +0 -1
  113. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -33
  114. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  115. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -61
  116. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  117. package/dist/es5/bundle.js +0 -6
  118. package/dist/es5/bundle.js.map +0 -1
  119. package/dist/es5/constants.js +0 -9
  120. package/dist/es5/constants.js.map +0 -1
  121. package/dist/es5/converter-cli.js +0 -249
  122. package/dist/es5/converter-cli.js.map +0 -1
  123. package/dist/es5/deps-installer/deps-installer.js +0 -198
  124. package/dist/es5/deps-installer/deps-installer.js.map +0 -1
  125. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +0 -146
  126. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +0 -1
  127. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +0 -89
  128. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  129. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -41
  130. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  131. package/dist/es5/i3s-converter/helpers/feature-attributes.js +0 -164
  132. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +0 -1
  133. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +0 -253
  134. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  135. package/dist/es5/i3s-converter/helpers/geometry-converter.js +0 -1190
  136. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +0 -1
  137. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +0 -113
  138. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +0 -1
  139. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +0 -148
  140. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +0 -1
  141. package/dist/es5/i3s-converter/helpers/node-debug.js +0 -76
  142. package/dist/es5/i3s-converter/helpers/node-debug.js.map +0 -1
  143. package/dist/es5/i3s-converter/helpers/node-index-document.js +0 -522
  144. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +0 -1
  145. package/dist/es5/i3s-converter/helpers/node-pages.js +0 -519
  146. package/dist/es5/i3s-converter/helpers/node-pages.js.map +0 -1
  147. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +0 -146
  148. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +0 -1
  149. package/dist/es5/i3s-converter/helpers/tileset-traversal.js +0 -82
  150. package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +0 -1
  151. package/dist/es5/i3s-converter/i3s-converter.js +0 -1554
  152. package/dist/es5/i3s-converter/i3s-converter.js.map +0 -1
  153. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +0 -107
  154. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +0 -1
  155. package/dist/es5/i3s-converter/json-templates/layers.js +0 -163
  156. package/dist/es5/i3s-converter/json-templates/layers.js.map +0 -1
  157. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -31
  158. package/dist/es5/i3s-converter/json-templates/metadata.js.map +0 -1
  159. package/dist/es5/i3s-converter/json-templates/node.js +0 -99
  160. package/dist/es5/i3s-converter/json-templates/node.js.map +0 -1
  161. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -39
  162. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +0 -1
  163. package/dist/es5/i3s-converter/json-templates/shared-resources.js +0 -173
  164. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +0 -1
  165. package/dist/es5/i3s-converter/json-templates/store.js +0 -107
  166. package/dist/es5/i3s-converter/json-templates/store.js.map +0 -1
  167. package/dist/es5/i3s-converter/types.js +0 -18
  168. package/dist/es5/i3s-converter/types.js.map +0 -1
  169. package/dist/es5/i3s-server/app.js +0 -35
  170. package/dist/es5/i3s-server/app.js.map +0 -1
  171. package/dist/es5/i3s-server/bin/www.js +0 -33
  172. package/dist/es5/i3s-server/bin/www.js.map +0 -1
  173. package/dist/es5/i3s-server/controllers/index-controller.js +0 -56
  174. package/dist/es5/i3s-server/controllers/index-controller.js.map +0 -1
  175. package/dist/es5/i3s-server/controllers/slpk-controller.js +0 -81
  176. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +0 -1
  177. package/dist/es5/i3s-server/routes/index.js +0 -37
  178. package/dist/es5/i3s-server/routes/index.js.map +0 -1
  179. package/dist/es5/i3s-server/routes/slpk-router.js +0 -72
  180. package/dist/es5/i3s-server/routes/slpk-router.js.map +0 -1
  181. package/dist/es5/i3s-server/utils/create-scene-server.js +0 -20
  182. package/dist/es5/i3s-server/utils/create-scene-server.js.map +0 -1
  183. package/dist/es5/i3s-server/utils/server-utils.js +0 -49
  184. package/dist/es5/i3s-server/utils/server-utils.js.map +0 -1
  185. package/dist/es5/index.js +0 -21
  186. package/dist/es5/index.js.map +0 -1
  187. package/dist/es5/lib/utils/cli-utils.js +0 -57
  188. package/dist/es5/lib/utils/cli-utils.js.map +0 -1
  189. package/dist/es5/lib/utils/compress-util.js +0 -346
  190. package/dist/es5/lib/utils/compress-util.js.map +0 -1
  191. package/dist/es5/lib/utils/file-utils.js +0 -208
  192. package/dist/es5/lib/utils/file-utils.js.map +0 -1
  193. package/dist/es5/lib/utils/geometry-utils.js +0 -15
  194. package/dist/es5/lib/utils/geometry-utils.js.map +0 -1
  195. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -50
  196. package/dist/es5/lib/utils/lod-conversion-utils.js.map +0 -1
  197. package/dist/es5/lib/utils/queue.js +0 -47
  198. package/dist/es5/lib/utils/queue.js.map +0 -1
  199. package/dist/es5/lib/utils/statistic-utills.d.ts +0 -25
  200. package/dist/es5/lib/utils/statistic-utills.js +0 -147
  201. package/dist/es5/lib/utils/statistic-utills.js.map +0 -1
  202. package/dist/es5/lib/utils/write-queue.js +0 -214
  203. package/dist/es5/lib/utils/write-queue.js.map +0 -1
  204. package/dist/es5/pgm-loader.js +0 -49
  205. package/dist/es5/pgm-loader.js.map +0 -1
  206. package/dist/es5/slpk-extractor/slpk-extractor.js +0 -171
  207. package/dist/es5/slpk-extractor/slpk-extractor.js.map +0 -1
  208. package/dist/es5/slpk-extractor-cli.js +0 -117
  209. package/dist/es5/slpk-extractor-cli.js.map +0 -1
  210. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  211. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  212. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  213. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +0 -1
  214. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  215. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  216. package/dist/esm/bundle.js +0 -4
  217. package/dist/esm/bundle.js.map +0 -1
  218. package/dist/esm/constants.js.map +0 -1
  219. package/dist/esm/converter-cli.js.map +0 -1
  220. package/dist/esm/deps-installer/deps-installer.js.map +0 -1
  221. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +0 -1
  222. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  223. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  224. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +0 -1
  225. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  226. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +0 -1
  227. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +0 -1
  228. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +0 -1
  229. package/dist/esm/i3s-converter/helpers/node-debug.js.map +0 -1
  230. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +0 -1
  231. package/dist/esm/i3s-converter/helpers/node-pages.js.map +0 -1
  232. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +0 -1
  233. package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +0 -1
  234. package/dist/esm/i3s-converter/i3s-converter.js.map +0 -1
  235. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +0 -1
  236. package/dist/esm/i3s-converter/json-templates/layers.js.map +0 -1
  237. package/dist/esm/i3s-converter/json-templates/metadata.js.map +0 -1
  238. package/dist/esm/i3s-converter/json-templates/node.js.map +0 -1
  239. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +0 -1
  240. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +0 -1
  241. package/dist/esm/i3s-converter/json-templates/store.js.map +0 -1
  242. package/dist/esm/i3s-converter/types.js.map +0 -1
  243. package/dist/esm/i3s-server/README.md +0 -63
  244. package/dist/esm/i3s-server/app.js.map +0 -1
  245. package/dist/esm/i3s-server/bin/i3s-server.min.js +0 -516
  246. package/dist/esm/i3s-server/bin/www.js.map +0 -1
  247. package/dist/esm/i3s-server/certs/cert.pem +0 -19
  248. package/dist/esm/i3s-server/certs/key.pem +0 -27
  249. package/dist/esm/i3s-server/controllers/index-controller.js.map +0 -1
  250. package/dist/esm/i3s-server/controllers/slpk-controller.js +0 -19
  251. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +0 -1
  252. package/dist/esm/i3s-server/routes/index.js.map +0 -1
  253. package/dist/esm/i3s-server/routes/slpk-router.js.map +0 -1
  254. package/dist/esm/i3s-server/utils/create-scene-server.js.map +0 -1
  255. package/dist/esm/i3s-server/utils/server-utils.js.map +0 -1
  256. package/dist/esm/index.js +0 -3
  257. package/dist/esm/index.js.map +0 -1
  258. package/dist/esm/lib/utils/cli-utils.js.map +0 -1
  259. package/dist/esm/lib/utils/compress-util.js.map +0 -1
  260. package/dist/esm/lib/utils/file-utils.js.map +0 -1
  261. package/dist/esm/lib/utils/geometry-utils.js.map +0 -1
  262. package/dist/esm/lib/utils/lod-conversion-utils.js.map +0 -1
  263. package/dist/esm/lib/utils/queue.js.map +0 -1
  264. package/dist/esm/lib/utils/statistic-utills.d.ts +0 -25
  265. package/dist/esm/lib/utils/statistic-utills.js.map +0 -1
  266. package/dist/esm/lib/utils/write-queue.js.map +0 -1
  267. package/dist/esm/pgm-loader.js.map +0 -1
  268. package/dist/esm/slpk-extractor/slpk-extractor.js.map +0 -1
  269. package/dist/esm/slpk-extractor-cli.js.map +0 -1
  270. package/dist/slpk-extractor.min.js +0 -189
  271. package/src/bundle.ts +0 -4
  272. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.js +0 -0
  273. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/load-i3s.js +0 -0
  274. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/texture-atlas.js +0 -0
  275. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/json-templates/tileset.js +0 -0
  276. /package/dist/{esm/constants.js → constants.js} +0 -0
  277. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/coordinate-converter.js +0 -0
  278. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/geometry-attributes.js +0 -0
  279. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/gltf-attributes.js +0 -0
  280. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/tileset-traversal.js +0 -0
  281. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/geometry-definitions.js +0 -0
  282. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/metadata.js +0 -0
  283. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/node.js +0 -0
  284. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/scene-server.js +0 -0
  285. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/store.js +0 -0
  286. /package/dist/{esm/i3s-converter → i3s-converter}/types.js +0 -0
  287. /package/dist/{es5/i3s-server → i3s-server}/README.md +0 -0
  288. /package/dist/{es5/i3s-server → i3s-server}/certs/cert.pem +0 -0
  289. /package/dist/{es5/i3s-server → i3s-server}/certs/key.pem +0 -0
  290. /package/dist/{esm/i3s-server → i3s-server}/routes/index.js +0 -0
  291. /package/dist/{esm/i3s-server → i3s-server}/utils/create-scene-server.js +0 -0
  292. /package/dist/{esm/lib → lib}/utils/geometry-utils.js +0 -0
  293. /package/dist/{esm/lib → lib}/utils/lod-conversion-utils.js +0 -0
  294. /package/dist/{esm/lib → lib}/utils/queue.js +0 -0
@@ -1,146 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getTextureByMetadataClass = getTextureByMetadataClass;
8
- exports.handleBatchIdsExtensions = handleBatchIdsExtensions;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _math = require("@loaders.gl/math");
11
- var _gltf = require("@loaders.gl/gltf");
12
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
13
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
- function getTextureByMetadataClass(tileContent, metadataClass) {
16
- var _tileContent$gltf, _tileContent$gltf$ext;
17
- var extFeatureMetadata = (_tileContent$gltf = tileContent.gltf) === null || _tileContent$gltf === void 0 ? void 0 : (_tileContent$gltf$ext = _tileContent$gltf.extensions) === null || _tileContent$gltf$ext === void 0 ? void 0 : _tileContent$gltf$ext[_gltf.EXT_FEATURE_METADATA];
18
- if (!(extFeatureMetadata !== null && extFeatureMetadata !== void 0 && extFeatureMetadata.featureTextures)) {
19
- return null;
20
- }
21
- for (var textureKey in extFeatureMetadata.featureTextures) {
22
- var texture = extFeatureMetadata.featureTextures[textureKey];
23
- if (texture.class === metadataClass) {
24
- return textureKey;
25
- }
26
- }
27
- return null;
28
- }
29
- function handleBatchIdsExtensions(attributes, primitive, images, featureTexture) {
30
- var extensions = primitive === null || primitive === void 0 ? void 0 : primitive.extensions;
31
- if (!extensions) {
32
- return [];
33
- }
34
- for (var _i = 0, _Object$entries = Object.entries(extensions || {}); _i < _Object$entries.length; _i++) {
35
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
36
- extensionName = _Object$entries$_i[0],
37
- extensionData = _Object$entries$_i[1];
38
- switch (extensionName) {
39
- case _gltf.EXT_FEATURE_METADATA:
40
- return handleExtFeatureMetadataExtension(attributes, extensionData, images, featureTexture);
41
- case _gltf.EXT_MESH_FEATURES:
42
- return handleExtMeshFeaturesExtension(attributes, extensionData);
43
- default:
44
- return [];
45
- }
46
- }
47
- return [];
48
- }
49
- function handleExtMeshFeaturesExtension(attributes, extMeshFeatures) {
50
- var _iterator = _createForOfIteratorHelper(extMeshFeatures.featureIds),
51
- _step;
52
- try {
53
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
54
- var ids = _step.value;
55
- if (typeof ids.propertyTable !== 'undefined') {
56
- return ids.data;
57
- }
58
- }
59
- } catch (err) {
60
- _iterator.e(err);
61
- } finally {
62
- _iterator.f();
63
- }
64
- return [];
65
- }
66
- function handleExtFeatureMetadataExtension(attributes, extFeatureMetadata, images, featureTexture) {
67
- var _extFeatureMetadata$f, _featureIdAttribute$f, _featureIdAttribute$f2, _featureIdAttribute$f3;
68
- var featureIdAttribute = extFeatureMetadata === null || extFeatureMetadata === void 0 ? void 0 : (_extFeatureMetadata$f = extFeatureMetadata.featureIdAttributes) === null || _extFeatureMetadata$f === void 0 ? void 0 : _extFeatureMetadata$f[0];
69
- if (featureIdAttribute !== null && featureIdAttribute !== void 0 && (_featureIdAttribute$f = featureIdAttribute.featureIds) !== null && _featureIdAttribute$f !== void 0 && _featureIdAttribute$f.attribute) {
70
- var batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];
71
- return batchIdsAttribute.value;
72
- }
73
- if (featureIdAttribute !== null && featureIdAttribute !== void 0 && (_featureIdAttribute$f2 = featureIdAttribute.featureIds) !== null && _featureIdAttribute$f2 !== void 0 && _featureIdAttribute$f2.hasOwnProperty('constant') && featureIdAttribute !== null && featureIdAttribute !== void 0 && (_featureIdAttribute$f3 = featureIdAttribute.featureIds) !== null && _featureIdAttribute$f3 !== void 0 && _featureIdAttribute$f3.hasOwnProperty('divisor')) {
74
- var _attributes$POSITIONS;
75
- var featuresCount = (attributes === null || attributes === void 0 ? void 0 : (_attributes$POSITIONS = attributes.POSITIONS) === null || _attributes$POSITIONS === void 0 ? void 0 : _attributes$POSITIONS.value.length) / 3 || 0;
76
- return generateImplicitFeatureIds(featuresCount, featureIdAttribute.featureIds.constant, featureIdAttribute.featureIds.divisor);
77
- }
78
- var featureIdTexture = (extFeatureMetadata === null || extFeatureMetadata === void 0 ? void 0 : extFeatureMetadata.featureIdTextures) && (extFeatureMetadata === null || extFeatureMetadata === void 0 ? void 0 : extFeatureMetadata.featureIdTextures[0]);
79
- if (featureIdTexture) {
80
- var _featureIdTexture$fea, _featureIdTexture$fea2;
81
- var textureAttributeIndex = (featureIdTexture === null || featureIdTexture === void 0 ? void 0 : (_featureIdTexture$fea = featureIdTexture.featureIds) === null || _featureIdTexture$fea === void 0 ? void 0 : (_featureIdTexture$fea2 = _featureIdTexture$fea.texture) === null || _featureIdTexture$fea2 === void 0 ? void 0 : _featureIdTexture$fea2.texCoord) || 0;
82
- var textCoordAttribute = "TEXCOORD_".concat(textureAttributeIndex);
83
- var textureCoordinates = attributes[textCoordAttribute].value;
84
- return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);
85
- }
86
- if (featureTexture) {
87
- var _batchIdsAttribute = attributes[featureTexture];
88
- return _batchIdsAttribute.value;
89
- }
90
- return [];
91
- }
92
- function generateImplicitFeatureIds(featuresCount) {
93
- var constant = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
94
- var divisor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
95
- var featureIds = [];
96
- if (divisor > 0) {
97
- var currentValue = constant;
98
- var devisorCounter = divisor;
99
- for (var index = 0; index < featuresCount; index++) {
100
- featureIds.push(currentValue);
101
- devisorCounter -= 1;
102
- if (devisorCounter === 0) {
103
- currentValue++;
104
- devisorCounter = divisor;
105
- }
106
- }
107
- } else {
108
- featureIds = Array(featuresCount).fill(constant, 0, featuresCount);
109
- }
110
- return featureIds;
111
- }
112
- function generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images) {
113
- var _featureIdTexture$fea3, _featureIdTexture$fea4, _featureIdTexture$fea5;
114
- if (!(images !== null && images !== void 0 && images.length)) {
115
- return [];
116
- }
117
- var CHANNELS_MAP = {
118
- r: 0,
119
- g: 1,
120
- b: 2,
121
- a: 3
122
- };
123
- var textureIndex = featureIdTexture === null || featureIdTexture === void 0 ? void 0 : (_featureIdTexture$fea3 = featureIdTexture.featureIds) === null || _featureIdTexture$fea3 === void 0 ? void 0 : (_featureIdTexture$fea4 = _featureIdTexture$fea3.texture) === null || _featureIdTexture$fea4 === void 0 ? void 0 : _featureIdTexture$fea4.index;
124
- var featureChannel = featureIdTexture === null || featureIdTexture === void 0 ? void 0 : (_featureIdTexture$fea5 = featureIdTexture.featureIds) === null || _featureIdTexture$fea5 === void 0 ? void 0 : _featureIdTexture$fea5.channels;
125
- if (!featureChannel || textureIndex === undefined) {
126
- return [];
127
- }
128
- var image = images[textureIndex];
129
- var batchIds = [];
130
- var channels = CHANNELS_MAP[featureChannel];
131
- if (image && image !== null && image !== void 0 && image.width && image !== null && image !== void 0 && image.height && image !== null && image !== void 0 && image.components) {
132
- for (var index = 0; index < textureCoordinates.length; index += 2) {
133
- var u = textureCoordinates[index];
134
- var v = textureCoordinates[index + 1];
135
- var tx = Math.min((0, _math.emod)(u) * image.width | 0, image.width - 1);
136
- var ty = Math.min((0, _math.emod)(v) * image.height | 0, image.height - 1);
137
- var offset = (ty * image.width + tx) * image.components + channels;
138
- var batchId = new Uint8Array(image.data)[offset];
139
- batchIds.push(batchId);
140
- }
141
- } else {
142
- console.warn("Can't get batch Ids from ".concat((image === null || image === void 0 ? void 0 : image.mimeType) || '', " compressed texture"));
143
- }
144
- return batchIds;
145
- }
146
- //# sourceMappingURL=batch-ids-extensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batch-ids-extensions.js","names":["_math","require","_gltf","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","getTextureByMetadataClass","tileContent","metadataClass","_tileContent$gltf","_tileContent$gltf$ext","extFeatureMetadata","gltf","extensions","EXT_FEATURE_METADATA","featureTextures","textureKey","texture","class","handleBatchIdsExtensions","attributes","primitive","images","featureTexture","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray2","default","extensionName","extensionData","handleExtFeatureMetadataExtension","EXT_MESH_FEATURES","handleExtMeshFeaturesExtension","extMeshFeatures","_iterator","featureIds","_step","ids","propertyTable","data","_extFeatureMetadata$f","_featureIdAttribute$f","_featureIdAttribute$f2","_featureIdAttribute$f3","featureIdAttribute","featureIdAttributes","attribute","batchIdsAttribute","hasOwnProperty","_attributes$POSITIONS","featuresCount","POSITIONS","generateImplicitFeatureIds","constant","divisor","featureIdTexture","featureIdTextures","_featureIdTexture$fea","_featureIdTexture$fea2","textureAttributeIndex","texCoord","textCoordAttribute","concat","textureCoordinates","generateBatchIdsFromTexture","arguments","undefined","currentValue","devisorCounter","index","push","fill","_featureIdTexture$fea3","_featureIdTexture$fea4","_featureIdTexture$fea5","CHANNELS_MAP","r","g","b","a","textureIndex","featureChannel","channels","image","batchIds","width","height","components","u","v","tx","Math","min","emod","ty","offset","batchId","Uint8Array","console","warn","mimeType"],"sources":["../../../../src/i3s-converter/helpers/batch-ids-extensions.ts"],"sourcesContent":["import {GLTFAccessorPostprocessed, GLTFMeshPrimitivePostprocessed} from '@loaders.gl/gltf';\nimport type {NumericArray} from '@loaders.gl/loader-utils';\nimport type {\n GLTF_EXT_feature_metadata_FeatureIdTexture,\n GLTF_EXT_feature_metadata_GLTF,\n GLTF_EXT_feature_metadata_Primitive\n} from '@loaders.gl/gltf';\n\nimport type {GLTF_EXT_mesh_features} from '@loaders.gl/gltf';\n\nimport {TypedArray} from '@math.gl/core';\nimport {TextureImageProperties} from '../types';\nimport {emod} from '@loaders.gl/math';\nimport {EXT_MESH_FEATURES, EXT_FEATURE_METADATA} from '@loaders.gl/gltf';\nimport {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\n\n/**\n * Get featureTexture by a metadata class.\n * Metadata classes come from a structural metadata extesion (EXT_feature_metadata or EXT_structural_metadata).\n * The glTF might contain multiple texel-level metadata textures related to different classes. Having only one metadata class\n * selected to convert to I3S, we have to pick only one texture to convert to per-vertex property.\n * @param tileContent - 3d tile content\n * @param metadataClass - user selected feature metadata class name\n * @returns featureTexture key\n */\nexport function getTextureByMetadataClass(\n tileContent: Tiles3DTileContent,\n metadataClass?: string\n): string | null {\n const extFeatureMetadata = tileContent.gltf?.extensions?.[\n EXT_FEATURE_METADATA\n ] as GLTF_EXT_feature_metadata_GLTF;\n if (!extFeatureMetadata?.featureTextures) {\n return null;\n }\n for (const textureKey in extFeatureMetadata.featureTextures) {\n const texture = extFeatureMetadata.featureTextures[textureKey];\n if (texture.class === metadataClass) {\n return textureKey;\n }\n }\n return null;\n}\n\n/**\n * Getting batchIds from 3DTilesNext extensions.\n * @param attributes - gltf accessors\n * @param primitive - gltf primitive data\n * @param images - gltf texture images\n * @param featureTexture - feature texture key\n * @return array of batch IDs\n */\nexport function handleBatchIdsExtensions(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n primitive: GLTFMeshPrimitivePostprocessed,\n images: (TextureImageProperties | null)[],\n featureTexture: string | null\n): NumericArray {\n const extensions = primitive?.extensions;\n if (!extensions) {\n return [];\n }\n\n for (const [extensionName, extensionData] of Object.entries(extensions || {})) {\n switch (extensionName) {\n case EXT_FEATURE_METADATA:\n return handleExtFeatureMetadataExtension(\n attributes,\n extensionData as GLTF_EXT_feature_metadata_Primitive,\n images,\n featureTexture\n );\n case EXT_MESH_FEATURES:\n return handleExtMeshFeaturesExtension(attributes, extensionData as GLTF_EXT_mesh_features);\n default:\n return [];\n }\n }\n\n return [];\n}\n\n/**\n * Getting batchIds from EXT_mesh_features extensions.\n * @param attributes - gltf accessors\n * @param extMeshFeatures - EXT_mesh_features extension\n * @returns an array of attribute values\n */\nfunction handleExtMeshFeaturesExtension(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n extMeshFeatures: GLTF_EXT_mesh_features\n): NumericArray {\n for (let ids of extMeshFeatures.featureIds) {\n if (typeof ids.propertyTable !== 'undefined') {\n // propertyTable is an index that can be 0\n // return the first featureID set that corresponts to property table.\n return ids.data as NumericArray;\n }\n }\n return [];\n}\n\n/**\n * Get batchIds from EXT_feature_metadata extension.\n * @see - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata\n * @param attributes - glTF attributes\n * @param extFeatureMetadata - primitive-level EXT_FEATURE_METADATA extension data\n * @param textures - texture images\n * @param featureTexture - feature texture key\n */\nfunction handleExtFeatureMetadataExtension(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n extFeatureMetadata: GLTF_EXT_feature_metadata_Primitive,\n images: (TextureImageProperties | null)[],\n featureTexture: string | null\n): NumericArray {\n // Take only first extension object to get batchIds attribute name.\n const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];\n\n if (featureIdAttribute?.featureIds?.attribute) {\n const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];\n return batchIdsAttribute.value;\n }\n\n if (\n featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&\n featureIdAttribute?.featureIds?.hasOwnProperty('divisor')\n ) {\n const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;\n return generateImplicitFeatureIds(\n featuresCount,\n featureIdAttribute.featureIds.constant,\n featureIdAttribute.featureIds.divisor\n );\n }\n\n // Take only first extension object to get batchIds attribute name.\n const featureIdTexture =\n extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];\n\n if (featureIdTexture) {\n const textureAttributeIndex = featureIdTexture?.featureIds?.texture?.texCoord || 0;\n const textCoordAttribute = `TEXCOORD_${textureAttributeIndex}`;\n const textureCoordinates = attributes[textCoordAttribute].value;\n return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);\n }\n\n if (featureTexture) {\n const batchIdsAttribute = attributes[featureTexture];\n return batchIdsAttribute.value;\n }\n\n return [];\n}\n\n/**\n * Generates implicit feature ids\n * @see - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids\n * @param featuresCount\n * @param constant\n * @param devisor\n */\nfunction generateImplicitFeatureIds(\n featuresCount: number,\n constant: number = 0,\n divisor: number = 0\n): number[] {\n let featureIds: number[] = [];\n\n if (divisor > 0) {\n let currentValue = constant;\n let devisorCounter = divisor;\n\n for (let index = 0; index < featuresCount; index++) {\n featureIds.push(currentValue);\n\n devisorCounter -= 1;\n\n if (devisorCounter === 0) {\n currentValue++;\n devisorCounter = divisor;\n }\n }\n } else {\n featureIds = Array<number>(featuresCount).fill(constant, 0, featuresCount);\n }\n\n return featureIds;\n}\n\n/**\n * Get batchIds from texture.\n * @param primitive\n * @param featureIdTextures\n */\nfunction generateBatchIdsFromTexture(\n featureIdTexture: GLTF_EXT_feature_metadata_FeatureIdTexture,\n textureCoordinates: TypedArray,\n images: (TextureImageProperties | null)[]\n) {\n if (!images?.length) {\n return [];\n }\n\n const CHANNELS_MAP = {\n r: 0,\n g: 1,\n b: 2,\n a: 3\n };\n\n const textureIndex = featureIdTexture?.featureIds?.texture?.index;\n const featureChannel = featureIdTexture?.featureIds?.channels;\n\n if (!featureChannel || textureIndex === undefined) {\n return [];\n }\n\n const image = images[textureIndex];\n const batchIds: number[] = [];\n const channels = CHANNELS_MAP[featureChannel];\n\n if (image && image?.width && image?.height && image?.components) {\n for (let index = 0; index < textureCoordinates.length; index += 2) {\n const u = textureCoordinates[index];\n const v = textureCoordinates[index + 1];\n\n const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);\n const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);\n\n const offset = (ty * image.width + tx) * image.components + channels;\n const batchId = new Uint8Array(image.data)[offset];\n\n batchIds.push(batchId);\n }\n } else {\n console.warn(`Can't get batch Ids from ${image?.mimeType || ''} compressed texture`);\n }\n\n return batchIds;\n}\n"],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.convertBoundingVolumeToI3SFullExtent = convertBoundingVolumeToI3SFullExtent;
7
- exports.convertPositionsToVectors = convertPositionsToVectors;
8
- exports.createBoundingVolumes = createBoundingVolumes;
9
- exports.createBoundingVolumesFromGeometry = createBoundingVolumesFromGeometry;
10
- exports.createObbFromMbs = createObbFromMbs;
11
- var _core = require("@math.gl/core");
12
- var _geospatial = require("@math.gl/geospatial");
13
- var _culling = require("@math.gl/culling");
14
- function createBoundingVolumes(sourceBoundingVolume, geoidHeightModel) {
15
- var radius;
16
- var halfSize;
17
- var quaternion;
18
- var cartographicCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(sourceBoundingVolume.center, new _core.Vector3());
19
- cartographicCenter[2] = cartographicCenter[2] - geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);
20
- if (sourceBoundingVolume instanceof _culling.OrientedBoundingBox) {
21
- halfSize = sourceBoundingVolume.halfSize;
22
- radius = new _core.Vector3(halfSize[0], halfSize[1], halfSize[2]).len();
23
- quaternion = sourceBoundingVolume.quaternion;
24
- } else {
25
- radius = sourceBoundingVolume.radius;
26
- halfSize = [radius, radius, radius];
27
- quaternion = new _core.Quaternion().fromMatrix3(new _core.Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]])).normalize();
28
- }
29
- return {
30
- mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],
31
- obb: {
32
- center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],
33
- halfSize: halfSize,
34
- quaternion: quaternion
35
- }
36
- };
37
- }
38
- function createBoundingVolumesFromGeometry(cartesianPositions, geoidHeightModel) {
39
- var positionVectors = convertPositionsToVectors(cartesianPositions);
40
- var geometryObb = (0, _culling.makeOrientedBoundingBoxFromPoints)(positionVectors);
41
- var geometryMbs = (0, _culling.makeBoundingSphereFromPoints)(positionVectors);
42
- var mbsCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new _core.Vector3());
43
- var obbCenter = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new _core.Vector3());
44
- mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);
45
- obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);
46
- return {
47
- mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],
48
- obb: {
49
- center: obbCenter,
50
- halfSize: geometryObb.halfSize,
51
- quaternion: geometryObb.quaternion
52
- }
53
- };
54
- }
55
- function convertPositionsToVectors(positions) {
56
- var result = [];
57
- for (var i = 0; i < positions.length; i += 3) {
58
- var positionVector = new _core.Vector3([positions[i], positions[i + 1], positions[i + 2]]);
59
- result.push(positionVector);
60
- }
61
- return result;
62
- }
63
- function convertBoundingVolumeToI3SFullExtent(boundingVolume) {
64
- var sphere;
65
- if (boundingVolume instanceof _culling.BoundingSphere) {
66
- sphere = boundingVolume;
67
- } else {
68
- sphere = boundingVolume.getBoundingSphere();
69
- }
70
- var center = sphere.center;
71
- var radius = sphere.radius;
72
- var vertexMax = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(new _core.Vector3(center[0] + radius, center[1] + radius, center[2] + radius), new _core.Vector3());
73
- var vertexMin = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(new _core.Vector3(center[0] - radius, center[1] - radius, center[2] - radius), new _core.Vector3());
74
- return {
75
- xmin: Math.min(vertexMin[0], vertexMax[0]),
76
- xmax: Math.max(vertexMin[0], vertexMax[0]),
77
- ymin: Math.min(vertexMin[1], vertexMax[1]),
78
- ymax: Math.max(vertexMin[1], vertexMax[1]),
79
- zmin: Math.min(vertexMin[2], vertexMax[2]),
80
- zmax: Math.max(vertexMin[2], vertexMax[2])
81
- };
82
- }
83
- function createObbFromMbs(mbs) {
84
- var radius = mbs[3];
85
- var center = new _core.Vector3(mbs[0], mbs[1], mbs[2]);
86
- var halfAxex = new _core.Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);
87
- return new _culling.OrientedBoundingBox(center, halfAxex);
88
- }
89
- //# sourceMappingURL=coordinate-converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coordinate-converter.js","names":["_core","require","_geospatial","_culling","createBoundingVolumes","sourceBoundingVolume","geoidHeightModel","radius","halfSize","quaternion","cartographicCenter","Ellipsoid","WGS84","cartesianToCartographic","center","Vector3","getHeight","OrientedBoundingBox","len","Quaternion","fromMatrix3","Matrix3","normalize","mbs","obb","createBoundingVolumesFromGeometry","cartesianPositions","positionVectors","convertPositionsToVectors","geometryObb","makeOrientedBoundingBoxFromPoints","geometryMbs","makeBoundingSphereFromPoints","mbsCenter","obbCenter","positions","result","i","length","positionVector","push","convertBoundingVolumeToI3SFullExtent","boundingVolume","sphere","BoundingSphere","getBoundingSphere","vertexMax","vertexMin","xmin","Math","min","xmax","max","ymin","ymax","zmin","zmax","createObbFromMbs","halfAxex"],"sources":["../../../../src/i3s-converter/helpers/coordinate-converter.ts"],"sourcesContent":["import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';\n\nimport {Matrix3, Quaternion, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {\n OrientedBoundingBox,\n makeOrientedBoundingBoxFromPoints,\n makeBoundingSphereFromPoints,\n BoundingSphere\n} from '@math.gl/culling';\nimport {Geoid} from '@math.gl/geoid';\n\n/**\n * Create bounding volumes object from tile and geoid height model.\n * @param sourceBoundingVolume - initialized bounding volume of the source tile\n * @param geoidHeightModel - instance of Geoid class that converts elevation from geoidal to ellipsoidal and back\n * @returns - Bounding volumes object\n */\nexport function createBoundingVolumes(\n sourceBoundingVolume: OrientedBoundingBox | BoundingSphere,\n geoidHeightModel: Geoid\n): BoundingVolumes {\n let radius;\n let halfSize;\n let quaternion;\n\n const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(\n sourceBoundingVolume.center,\n new Vector3()\n );\n cartographicCenter[2] =\n cartographicCenter[2] -\n geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);\n if (sourceBoundingVolume instanceof OrientedBoundingBox) {\n halfSize = sourceBoundingVolume.halfSize;\n radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();\n quaternion = sourceBoundingVolume.quaternion;\n } else {\n radius = sourceBoundingVolume.radius;\n halfSize = [radius, radius, radius];\n quaternion = new Quaternion()\n .fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))\n .normalize();\n }\n\n return {\n mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],\n obb: {\n center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],\n halfSize,\n quaternion\n }\n };\n}\n\n/**\n * Generates bounding volumes from geometry positions\n * @param cartesianPositions\n * @param geoidHeightModel\n */\nexport function createBoundingVolumesFromGeometry(\n cartesianPositions: Float32Array,\n geoidHeightModel: Geoid\n): {mbs: Mbs; obb: Obb} {\n const positionVectors = convertPositionsToVectors(cartesianPositions);\n\n const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);\n const geometryMbs = makeBoundingSphereFromPoints(positionVectors);\n\n let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());\n let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());\n\n mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);\n obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);\n\n return {\n mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],\n obb: {\n center: obbCenter,\n halfSize: geometryObb.halfSize,\n quaternion: geometryObb.quaternion\n }\n };\n}\n\n/**\n * Create array of posisitons where each vertex is vector\n * @param {array} positions\n * @returns {Vector3[]}\n */\nexport function convertPositionsToVectors(positions: Float32Array): Vector3[] {\n const result: Vector3[] = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n // TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.\n // modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors\n const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);\n result.push(positionVector);\n }\n\n return result;\n}\n\n/**\n * Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md\n * @param boundingVolume\n * @returns - fullExtent object\n */\nexport function convertBoundingVolumeToI3SFullExtent(\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): FullExtent {\n let sphere: BoundingSphere;\n if (boundingVolume instanceof BoundingSphere) {\n sphere = boundingVolume;\n } else {\n sphere = boundingVolume.getBoundingSphere();\n }\n const center: Vector3 = sphere.center;\n const radius: number = sphere.radius;\n const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),\n new Vector3()\n );\n const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),\n new Vector3()\n );\n\n // Converter sometimes returns min values that are bigger then max,\n // so we should check and take bigger value from max and smaller for nim\n return {\n xmin: Math.min(vertexMin[0], vertexMax[0]),\n xmax: Math.max(vertexMin[0], vertexMax[0]),\n ymin: Math.min(vertexMin[1], vertexMax[1]),\n ymax: Math.max(vertexMin[1], vertexMax[1]),\n zmin: Math.min(vertexMin[2], vertexMax[2]),\n zmax: Math.max(vertexMin[2], vertexMax[2])\n };\n}\n\n/**\n * Creates oriented boundinb box from mbs.\n * @param mbs - Minimum Bounding Sphere\n * @returns - Oriented Bounding Box\n */\nexport function createObbFromMbs(mbs: Mbs): Obb {\n const radius = mbs[3];\n const center = new Vector3(mbs[0], mbs[1], mbs[2]);\n const halfAxex = new Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);\n return new OrientedBoundingBox(center, halfAxex);\n}\n"],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createSceneServerPath = createSceneServerPath;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _uuid = require("uuid");
11
- var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
12
- var _path = require("path");
13
- var _sceneServer = require("../json-templates/scene-server");
14
- var _fileUtils = require("../../lib/utils/file-utils");
15
- function createSceneServerPath(_x, _x2, _x3) {
16
- return _createSceneServerPath.apply(this, arguments);
17
- }
18
- function _createSceneServerPath() {
19
- _createSceneServerPath = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(layerName, layers0, rootPath) {
20
- var sceneServerData, sceneServer, nodePagePath;
21
- return _regenerator.default.wrap(function _callee$(_context) {
22
- while (1) switch (_context.prev = _context.next) {
23
- case 0:
24
- sceneServerData = {
25
- serviceItemId: (0, _uuid.v4)().replace(/-/gi, ''),
26
- layerName: layerName,
27
- layers0: layers0
28
- };
29
- sceneServer = (0, _jsonMapTransform.default)(sceneServerData, (0, _sceneServer.SCENE_SERVER)());
30
- nodePagePath = (0, _path.join)(rootPath, 'SceneServer');
31
- _context.next = 5;
32
- return (0, _fileUtils.writeFile)(nodePagePath, JSON.stringify(sceneServer));
33
- case 5:
34
- case "end":
35
- return _context.stop();
36
- }
37
- }, _callee);
38
- }));
39
- return _createSceneServerPath.apply(this, arguments);
40
- }
41
- //# sourceMappingURL=create-scene-server-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-scene-server-path.js","names":["_uuid","require","_jsonMapTransform","_interopRequireDefault","_path","_sceneServer","_fileUtils","createSceneServerPath","_x","_x2","_x3","_createSceneServerPath","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","layerName","layers0","rootPath","sceneServerData","sceneServer","nodePagePath","wrap","_callee$","_context","prev","next","serviceItemId","uuidv4","replace","transform","sceneServerTemplate","join","writeFile","JSON","stringify","stop"],"sources":["../../../../src/i3s-converter/helpers/create-scene-server-path.ts"],"sourcesContent":["import type {SceneLayer3D} from '@loaders.gl/i3s';\nimport {v4 as uuidv4} from 'uuid';\nimport transform from 'json-map-transform';\nimport {join} from 'path';\n\nimport {SCENE_SERVER as sceneServerTemplate} from '../json-templates/scene-server';\nimport {writeFile} from '../../lib/utils/file-utils';\n\n/**\n * Form and save sceneServer meta data into a file\n * @param layerName - layer name to display\n * @param layers0 - layer object embedded into sceneServer meta data\n * @param rootPath - root path of new converted tileset\n */\nexport async function createSceneServerPath(\n layerName: string,\n layers0: SceneLayer3D,\n rootPath: string\n): Promise<void> {\n const sceneServerData = {\n serviceItemId: uuidv4().replace(/-/gi, ''),\n layerName,\n layers0\n };\n\n const sceneServer = transform(sceneServerData, sceneServerTemplate());\n const nodePagePath = join(rootPath, 'SceneServer');\n await writeFile(nodePagePath, JSON.stringify(sceneServer));\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAAqD,SAQ/BM,qBAAqBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,sBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,uBAAA;EAAAA,sBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAApC,SAAAC,QACLC,SAAiB,EACjBC,OAAqB,EACrBC,QAAgB;IAAA,IAAAC,eAAA,EAAAC,WAAA,EAAAC,YAAA;IAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAEVP,eAAe,GAAG;YACtBQ,aAAa,EAAE,IAAAC,QAAM,EAAC,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1Cb,SAAS,EAATA,SAAS;YACTC,OAAO,EAAPA;UACF,CAAC;UAEKG,WAAW,GAAG,IAAAU,yBAAS,EAACX,eAAe,EAAE,IAAAY,yBAAmB,EAAC,CAAC,CAAC;UAC/DV,YAAY,GAAG,IAAAW,UAAI,EAACd,QAAQ,EAAE,aAAa,CAAC;UAAAM,QAAA,CAAAE,IAAA;UAAA,OAC5C,IAAAO,oBAAS,EAACZ,YAAY,EAAEa,IAAI,CAACC,SAAS,CAACf,WAAW,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAI,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAArB,OAAA;EAAA,CAC3D;EAAA,OAAAP,sBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
@@ -1,164 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.checkPropertiesLength = checkPropertiesLength;
8
- exports.createFieldAttribute = createFieldAttribute;
9
- exports.createPopupInfo = createPopupInfo;
10
- exports.createdStorageAttribute = createdStorageAttribute;
11
- exports.flattenPropertyTableByFeatureIds = flattenPropertyTableByFeatureIds;
12
- exports.getAttributeType = getAttributeType;
13
- exports.getFieldAttributeType = getFieldAttributeType;
14
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
- function flattenPropertyTableByFeatureIds(featureIdsMap, propertyTable) {
16
- var resultPropertyTable = {};
17
- for (var propertyName in propertyTable) {
18
- var properties = propertyTable[propertyName];
19
- resultPropertyTable[propertyName] = getPropertiesByFeatureIds(properties, featureIdsMap);
20
- }
21
- return resultPropertyTable;
22
- }
23
- function getPropertiesByFeatureIds(properties, featureIdsMap) {
24
- var resultProperties = [];
25
- if (properties) {
26
- for (var featureIdKey in featureIdsMap) {
27
- var property = properties[featureIdKey] || null;
28
- resultProperties.push(property);
29
- }
30
- }
31
- return resultProperties;
32
- }
33
- function checkPropertiesLength(featureIds, propertyTable) {
34
- var needFlatten = false;
35
- for (var _i = 0, _Object$values = Object.values(propertyTable); _i < _Object$values.length; _i++) {
36
- var attribute = _Object$values[_i];
37
- if (!featureIds || !attribute || featureIds.length !== attribute.length) {
38
- needFlatten = true;
39
- }
40
- }
41
- return needFlatten;
42
- }
43
- var STRING_TYPE = 'string';
44
- var SHORT_INT_TYPE = 'Int32';
45
- var DOUBLE_TYPE = 'double';
46
- var OBJECT_ID_TYPE = 'OBJECTID';
47
- function getAttributeType(key, attribute) {
48
- if (key === OBJECT_ID_TYPE) {
49
- return OBJECT_ID_TYPE;
50
- }
51
- if ((0, _typeof2.default)(attribute) === STRING_TYPE || typeof attribute === 'bigint') {
52
- return STRING_TYPE;
53
- } else if (typeof attribute === 'number') {
54
- return Number.isInteger(attribute) ? SHORT_INT_TYPE : DOUBLE_TYPE;
55
- }
56
- return STRING_TYPE;
57
- }
58
- function createdStorageAttribute(attributeIndex, key, attributeType) {
59
- var storageAttribute = {
60
- key: "f_".concat(attributeIndex),
61
- name: key,
62
- ordering: ['attributeValues'],
63
- header: [{
64
- property: 'count',
65
- valueType: 'UInt32'
66
- }],
67
- attributeValues: {
68
- valueType: 'Int32',
69
- valuesPerElement: 1
70
- }
71
- };
72
- switch (attributeType) {
73
- case OBJECT_ID_TYPE:
74
- setupIdAttribute(storageAttribute);
75
- break;
76
- case STRING_TYPE:
77
- setupStringAttribute(storageAttribute);
78
- break;
79
- case DOUBLE_TYPE:
80
- setupDoubleAttribute(storageAttribute);
81
- break;
82
- case SHORT_INT_TYPE:
83
- break;
84
- default:
85
- setupStringAttribute(storageAttribute);
86
- }
87
- return storageAttribute;
88
- }
89
- function getFieldAttributeType(attributeType) {
90
- switch (attributeType) {
91
- case OBJECT_ID_TYPE:
92
- return 'esriFieldTypeOID';
93
- case STRING_TYPE:
94
- return 'esriFieldTypeString';
95
- case SHORT_INT_TYPE:
96
- return 'esriFieldTypeInteger';
97
- case DOUBLE_TYPE:
98
- return 'esriFieldTypeDouble';
99
- default:
100
- return 'esriFieldTypeString';
101
- }
102
- }
103
- function createFieldAttribute(key, fieldAttributeType) {
104
- return {
105
- name: key,
106
- type: fieldAttributeType,
107
- alias: key
108
- };
109
- }
110
- function createPopupInfo(propertyTable) {
111
- var title = '{OBJECTID}';
112
- var mediaInfos = [];
113
- var fieldInfos = [];
114
- var popupElements = [];
115
- var expressionInfos = [];
116
- for (var key in propertyTable) {
117
- fieldInfos.push({
118
- fieldName: key,
119
- visible: true,
120
- isEditable: false,
121
- label: key
122
- });
123
- }
124
- popupElements.push({
125
- fieldInfos: fieldInfos,
126
- type: 'fields'
127
- });
128
- return {
129
- title: title,
130
- mediaInfos: mediaInfos,
131
- popupElements: popupElements,
132
- fieldInfos: fieldInfos,
133
- expressionInfos: expressionInfos
134
- };
135
- }
136
- function setupStringAttribute(storageAttribute) {
137
- storageAttribute.ordering.unshift('attributeByteCounts');
138
- storageAttribute.header.push({
139
- property: 'attributeValuesByteCount',
140
- valueType: 'UInt32'
141
- });
142
- storageAttribute.attributeValues = {
143
- valueType: 'String',
144
- encoding: 'UTF-8',
145
- valuesPerElement: 1
146
- };
147
- storageAttribute.attributeByteCounts = {
148
- valueType: 'UInt32',
149
- valuesPerElement: 1
150
- };
151
- }
152
- function setupIdAttribute(storageAttribute) {
153
- storageAttribute.attributeValues = {
154
- valueType: 'Oid32',
155
- valuesPerElement: 1
156
- };
157
- }
158
- function setupDoubleAttribute(storageAttribute) {
159
- storageAttribute.attributeValues = {
160
- valueType: 'Float64',
161
- valuesPerElement: 1
162
- };
163
- }
164
- //# sourceMappingURL=feature-attributes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-attributes.js","names":["flattenPropertyTableByFeatureIds","featureIdsMap","propertyTable","resultPropertyTable","propertyName","properties","getPropertiesByFeatureIds","resultProperties","featureIdKey","property","push","checkPropertiesLength","featureIds","needFlatten","_i","_Object$values","Object","values","length","attribute","STRING_TYPE","SHORT_INT_TYPE","DOUBLE_TYPE","OBJECT_ID_TYPE","getAttributeType","key","_typeof2","default","Number","isInteger","createdStorageAttribute","attributeIndex","attributeType","storageAttribute","concat","name","ordering","header","valueType","attributeValues","valuesPerElement","setupIdAttribute","setupStringAttribute","setupDoubleAttribute","getFieldAttributeType","createFieldAttribute","fieldAttributeType","type","alias","createPopupInfo","title","mediaInfos","fieldInfos","popupElements","expressionInfos","fieldName","visible","isEditable","label","unshift","encoding","attributeByteCounts"],"sources":["../../../../src/i3s-converter/helpers/feature-attributes.ts"],"sourcesContent":["import type {FeatureTableJson} from '@loaders.gl/3d-tiles';\nimport {\n Attribute,\n AttributeStorageInfo,\n ESRIField,\n Field,\n FieldInfo,\n PopupInfo\n} from '@loaders.gl/i3s';\n\n/**\n * Takes attributes from property table based on featureIdsMap.\n * If there is no property value for particular featureId (index) the property will be null.\n * Example:\n * Initial data:\n * OBJECTID: {0: 0, 3: 33, 4: 333}\n * component: ['Windows', 'Frames', 'Wall', 'Roof', 'Skylight']\n * Result:\n * OBJECTID: [0, 33, 333]\n * component: ['Windows', 'Roof', 'Skylight']\n * @param featureIdsMap\n * @param propertyTable\n */\nexport function flattenPropertyTableByFeatureIds(\n featureIdsMap: Record<string, number>,\n propertyTable: FeatureTableJson\n): FeatureTableJson {\n const resultPropertyTable: FeatureTableJson = {};\n for (const propertyName in propertyTable) {\n const properties = propertyTable[propertyName];\n resultPropertyTable[propertyName] = getPropertiesByFeatureIds(properties, featureIdsMap);\n }\n\n return resultPropertyTable;\n}\n\n/**\n * Getting properties by featureId index\n * @param properties\n * @param featureIdsMap\n */\nfunction getPropertiesByFeatureIds(\n properties: unknown[],\n featureIdsMap: Record<string, number>\n): unknown[] {\n const resultProperties: unknown[] = [];\n\n if (properties) {\n for (const featureIdKey in featureIdsMap) {\n const property = properties[featureIdKey] || null;\n resultProperties.push(property);\n }\n }\n\n return resultProperties;\n}\n\n/**\n * Check that all attributes in propertyTable have the same length as FeatureIds.\n * If there are differencies between lengths we should flatten property table based on exiesting featureIds.\n * @param featureIds\n * @param propertyTable\n * @returns\n */\nexport function checkPropertiesLength(\n featureIds: number[],\n propertyTable: FeatureTableJson\n): boolean {\n let needFlatten = false;\n\n for (const attribute of Object.values(propertyTable)) {\n if (!featureIds || !attribute || featureIds.length !== attribute.length) {\n needFlatten = true;\n }\n }\n\n return needFlatten;\n}\n\n/** String data type name for feature attributes */\nconst STRING_TYPE = 'string';\n/** Integer data type name for feature attributes */\nconst SHORT_INT_TYPE = 'Int32';\n/** Double data type name for feature attributes */\nconst DOUBLE_TYPE = 'double';\n/** Type of attribute that is linked with feature ids */\nconst OBJECT_ID_TYPE = 'OBJECTID';\n/**\n * Get the attribute type for attributeStorageInfo https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param key - attribute's key\n * @param attribute - attribute taken from propertyTable\n */\nexport function getAttributeType(key: string, attribute: unknown): string {\n if (key === OBJECT_ID_TYPE) {\n return OBJECT_ID_TYPE;\n }\n if (typeof attribute === STRING_TYPE || typeof attribute === 'bigint') {\n return STRING_TYPE;\n } else if (typeof attribute === 'number') {\n return Number.isInteger(attribute) ? SHORT_INT_TYPE : DOUBLE_TYPE;\n }\n return STRING_TYPE;\n}\n\n/**\n * Generate storage attribute for map segmentation.\n * @param attributeIndex - order index of attribute (f_0, f_1 ...).\n * @param key - attribute key from propertyTable.\n * @param attributeType - attribute type.\n * @return Updated storageAttribute.\n */\nexport function createdStorageAttribute(\n attributeIndex: number,\n key: string,\n attributeType: Attribute\n): AttributeStorageInfo {\n const storageAttribute = {\n key: `f_${attributeIndex}`,\n name: key,\n ordering: ['attributeValues'],\n header: [{property: 'count', valueType: 'UInt32'}],\n attributeValues: {valueType: 'Int32', valuesPerElement: 1}\n };\n\n switch (attributeType) {\n case OBJECT_ID_TYPE:\n setupIdAttribute(storageAttribute);\n break;\n case STRING_TYPE:\n setupStringAttribute(storageAttribute);\n break;\n case DOUBLE_TYPE:\n setupDoubleAttribute(storageAttribute);\n break;\n case SHORT_INT_TYPE:\n break;\n default:\n setupStringAttribute(storageAttribute);\n }\n\n return storageAttribute;\n}\n\n/**\n * Find and return attribute type based on key form propertyTable.\n * @param attributeType\n */\nexport function getFieldAttributeType(attributeType: Attribute): ESRIField {\n switch (attributeType) {\n case OBJECT_ID_TYPE:\n return 'esriFieldTypeOID';\n case STRING_TYPE:\n return 'esriFieldTypeString';\n case SHORT_INT_TYPE:\n return 'esriFieldTypeInteger';\n case DOUBLE_TYPE:\n return 'esriFieldTypeDouble';\n default:\n return 'esriFieldTypeString';\n }\n}\n\n/**\n * Setup field attribute for map segmentation.\n * @param key - attribute for map segmentation.\n * @param fieldAttributeType - esri attribute type ('esriFieldTypeString' or 'esriFieldTypeOID').\n */\nexport function createFieldAttribute(key: string, fieldAttributeType: ESRIField): Field {\n return {\n name: key,\n type: fieldAttributeType,\n alias: key\n };\n}\n\n/**\n * Generate popup info to show metadata on the map.\n * @param propertyTable - table data with OBJECTID.\n * @return data for correct rendering of popup.\n */\nexport function createPopupInfo(propertyTable: FeatureTableJson): PopupInfo {\n const title = '{OBJECTID}';\n const mediaInfos = [];\n const fieldInfos: FieldInfo[] = [];\n const popupElements: {\n fieldInfos: FieldInfo[];\n type: string;\n }[] = [];\n const expressionInfos = [];\n\n for (const key in propertyTable) {\n fieldInfos.push({\n fieldName: key,\n visible: true,\n isEditable: false,\n label: key\n });\n }\n popupElements.push({\n fieldInfos,\n type: 'fields'\n });\n\n return {\n title,\n mediaInfos,\n popupElements,\n fieldInfos,\n expressionInfos\n };\n}\n\n/**\n * Setup storage attribute as string.\n * @param storageAttribute - attribute for map segmentation.\n */\nfunction setupStringAttribute(storageAttribute: AttributeStorageInfo): void {\n // @ts-expect-error\n storageAttribute.ordering.unshift('attributeByteCounts');\n storageAttribute.header.push({property: 'attributeValuesByteCount', valueType: 'UInt32'});\n storageAttribute.attributeValues = {\n valueType: 'String',\n encoding: 'UTF-8',\n valuesPerElement: 1\n };\n storageAttribute.attributeByteCounts = {\n valueType: 'UInt32',\n valuesPerElement: 1\n };\n}\n\n/**\n * Setup Id attribute for map segmentation.\n * @param storageAttribute - attribute for map segmentation .\n */\nfunction setupIdAttribute(storageAttribute: AttributeStorageInfo): void {\n storageAttribute.attributeValues = {\n valueType: 'Oid32',\n valuesPerElement: 1\n };\n}\n\n/**\n * Setup double attribute for map segmentation.\n * @param storageAttribute - attribute for map segmentation .\n */\nfunction setupDoubleAttribute(storageAttribute: AttributeStorageInfo): void {\n storageAttribute.attributeValues = {\n valueType: 'Float64',\n valuesPerElement: 1\n };\n}\n"],"mappings":"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"}