@loaders.gl/tile-converter 3.1.0-alpha.3 → 3.1.0-beta.2

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 (198) hide show
  1. package/bin/converter.js +1 -1
  2. package/dist/bundle.js +85947 -4
  3. package/dist/converter.min.js +292 -0
  4. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +267 -0
  5. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  6. package/dist/{3d-tiles-converter → es5/3d-tiles-converter}/helpers/b3dm-converter.d.ts +0 -0
  7. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +269 -0
  8. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  9. package/dist/{3d-tiles-converter → es5/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -0
  10. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -0
  11. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  12. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +40 -0
  13. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  14. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +48 -0
  15. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  16. package/dist/es5/bundle.js +7 -0
  17. package/dist/es5/bundle.js.map +1 -0
  18. package/dist/{deps-installer → es5/deps-installer}/deps-installer.d.ts +0 -0
  19. package/dist/es5/deps-installer/deps-installer.js +39 -0
  20. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  21. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +65 -0
  22. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  23. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +30 -0
  24. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  25. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +208 -0
  26. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  27. package/dist/{i3s-converter → es5/i3s-converter}/helpers/geometry-converter.d.ts +0 -0
  28. package/dist/es5/i3s-converter/helpers/geometry-converter.js +700 -0
  29. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  30. package/dist/es5/i3s-converter/helpers/node-debug.js +103 -0
  31. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  32. package/dist/{i3s-converter → es5/i3s-converter}/helpers/node-pages.d.ts +0 -0
  33. package/dist/es5/i3s-converter/helpers/node-pages.js +150 -0
  34. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  35. package/dist/es5/i3s-converter/i3s-converter.js +915 -0
  36. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  37. package/dist/es5/i3s-converter/json-templates/layers.js +203 -0
  38. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  39. package/dist/es5/i3s-converter/json-templates/metadata.js +29 -0
  40. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  41. package/dist/es5/i3s-converter/json-templates/node.js +91 -0
  42. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  43. package/dist/es5/i3s-converter/json-templates/scene-server.js +35 -0
  44. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  45. package/dist/es5/i3s-converter/json-templates/shared-resources.js +141 -0
  46. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  47. package/dist/es5/i3s-converter/json-templates/store.js +105 -0
  48. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  49. package/dist/es5/i3s-server/app.js +23 -0
  50. package/dist/es5/i3s-server/app.js.map +1 -0
  51. package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  52. package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  53. package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  54. package/dist/es5/i3s-server/controllers/index-controller.js +33 -0
  55. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  56. package/dist/es5/i3s-server/routes/index.js +22 -0
  57. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  58. package/dist/es5/index.js +40 -0
  59. package/dist/es5/index.js.map +1 -0
  60. package/dist/{lib → es5/lib}/geoid-height-model.d.ts +0 -0
  61. package/dist/es5/lib/geoid-height-model.js +149 -0
  62. package/dist/es5/lib/geoid-height-model.js.map +1 -0
  63. package/dist/{lib → es5/lib}/pgm-parser.d.ts +0 -0
  64. package/dist/es5/lib/pgm-parser.js +192 -0
  65. package/dist/es5/lib/pgm-parser.js.map +1 -0
  66. package/dist/es5/lib/utils/compress-util.js +202 -0
  67. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  68. package/dist/{lib → es5/lib}/utils/compress-utils.d.ts +0 -0
  69. package/dist/{lib → es5/lib}/utils/file-utils.d.ts +0 -0
  70. package/dist/es5/lib/utils/file-utils.js +59 -0
  71. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  72. package/dist/{lib → es5/lib}/utils/lod-conversion-utils.d.ts +0 -0
  73. package/dist/es5/lib/utils/lod-conversion-utils.js +52 -0
  74. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  75. package/dist/{lib → es5/lib}/utils/statistic-utills.d.ts +0 -0
  76. package/dist/es5/lib/utils/statistic-utills.js +85 -0
  77. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  78. package/dist/es5/pgm-loader.js +24 -0
  79. package/dist/es5/pgm-loader.js.map +1 -0
  80. package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/3d-tiles-converter.js +19 -13
  81. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  82. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.d.ts +23 -0
  83. package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/helpers/b3dm-converter.js +19 -8
  84. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  85. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +16 -0
  86. package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.js +0 -0
  87. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  88. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  89. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  90. package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/json-templates/tileset.js +0 -0
  91. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  92. package/dist/esm/bundle.js +5 -0
  93. package/dist/esm/bundle.js.map +1 -0
  94. package/dist/esm/deps-installer/deps-installer.d.ts +10 -0
  95. package/dist/{deps-installer → esm/deps-installer}/deps-installer.js +0 -0
  96. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  97. package/dist/{i3s-converter → esm/i3s-converter}/helpers/coordinate-converter.js +0 -0
  98. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  99. package/dist/{i3s-converter → esm/i3s-converter}/helpers/create-scene-server-path.js +0 -0
  100. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  101. package/dist/{i3s-converter → esm/i3s-converter}/helpers/geometry-attributes.js +0 -0
  102. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  103. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +40 -0
  104. package/dist/{i3s-converter → esm/i3s-converter}/helpers/geometry-converter.js +29 -31
  105. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  106. package/dist/{i3s-converter → esm/i3s-converter}/helpers/node-debug.js +2 -2
  107. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  108. package/dist/esm/i3s-converter/helpers/node-pages.d.ts +144 -0
  109. package/dist/{i3s-converter → esm/i3s-converter}/helpers/node-pages.js +2 -2
  110. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  111. package/dist/{i3s-converter → esm/i3s-converter}/i3s-converter.js +50 -31
  112. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  113. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/layers.js +0 -0
  114. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  115. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/metadata.js +1 -1
  116. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  117. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/node.js +0 -0
  118. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  119. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/scene-server.js +1 -1
  120. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  121. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/shared-resources.js +2 -2
  122. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  123. package/dist/{i3s-converter → esm/i3s-converter}/json-templates/store.js +2 -2
  124. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  125. package/dist/{i3s-server → esm/i3s-server}/app.js +0 -0
  126. package/dist/esm/i3s-server/app.js.map +1 -0
  127. package/dist/esm/i3s-server/bin/www +102 -0
  128. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  129. package/dist/esm/i3s-server/certs/key.pem +27 -0
  130. package/dist/{i3s-server → esm/i3s-server}/controllers/index-controller.js +2 -2
  131. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  132. package/dist/{i3s-server → esm/i3s-server}/routes/index.js +0 -0
  133. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  134. package/dist/{index.js → esm/index.js} +0 -0
  135. package/dist/esm/index.js.map +1 -0
  136. package/dist/esm/lib/geoid-height-model.d.ts +41 -0
  137. package/dist/{lib → esm/lib}/geoid-height-model.js +0 -0
  138. package/dist/esm/lib/geoid-height-model.js.map +1 -0
  139. package/dist/esm/lib/pgm-parser.d.ts +14 -0
  140. package/dist/{lib → esm/lib}/pgm-parser.js +0 -0
  141. package/dist/esm/lib/pgm-parser.js.map +1 -0
  142. package/dist/{lib → esm/lib}/utils/compress-util.js +13 -13
  143. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  144. package/dist/esm/lib/utils/compress-utils.d.ts +53 -0
  145. package/dist/esm/lib/utils/file-utils.d.ts +43 -0
  146. package/dist/{lib → esm/lib}/utils/file-utils.js +1 -1
  147. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  148. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +32 -0
  149. package/dist/{lib → esm/lib}/utils/lod-conversion-utils.js +0 -0
  150. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  151. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  152. package/dist/{lib → esm/lib}/utils/statistic-utills.js +5 -5
  153. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  154. package/dist/{pgm-loader.js → esm/pgm-loader.js} +1 -1
  155. package/dist/esm/pgm-loader.js.map +1 -0
  156. package/package.json +24 -21
  157. package/src/3d-tiles-converter/3d-tiles-converter.ts +4 -2
  158. package/src/3d-tiles-converter/helpers/b3dm-converter.js +35 -7
  159. package/src/3d-tiles-converter/helpers/texture-atlas.ts +55 -0
  160. package/src/i3s-converter/helpers/geometry-converter.js +21 -22
  161. package/src/i3s-converter/i3s-converter.ts +32 -7
  162. package/src/i3s-converter/json-templates/metadata.js +1 -1
  163. package/src/i3s-converter/json-templates/scene-server.js +1 -1
  164. package/src/i3s-converter/json-templates/store.js +2 -2
  165. package/src/i3s-server/controllers/index-controller.js +1 -1
  166. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  167. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  168. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  169. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  170. package/dist/bundle.js.map +0 -1
  171. package/dist/deps-installer/deps-installer.js.map +0 -1
  172. package/dist/dist.min.js +0 -94
  173. package/dist/dist.min.js.map +0 -1
  174. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  175. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  176. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  177. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  178. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  179. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  180. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  181. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  182. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  183. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  184. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  185. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  186. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  187. package/dist/i3s-server/app.js.map +0 -1
  188. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  189. package/dist/i3s-server/routes/index.js.map +0 -1
  190. package/dist/index.js.map +0 -1
  191. package/dist/lib/geoid-height-model.js.map +0 -1
  192. package/dist/lib/pgm-parser.js.map +0 -1
  193. package/dist/lib/utils/compress-util.js.map +0 -1
  194. package/dist/lib/utils/file-utils.js.map +0 -1
  195. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  196. package/dist/lib/utils/statistic-utills.js.map +0 -1
  197. package/dist/pgm-loader.js.map +0 -1
  198. package/dist/scripts/converter.js +0 -274
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SHARED_RESOURCES_TEMPLATE = void 0;
9
+
10
+ var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
11
+
12
+ const MATERIAL_DEFINITION_INFO_PARAMS = {
13
+ renderMode: {
14
+ path: 'renderMode',
15
+ default: 'solid'
16
+ },
17
+ shininess: {
18
+ path: 'shininess',
19
+ default: 1
20
+ },
21
+ reflectivity: {
22
+ path: 'reflectivity',
23
+ default: 0
24
+ },
25
+ ambient: {
26
+ path: 'ambient',
27
+ default: [1, 1, 1, 1]
28
+ },
29
+ diffuse: {
30
+ path: 'diffuse',
31
+ default: [1, 1, 1, 1]
32
+ },
33
+ specular: {
34
+ path: 'specular',
35
+ default: [0, 0, 0, 0]
36
+ },
37
+ useVertexColorAlpha: {
38
+ path: 'useVertexColorAlpha',
39
+ default: false
40
+ },
41
+ vertexRegions: {
42
+ path: 'vertexRegions',
43
+ default: false
44
+ },
45
+ vertexColors: {
46
+ path: 'vertexColors',
47
+ default: true
48
+ }
49
+ };
50
+ const MATERIAL_DEFINITION_INFO = {
51
+ name: {
52
+ path: 'name',
53
+ default: 'standard'
54
+ },
55
+ type: {
56
+ path: 'type',
57
+ default: 'standard'
58
+ },
59
+ params: {
60
+ path: 'params',
61
+ transform: (val, thisObject, originalObject) => (0, _jsonMapTransform.default)(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)
62
+ }
63
+ };
64
+ const TEXTURE_DEFINITION_IMAGE = {
65
+ id: {
66
+ path: 'id'
67
+ },
68
+ size: {
69
+ path: 'size'
70
+ },
71
+ href: {
72
+ path: 'href',
73
+ default: ['../textures/0']
74
+ },
75
+ length: {
76
+ path: 'length'
77
+ }
78
+ };
79
+ const TEXTURE_DEFINITION_INFO = {
80
+ encoding: {
81
+ path: 'encoding'
82
+ },
83
+ wrap: {
84
+ path: 'wrap',
85
+ default: ['none']
86
+ },
87
+ atlas: {
88
+ path: 'atlas',
89
+ default: false
90
+ },
91
+ uvSet: {
92
+ path: 'uvSet',
93
+ default: 'uv0'
94
+ },
95
+ channels: {
96
+ path: 'channels',
97
+ default: 'rgb'
98
+ },
99
+ images: {
100
+ path: 'images',
101
+ transform: (val, thisObject, originalObject) => val.map(image => (0, _jsonMapTransform.default)(image, TEXTURE_DEFINITION_IMAGE))
102
+ }
103
+ };
104
+ const SHARED_RESOURCES_TEMPLATE = {
105
+ materialDefinitions: {
106
+ path: 'materialDefinitionInfos',
107
+ transform: transfromMaterialDefinitions
108
+ },
109
+ textureDefinitions: {
110
+ path: 'textureDefinitionInfos',
111
+ transform: transfromTextureDefinitions
112
+ }
113
+ };
114
+ exports.SHARED_RESOURCES_TEMPLATE = SHARED_RESOURCES_TEMPLATE;
115
+
116
+ function transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {
117
+ const result = {};
118
+
119
+ for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {
120
+ result["Mat".concat(originalObject.nodePath).concat(index)] = (0, _jsonMapTransform.default)(materialDefinitionInfo, MATERIAL_DEFINITION_INFO);
121
+ }
122
+
123
+ return result;
124
+ }
125
+
126
+ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, originalObject) {
127
+ if (!textureDefinitionInfos) {
128
+ return null;
129
+ }
130
+
131
+ const result = {};
132
+
133
+ for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {
134
+ const imageIndex = "".concat(originalObject.nodePath).concat(index);
135
+ textureDefinitionInfo.imageIndex = imageIndex;
136
+ result[imageIndex] = (0, _jsonMapTransform.default)(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);
137
+ }
138
+
139
+ return result;
140
+ }
141
+ //# sourceMappingURL=shared-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/i3s-converter/json-templates/shared-resources.js"],"names":["MATERIAL_DEFINITION_INFO_PARAMS","renderMode","path","default","shininess","reflectivity","ambient","diffuse","specular","useVertexColorAlpha","vertexRegions","vertexColors","MATERIAL_DEFINITION_INFO","name","type","params","transform","val","thisObject","originalObject","TEXTURE_DEFINITION_IMAGE","id","size","href","length","TEXTURE_DEFINITION_INFO","encoding","wrap","atlas","uvSet","channels","images","map","image","SHARED_RESOURCES_TEMPLATE","materialDefinitions","transfromMaterialDefinitions","textureDefinitions","transfromTextureDefinitions","materialDefinitionInfos","result","index","materialDefinitionInfo","entries","nodePath","textureDefinitionInfos","textureDefinitionInfo","imageIndex"],"mappings":"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","sourcesContent":["import transform from 'json-map-transform';\n\nconst MATERIAL_DEFINITION_INFO_PARAMS = {\n renderMode: {\n path: 'renderMode',\n default: 'solid'\n },\n shininess: {\n path: 'shininess',\n default: 1\n },\n reflectivity: {\n path: 'reflectivity',\n default: 0\n },\n ambient: {\n path: 'ambient',\n default: [1, 1, 1, 1]\n },\n diffuse: {\n path: 'diffuse',\n default: [1, 1, 1, 1]\n },\n specular: {\n path: 'specular',\n default: [0, 0, 0, 0]\n },\n useVertexColorAlpha: {\n path: 'useVertexColorAlpha',\n default: false\n },\n vertexRegions: {\n path: 'vertexRegions',\n default: false\n },\n vertexColors: {\n path: 'vertexColors',\n default: true\n }\n};\n\nconst MATERIAL_DEFINITION_INFO = {\n name: {\n path: 'name',\n default: 'standard'\n },\n type: {\n path: 'type',\n default: 'standard'\n },\n params: {\n path: 'params',\n transform: (val, thisObject, originalObject) =>\n transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)\n }\n};\n\nconst TEXTURE_DEFINITION_IMAGE = {\n id: {\n path: 'id'\n },\n size: {\n path: 'size'\n },\n href: {\n path: 'href',\n default: ['../textures/0']\n },\n length: {\n path: 'length'\n }\n};\n\nconst TEXTURE_DEFINITION_INFO = {\n encoding: {\n path: 'encoding'\n },\n wrap: {\n path: 'wrap',\n default: ['none']\n },\n atlas: {\n path: 'atlas',\n default: false\n },\n uvSet: {\n path: 'uvSet',\n default: 'uv0'\n },\n channels: {\n path: 'channels',\n default: 'rgb'\n },\n images: {\n path: 'images',\n transform: (val, thisObject, originalObject) =>\n val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE))\n }\n};\n\nexport const SHARED_RESOURCES_TEMPLATE = {\n materialDefinitions: {\n path: 'materialDefinitionInfos',\n transform: transfromMaterialDefinitions\n },\n textureDefinitions: {\n path: 'textureDefinitionInfos',\n transform: transfromTextureDefinitions\n }\n};\n\nfunction transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {\n const result = {};\n for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {\n result[`Mat${originalObject.nodePath}${index}`] = transform(\n materialDefinitionInfo,\n MATERIAL_DEFINITION_INFO\n );\n }\n return result;\n}\n\nfunction transfromTextureDefinitions(textureDefinitionInfos, thisObject, originalObject) {\n if (!textureDefinitionInfos) {\n return null;\n }\n const result = {};\n for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {\n const imageIndex = `${originalObject.nodePath}${index}`;\n textureDefinitionInfo.imageIndex = imageIndex;\n result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);\n }\n return result;\n}\n"],"file":"shared-resources.js"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STORE = void 0;
7
+ const STORE = {
8
+ id: {
9
+ path: 'id',
10
+ transform: val => val.toUpperCase()
11
+ },
12
+ profile: {
13
+ path: 'profile',
14
+ default: 'meshpyramids'
15
+ },
16
+ version: {
17
+ path: 'version',
18
+ default: '1.8'
19
+ },
20
+ resourcePattern: {
21
+ path: 'resourcePattern',
22
+ default: ['3dNodeIndexDocument', 'Attributes', 'SharedResource', 'Geometry']
23
+ },
24
+ rootNode: {
25
+ path: 'rootNode',
26
+ default: './nodes/root'
27
+ },
28
+ extent: {
29
+ path: 'extent'
30
+ },
31
+ indexCRS: {
32
+ path: 'indexCRS',
33
+ default: 'http://www.opengis.net/def/crs/EPSG/0/4326'
34
+ },
35
+ vertexCRS: {
36
+ path: 'vertexCRS',
37
+ default: 'http://www.opengis.net/def/crs/EPSG/0/4326'
38
+ },
39
+ normalReferenceFrame: {
40
+ path: 'normalReferenceFrame',
41
+ default: 'east-north-up'
42
+ },
43
+ attributeEncoding: {
44
+ path: 'attributeEncoding',
45
+ default: 'application/octet-stream; version=1.6'
46
+ },
47
+ textureEncoding: {
48
+ path: 'textureEncoding',
49
+ default: ['image/jpeg', 'image/ktx2']
50
+ },
51
+ lodType: {
52
+ path: 'lodType',
53
+ default: 'MeshPyramid'
54
+ },
55
+ lodModel: {
56
+ path: 'lodModel',
57
+ default: 'node-switching'
58
+ },
59
+ defaultGeometrySchema: {
60
+ path: 'defaultGeometrySchema',
61
+ default: {
62
+ geometryType: 'triangles',
63
+ header: [{
64
+ property: 'vertexCount',
65
+ type: 'UInt32'
66
+ }, {
67
+ property: 'featureCount',
68
+ type: 'UInt32'
69
+ }],
70
+ topology: 'PerAttributeArray',
71
+ ordering: ['position', 'normal', 'uv0', 'color'],
72
+ vertexAttributes: {
73
+ position: {
74
+ valueType: 'Float32',
75
+ valuesPerElement: 3
76
+ },
77
+ normal: {
78
+ valueType: 'Float32',
79
+ valuesPerElement: 3
80
+ },
81
+ uv0: {
82
+ valueType: 'Float32',
83
+ valuesPerElement: 2
84
+ },
85
+ color: {
86
+ valueType: 'UInt8',
87
+ valuesPerElement: 4
88
+ }
89
+ },
90
+ featureAttributeOrder: ['id', 'faceRange'],
91
+ featureAttributes: {
92
+ id: {
93
+ valueType: 'UInt64',
94
+ valuesPerElement: 1
95
+ },
96
+ faceRange: {
97
+ valueType: 'UInt32',
98
+ valuesPerElement: 2
99
+ }
100
+ }
101
+ }
102
+ }
103
+ };
104
+ exports.STORE = STORE;
105
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/i3s-converter/json-templates/store.js"],"names":["STORE","id","path","transform","val","toUpperCase","profile","default","version","resourcePattern","rootNode","extent","indexCRS","vertexCRS","normalReferenceFrame","attributeEncoding","textureEncoding","lodType","lodModel","defaultGeometrySchema","geometryType","header","property","type","topology","ordering","vertexAttributes","position","valueType","valuesPerElement","normal","uv0","color","featureAttributeOrder","featureAttributes","faceRange"],"mappings":"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","sourcesContent":["export const STORE = {\n id: {\n path: 'id',\n transform: (val) => val.toUpperCase()\n },\n profile: {\n path: 'profile',\n default: 'meshpyramids'\n },\n version: {\n path: 'version',\n default: '1.8'\n },\n resourcePattern: {\n path: 'resourcePattern',\n default: ['3dNodeIndexDocument', 'Attributes', 'SharedResource', 'Geometry']\n },\n rootNode: {\n path: 'rootNode',\n default: './nodes/root'\n },\n extent: {\n path: 'extent'\n },\n indexCRS: {\n path: 'indexCRS',\n default: 'http://www.opengis.net/def/crs/EPSG/0/4326'\n },\n vertexCRS: {\n path: 'vertexCRS',\n default: 'http://www.opengis.net/def/crs/EPSG/0/4326'\n },\n normalReferenceFrame: {\n path: 'normalReferenceFrame',\n default: 'east-north-up'\n },\n attributeEncoding: {\n path: 'attributeEncoding',\n default: 'application/octet-stream; version=1.6'\n },\n textureEncoding: {\n path: 'textureEncoding',\n default: ['image/jpeg', 'image/ktx2']\n },\n lodType: {\n path: 'lodType',\n default: 'MeshPyramid'\n },\n lodModel: {\n path: 'lodModel',\n default: 'node-switching'\n },\n defaultGeometrySchema: {\n path: 'defaultGeometrySchema',\n default: {\n geometryType: 'triangles',\n header: [\n {\n property: 'vertexCount',\n type: 'UInt32'\n },\n {\n property: 'featureCount',\n type: 'UInt32'\n }\n ],\n topology: 'PerAttributeArray',\n ordering: ['position', 'normal', 'uv0', 'color'],\n vertexAttributes: {\n position: {\n valueType: 'Float32',\n valuesPerElement: 3\n },\n normal: {\n valueType: 'Float32',\n valuesPerElement: 3\n },\n uv0: {\n valueType: 'Float32',\n valuesPerElement: 2\n },\n color: {\n valueType: 'UInt8',\n valuesPerElement: 4\n }\n },\n featureAttributeOrder: ['id', 'faceRange'],\n featureAttributes: {\n id: {\n valueType: 'UInt64',\n valuesPerElement: 1\n },\n faceRange: {\n valueType: 'UInt32',\n valuesPerElement: 2\n }\n }\n }\n }\n};\n"],"file":"store.js"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ const express = require('express');
4
+
5
+ const path = require('path');
6
+
7
+ const logger = require('morgan');
8
+
9
+ const cors = require('cors');
10
+
11
+ const indexRouter = require('./routes/index');
12
+
13
+ const app = express();
14
+ app.use(logger('dev'));
15
+ app.use(express.json());
16
+ app.use(express.urlencoded({
17
+ extended: false
18
+ }));
19
+ app.use(express.static(path.join(__dirname, 'public')));
20
+ app.use(cors());
21
+ app.use('/', indexRouter);
22
+ module.exports = app;
23
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/i3s-server/app.js"],"names":["express","require","path","logger","cors","indexRouter","app","use","json","urlencoded","extended","static","join","__dirname","module","exports"],"mappings":";;AAAA,MAAMA,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,MAAMC,IAAI,GAAGD,OAAO,CAAC,MAAD,CAApB;;AACA,MAAME,MAAM,GAAGF,OAAO,CAAC,QAAD,CAAtB;;AACA,MAAMG,IAAI,GAAGH,OAAO,CAAC,MAAD,CAApB;;AAEA,MAAMI,WAAW,GAAGJ,OAAO,CAAC,gBAAD,CAA3B;;AAEA,MAAMK,GAAG,GAAGN,OAAO,EAAnB;AAEAM,GAAG,CAACC,GAAJ,CAAQJ,MAAM,CAAC,KAAD,CAAd;AACAG,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACQ,IAAR,EAAR;AACAF,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACS,UAAR,CAAmB;AAACC,EAAAA,QAAQ,EAAE;AAAX,CAAnB,CAAR;AACAJ,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACW,MAAR,CAAeT,IAAI,CAACU,IAAL,CAAUC,SAAV,EAAqB,QAArB,CAAf,CAAR;AACAP,GAAG,CAACC,GAAJ,CAAQH,IAAI,EAAZ;AAEAE,GAAG,CAACC,GAAJ,CAAQ,GAAR,EAAaF,WAAb;AAEAS,MAAM,CAACC,OAAP,GAAiBT,GAAjB","sourcesContent":["const express = require('express');\nconst path = require('path');\nconst logger = require('morgan');\nconst cors = require('cors');\n\nconst indexRouter = require('./routes/index');\n\nconst app = express();\n\napp.use(logger('dev'));\napp.use(express.json());\napp.use(express.urlencoded({extended: false}));\napp.use(express.static(path.join(__dirname, 'public')));\napp.use(cors());\n\napp.use('/', indexRouter);\n\nmodule.exports = app;\n"],"file":"app.js"}
File without changes
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ const path = require('path');
4
+
5
+ const fs = require('fs');
6
+
7
+ const {
8
+ promises
9
+ } = fs;
10
+ const I3S_LAYER_PATH = process.env.I3sLayerPath || '';
11
+ const FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH);
12
+
13
+ async function getFileNameByUrl(url) {
14
+ const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];
15
+
16
+ for (const ext of extensions) {
17
+ const fileName = "".concat(FULL_LAYER_PATH).concat(url, "/index.").concat(ext);
18
+
19
+ try {
20
+ await promises.access(fileName);
21
+ return fileName;
22
+ } catch {
23
+ continue;
24
+ }
25
+ }
26
+
27
+ return null;
28
+ }
29
+
30
+ module.exports = {
31
+ getFileNameByUrl
32
+ };
33
+ //# sourceMappingURL=index-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/i3s-server/controllers/index-controller.js"],"names":["path","require","fs","promises","I3S_LAYER_PATH","process","env","I3sLayerPath","FULL_LAYER_PATH","join","cwd","getFileNameByUrl","url","extensions","ext","fileName","access","module","exports"],"mappings":";;AAAA,MAAMA,IAAI,GAAGC,OAAO,CAAC,MAAD,CAApB;;AACA,MAAMC,EAAE,GAAGD,OAAO,CAAC,IAAD,CAAlB;;AAEA,MAAM;AAACE,EAAAA;AAAD,IAAaD,EAAnB;AAEA,MAAME,cAAc,GAAGC,OAAO,CAACC,GAAR,CAAYC,YAAZ,IAA4B,EAAnD;AACA,MAAMC,eAAe,GAAGR,IAAI,CAACS,IAAL,CAAUJ,OAAO,CAACK,GAAR,EAAV,EAAyBN,cAAzB,CAAxB;;AAEA,eAAeO,gBAAf,CAAgCC,GAAhC,EAAqC;AACnC,QAAMC,UAAU,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,SAAtC,EAAiD,MAAjD,CAAnB;;AACA,OAAK,MAAMC,GAAX,IAAkBD,UAAlB,EAA8B;AAC5B,UAAME,QAAQ,aAAMP,eAAN,SAAwBI,GAAxB,oBAAqCE,GAArC,CAAd;;AACA,QAAI;AACF,YAAMX,QAAQ,CAACa,MAAT,CAAgBD,QAAhB,CAAN;AACA,aAAOA,QAAP;AACD,KAHD,CAGE,MAAM;AACN;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEDE,MAAM,CAACC,OAAP,GAAiB;AACfP,EAAAA;AADe,CAAjB","sourcesContent":["const path = require('path');\nconst fs = require('fs');\n\nconst {promises} = fs;\n\nconst I3S_LAYER_PATH = process.env.I3sLayerPath || ''; // eslint-disable-line no-process-env, no-undef\nconst FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH); // eslint-disable-line no-undef\n\nasync function getFileNameByUrl(url) {\n const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];\n for (const ext of extensions) {\n const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;\n try {\n await promises.access(fileName);\n return fileName;\n } catch {\n continue; // eslint-disable-line no-continue\n }\n }\n return null;\n}\n\nmodule.exports = {\n getFileNameByUrl\n};\n"],"file":"index-controller.js"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ const express = require('express');
4
+
5
+ const router = express.Router();
6
+
7
+ const {
8
+ getFileNameByUrl
9
+ } = require('../controllers/index-controller');
10
+
11
+ router.get('*', async function (req, res, next) {
12
+ const fileName = await getFileNameByUrl(req.path);
13
+
14
+ if (fileName) {
15
+ res.sendFile(fileName);
16
+ } else {
17
+ res.status(404);
18
+ res.send('File not found');
19
+ }
20
+ });
21
+ module.exports = router;
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/i3s-server/routes/index.js"],"names":["express","require","router","Router","getFileNameByUrl","get","req","res","next","fileName","path","sendFile","status","send","module","exports"],"mappings":";;AAAA,MAAMA,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,MAAMC,MAAM,GAAGF,OAAO,CAACG,MAAR,EAAf;;AACA,MAAM;AAACC,EAAAA;AAAD,IAAqBH,OAAO,CAAC,iCAAD,CAAlC;;AAGAC,MAAM,CAACG,GAAP,CAAW,GAAX,EAAgB,gBAAgBC,GAAhB,EAAqBC,GAArB,EAA0BC,IAA1B,EAAgC;AAC9C,QAAMC,QAAQ,GAAG,MAAML,gBAAgB,CAACE,GAAG,CAACI,IAAL,CAAvC;;AACA,MAAID,QAAJ,EAAc;AACZF,IAAAA,GAAG,CAACI,QAAJ,CAAaF,QAAb;AACD,GAFD,MAEO;AACLF,IAAAA,GAAG,CAACK,MAAJ,CAAW,GAAX;AACAL,IAAAA,GAAG,CAACM,IAAJ,CAAS,gBAAT;AACD;AACF,CARD;AAUAC,MAAM,CAACC,OAAP,GAAiBb,MAAjB","sourcesContent":["const express = require('express');\nconst router = express.Router();\nconst {getFileNameByUrl} = require('../controllers/index-controller');\n\n/* GET home page. */\nrouter.get('*', async function (req, res, next) {\n const fileName = await getFileNameByUrl(req.path);\n if (fileName) {\n res.sendFile(fileName);\n } else {\n res.status(404);\n res.send('File not found');\n }\n});\n\nmodule.exports = router;\n"],"file":"index.js"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "I3SConverter", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _i3sConverter.default;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "NodePages", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _nodePages.default;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "Tiles3DConverter", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _dTilesConverter.default;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "DepsInstaller", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _depsInstaller.DepsInstaller;
30
+ }
31
+ });
32
+
33
+ var _i3sConverter = _interopRequireDefault(require("./i3s-converter/i3s-converter"));
34
+
35
+ var _nodePages = _interopRequireDefault(require("./i3s-converter/helpers/node-pages"));
36
+
37
+ var _dTilesConverter = _interopRequireDefault(require("./3d-tiles-converter/3d-tiles-converter"));
38
+
39
+ var _depsInstaller = require("./deps-installer/deps-installer");
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA","sourcesContent":["export {default as I3SConverter} from './i3s-converter/i3s-converter';\nexport {default as NodePages} from './i3s-converter/helpers/node-pages';\n\nexport {default as Tiles3DConverter} from './3d-tiles-converter/3d-tiles-converter';\n\nexport {DepsInstaller} from './deps-installer/deps-installer';\n"],"file":"index.js"}
File without changes
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GeoidHeightModel = void 0;
7
+ const c0_ = 240;
8
+ const c3_ = [9, -18, -88, 0, 96, 90, 0, 0, -60, -20, -9, 18, 8, 0, -96, 30, 0, 0, 60, -20, 9, -88, -18, 90, 96, 0, -20, -60, 0, 0, 186, -42, -42, -150, -96, -150, 60, 60, 60, 60, 54, 162, -78, 30, -24, -90, -60, 60, -60, 60, -9, -32, 18, 30, 24, 0, 20, -60, 0, 0, -9, 8, 18, 30, -96, 0, -20, 60, 0, 0, 54, -78, 162, -90, -24, 30, 60, -60, 60, -60, -54, 78, 78, 90, 144, 90, -60, -60, -60, -60, 9, -8, -18, -30, -24, 0, 20, 60, 0, 0, -9, 18, -32, 0, 24, 30, 0, 0, -60, 20, 9, -18, -8, 0, -24, -30, 0, 0, 60, 20];
9
+ const c0n_ = 372;
10
+ const c3n_ = [0, 0, -131, 0, 138, 144, 0, 0, -102, -31, 0, 0, 7, 0, -138, 42, 0, 0, 102, -31, 62, 0, -31, 0, 0, -62, 0, 0, 0, 31, 124, 0, -62, 0, 0, -124, 0, 0, 0, 62, 124, 0, -62, 0, 0, -124, 0, 0, 0, 62, 62, 0, -31, 0, 0, -62, 0, 0, 0, 31, 0, 0, 45, 0, -183, -9, 0, 93, 18, 0, 0, 0, 216, 0, 33, 87, 0, -93, 12, -93, 0, 0, 156, 0, 153, 99, 0, -93, -12, -93, 0, 0, -45, 0, -3, 9, 0, 93, -18, 0, 0, 0, -55, 0, 48, 42, 0, 0, -84, 31, 0, 0, -7, 0, -48, -42, 0, 0, 84, 31];
11
+ const c0s_ = 372;
12
+ const c3s_ = [18, -36, -122, 0, 120, 135, 0, 0, -84, -31, -18, 36, -2, 0, -120, 51, 0, 0, 84, -31, 36, -165, -27, 93, 147, -9, 0, -93, 18, 0, 210, 45, -111, -93, -57, -192, 0, 93, 12, 93, 162, 141, -75, -93, -129, -180, 0, 93, -12, 93, -36, -21, 27, 93, 39, 9, 0, -93, -18, 0, 0, 0, 62, 0, 0, 31, 0, 0, 0, -31, 0, 0, 124, 0, 0, 62, 0, 0, 0, -62, 0, 0, 124, 0, 0, 62, 0, 0, 0, -62, 0, 0, 62, 0, 0, 31, 0, 0, 0, -31, -18, 36, -64, 0, 66, 51, 0, 0, -102, 31, 18, -36, 2, 0, -66, -51, 0, 0, 102, 31];
13
+ const stencilsize_ = 12;
14
+ const nterms_ = (3 + 1) * (3 + 2) / 2;
15
+ const PIXEL_SIZE = 2;
16
+
17
+ class GeoidHeightModel {
18
+ constructor(options) {
19
+ this.options = options;
20
+ this._v00 = 0;
21
+ this._v01 = 0;
22
+ this._v10 = 0;
23
+ this._v11 = 0;
24
+ this._t = [];
25
+ this._ix = this.options._width;
26
+ this._iy = this.options._height;
27
+ }
28
+
29
+ getHeight(lat, lon) {
30
+ lat = Math.abs(lat) > 90 ? NaN : lat;
31
+
32
+ if (isNaN(lat) || isNaN(lon)) {
33
+ return NaN;
34
+ }
35
+
36
+ const rem = _remainder(lon, 360);
37
+
38
+ lon = rem !== -180 ? rem : 180;
39
+ let fx = lon * this.options._rlonres;
40
+ let fy = -lat * this.options._rlatres;
41
+ let ix = Math.floor(fx);
42
+ let iy = Math.min(Math.round((this.options._height - 1) / 2 - 1), Math.floor(fy));
43
+ fx -= ix;
44
+ fy -= iy;
45
+ iy += (this.options._height - 1) / 2;
46
+ ix += ix < 0 ? this.options._width : ix >= this.options._width ? -this.options._width : 0;
47
+ let v00 = 0;
48
+ let v01 = 0;
49
+ let v10 = 0;
50
+ let v11 = 0;
51
+ let t = new Array(nterms_);
52
+
53
+ if (!(ix === this._ix && iy === this._iy)) {
54
+ if (!this.options.cubic) {
55
+ v00 = this._rawval(ix, iy);
56
+ v01 = this._rawval(ix + 1, iy);
57
+ v10 = this._rawval(ix, iy + 1);
58
+ v11 = this._rawval(ix + 1, iy + 1);
59
+ } else {
60
+ const v = [this._rawval(ix, iy - 1), this._rawval(ix + 1, iy - 1), this._rawval(ix - 1, iy), this._rawval(ix, iy), this._rawval(ix + 1, iy), this._rawval(ix + 2, iy), this._rawval(ix - 1, iy + 1), this._rawval(ix, iy + 1), this._rawval(ix + 1, iy + 1), this._rawval(ix + 2, iy + 1), this._rawval(ix, iy + 2), this._rawval(ix + 1, iy + 2)];
61
+ let c3x = c3n_;
62
+
63
+ if (iy !== 0) {
64
+ c3x = iy === this.options._height - 2 ? c3s_ : c3_;
65
+ }
66
+
67
+ let c0x = c0n_;
68
+
69
+ if (iy !== 0) {
70
+ c0x = iy === this.options._height - 2 ? c0s_ : c0_;
71
+ }
72
+
73
+ for (let i = 0; i < nterms_; ++i) {
74
+ t[i] = 0;
75
+
76
+ for (let j = 0; j < stencilsize_; ++j) {
77
+ t[i] += v[j] * c3x[nterms_ * j + i];
78
+ }
79
+
80
+ t[i] /= c0x;
81
+ }
82
+ }
83
+ } else if (!this.options.cubic) {
84
+ v00 = this._v00;
85
+ v01 = this._v01;
86
+ v10 = this._v10;
87
+ v11 = this._v11;
88
+ } else {
89
+ t = this._t;
90
+ }
91
+
92
+ if (!this.options.cubic) {
93
+ const a = (1 - fx) * v00 + fx * v01;
94
+ const b = (1 - fx) * v10 + fx * v11;
95
+ const c = (1 - fy) * a + fy * b;
96
+ const h = this.options._offset + this.options._scale * c;
97
+ this._ix = ix;
98
+ this._iy = iy;
99
+ this._v00 = v00;
100
+ this._v01 = v01;
101
+ this._v10 = v10;
102
+ this._v11 = v11;
103
+ return h;
104
+ }
105
+
106
+ let h = t[0] + fx * (t[1] + fx * (t[3] + fx * t[6])) + fy * (t[2] + fx * (t[4] + fx * t[7]) + fy * (t[5] + fx * t[8] + fy * t[9]));
107
+ h = this.options._offset + this.options._scale * h;
108
+ this._ix = ix;
109
+ this._iy = iy;
110
+ this._t = t;
111
+ return h;
112
+ }
113
+
114
+ _rawval(ix, iy) {
115
+ if (ix < 0) {
116
+ ix += this.options._width;
117
+ } else if (ix >= this.options._width) {
118
+ ix -= this.options._width;
119
+ }
120
+
121
+ if (iy < 0 || iy >= this.options._height) {
122
+ iy = iy < 0 ? -iy : 2 * (this.options._height - 1) - iy;
123
+ ix += (ix < this.options._width / 2 ? 1 : -1) * this.options._width / 2;
124
+ }
125
+
126
+ const bufferPosition = this.options._datastart + PIXEL_SIZE * (iy * this.options._swidth + ix);
127
+ const a = this.options.data[bufferPosition];
128
+ const b = this.options.data[bufferPosition + 1];
129
+ const r = a << 8 | b;
130
+ return r;
131
+ }
132
+
133
+ }
134
+
135
+ exports.GeoidHeightModel = GeoidHeightModel;
136
+
137
+ function _remainder(x, y) {
138
+ y = Math.abs(y);
139
+
140
+ let z = _fmod(x, y);
141
+
142
+ if (2 * Math.abs(z) === y) z -= _fmod(x, 2 * y) - z;else if (2 * Math.abs(z) > y) z += z < 0 ? y : -y;
143
+ return z;
144
+ }
145
+
146
+ function _fmod(x, y) {
147
+ return x - Math.floor(x / y) * y;
148
+ }
149
+ //# sourceMappingURL=geoid-height-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/geoid-height-model.js"],"names":["c0_","c3_","c0n_","c3n_","c0s_","c3s_","stencilsize_","nterms_","PIXEL_SIZE","GeoidHeightModel","constructor","options","_v00","_v01","_v10","_v11","_t","_ix","_width","_iy","_height","getHeight","lat","lon","Math","abs","NaN","isNaN","rem","_remainder","fx","_rlonres","fy","_rlatres","ix","floor","iy","min","round","v00","v01","v10","v11","t","Array","cubic","_rawval","v","c3x","c0x","i","j","a","b","c","h","_offset","_scale","bufferPosition","_datastart","_swidth","data","r","x","y","z","_fmod"],"mappings":"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","sourcesContent":["/**\n * Code is ported from GeographicLib-1.50.1\n * https://geographiclib.sourceforge.io/html/index.html\n * Location: /GeographicLib-1.50.1/src/Geoid.cpp\n * /GeographicLib-1.50.1/include/GeographicLib/Geoid.hpp\n * /GeographicLib-1.50.1/src/Math.cpp\n *\n * File header:\n * * \\file Geoid.cpp (Geoid.hpp)\n * * \\brief Implementation for GeographicLib::Geoid class\n * *\n * * Copyright (c) Charles Karney (2009-2018) <charles@karney.com> and licensed\n * * under the MIT/X11 License. For more information, see\n * * https://geographiclib.sourceforge.io/\n **********************************************************************/\n\nconst c0_ = 240;\n\n// prettier-ignore\nconst c3_ = [\n 9, -18, -88, 0, 96, 90, 0, 0, -60, -20,\n -9, 18, 8, 0, -96, 30, 0, 0, 60, -20,\n 9, -88, -18, 90, 96, 0, -20, -60, 0, 0,\n 186, -42, -42, -150, -96, -150, 60, 60, 60, 60,\n 54, 162, -78, 30, -24, -90, -60, 60, -60, 60,\n -9, -32, 18, 30, 24, 0, 20, -60, 0, 0,\n -9, 8, 18, 30, -96, 0, -20, 60, 0, 0,\n 54, -78, 162, -90, -24, 30, 60, -60, 60, -60,\n -54, 78, 78, 90, 144, 90, -60, -60, -60, -60,\n 9, -8, -18, -30, -24, 0, 20, 60, 0, 0,\n -9, 18, -32, 0, 24, 30, 0, 0, -60, 20,\n 9, -18, -8, 0, -24, -30, 0, 0, 60, 20\n];\n\nconst c0n_ = 372;\n\n// prettier-ignore\nconst c3n_ = [\n 0, 0, -131, 0, 138, 144, 0, 0, -102, -31,\n 0, 0, 7, 0, -138, 42, 0, 0, 102, -31,\n 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,\n 124, 0, -62, 0, 0, -124, 0, 0, 0, 62,\n 124, 0, -62, 0, 0, -124, 0, 0, 0, 62,\n 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,\n 0, 0, 45, 0, -183, -9, 0, 93, 18, 0,\n 0, 0, 216, 0, 33, 87, 0, -93, 12, -93,\n 0, 0, 156, 0, 153, 99, 0, -93, -12, -93,\n 0, 0, -45, 0, -3, 9, 0, 93, -18, 0,\n 0, 0, -55, 0, 48, 42, 0, 0, -84, 31,\n 0, 0, -7, 0, -48, -42, 0, 0, 84, 31,\n];\n\nconst c0s_ = 372;\n\n// prettier-ignore\nconst c3s_ = [\n 18, -36, -122, 0, 120, 135, 0, 0, -84, -31,\n -18, 36, -2, 0, -120, 51, 0, 0, 84, -31,\n 36, -165, -27, 93, 147, -9, 0, -93, 18, 0,\n 210, 45, -111, -93, -57, -192, 0, 93, 12, 93,\n 162, 141, -75, -93, -129, -180, 0, 93, -12, 93,\n -36, -21, 27, 93, 39, 9, 0, -93, -18, 0,\n 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,\n 0, 0, 124, 0, 0, 62, 0, 0, 0, -62,\n 0, 0, 124, 0, 0, 62, 0, 0, 0, -62,\n 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,\n -18, 36, -64, 0, 66, 51, 0, 0, -102, 31,\n 18, -36, 2, 0, -66, -51, 0, 0, 102, 31,\n];\nconst stencilsize_ = 12;\nconst nterms_ = ((3 + 1) * (3 + 2)) / 2; // for a cubic fit\nconst PIXEL_SIZE = 2;\n\nexport class GeoidHeightModel {\n constructor(options) {\n this.options = options;\n this._v00 = 0;\n this._v01 = 0;\n this._v10 = 0;\n this._v11 = 0;\n this._t = [];\n\n this._ix = this.options._width;\n this._iy = this.options._height;\n }\n\n // eslint-disable-next-line max-statements, complexity\n getHeight(lat, lon) {\n // C++: Math::LatFix(lat)\n lat = Math.abs(lat) > 90 ? NaN : lat;\n\n if (isNaN(lat) || isNaN(lon)) {\n return NaN;\n }\n\n // C++: Math::AngNormalize(lon)\n const rem = _remainder(lon, 360);\n lon = rem !== -180 ? rem : 180;\n\n let fx = lon * this.options._rlonres;\n let fy = -lat * this.options._rlatres;\n let ix = Math.floor(fx);\n let iy = Math.min(Math.round((this.options._height - 1) / 2 - 1), Math.floor(fy));\n fx -= ix;\n fy -= iy;\n iy += (this.options._height - 1) / 2;\n ix += ix < 0 ? this.options._width : ix >= this.options._width ? -this.options._width : 0;\n let v00 = 0;\n let v01 = 0;\n let v10 = 0;\n let v11 = 0;\n let t = new Array(nterms_);\n if (!(ix === this._ix && iy === this._iy)) {\n if (!this.options.cubic) {\n v00 = this._rawval(ix, iy);\n v01 = this._rawval(ix + 1, iy);\n v10 = this._rawval(ix, iy + 1);\n v11 = this._rawval(ix + 1, iy + 1);\n } else {\n const v = [\n this._rawval(ix, iy - 1),\n this._rawval(ix + 1, iy - 1),\n this._rawval(ix - 1, iy),\n this._rawval(ix, iy),\n this._rawval(ix + 1, iy),\n this._rawval(ix + 2, iy),\n this._rawval(ix - 1, iy + 1),\n this._rawval(ix, iy + 1),\n this._rawval(ix + 1, iy + 1),\n this._rawval(ix + 2, iy + 1),\n this._rawval(ix, iy + 2),\n this._rawval(ix + 1, iy + 2)\n ];\n\n let c3x = c3n_;\n if (iy !== 0) {\n c3x = iy === this.options._height - 2 ? c3s_ : c3_;\n }\n let c0x = c0n_;\n if (iy !== 0) {\n c0x = iy === this.options._height - 2 ? c0s_ : c0_;\n }\n for (let i = 0; i < nterms_; ++i) {\n t[i] = 0;\n // eslint-disable-next-line max-depth\n for (let j = 0; j < stencilsize_; ++j) {\n t[i] += v[j] * c3x[nterms_ * j + i];\n }\n t[i] /= c0x;\n }\n }\n } else if (!this.options.cubic) {\n // same cell; used cached coefficients\n v00 = this._v00;\n v01 = this._v01;\n v10 = this._v10;\n v11 = this._v11;\n } else {\n t = this._t;\n }\n\n if (!this.options.cubic) {\n const a = (1 - fx) * v00 + fx * v01;\n const b = (1 - fx) * v10 + fx * v11;\n const c = (1 - fy) * a + fy * b;\n const h = this.options._offset + this.options._scale * c;\n this._ix = ix;\n this._iy = iy;\n this._v00 = v00;\n this._v01 = v01;\n this._v10 = v10;\n this._v11 = v11;\n return h;\n }\n let h =\n t[0] +\n fx * (t[1] + fx * (t[3] + fx * t[6])) +\n fy * (t[2] + fx * (t[4] + fx * t[7]) + fy * (t[5] + fx * t[8] + fy * t[9]));\n h = this.options._offset + this.options._scale * h;\n this._ix = ix;\n this._iy = iy;\n this._t = t;\n return h;\n }\n\n /**\n * Method seeks for particular data in th pgm buffer\n * Code is ported from corresponding method\n * in /GeographicLib-1.50.1/include/GeographicLib/Geoid.hpp\n * @param {number} ix - longituge parameter\n * @param {number} iy - latitude parameter\n * @returns {number} data from pgm binary buffer\n */\n _rawval(ix, iy) {\n if (ix < 0) {\n ix += this.options._width;\n } else if (ix >= this.options._width) {\n ix -= this.options._width;\n }\n if (iy < 0 || iy >= this.options._height) {\n iy = iy < 0 ? -iy : 2 * (this.options._height - 1) - iy;\n ix += ((ix < this.options._width / 2 ? 1 : -1) * this.options._width) / 2;\n }\n const bufferPosition = this.options._datastart + PIXEL_SIZE * (iy * this.options._swidth + ix);\n // initial values to suppress warnings in case get fails\n const a = this.options.data[bufferPosition];\n const b = this.options.data[bufferPosition + 1];\n const r = (a << 8) | b;\n return r;\n }\n}\n\n/**\n * Method calculates remainder of float numbers division\n * Code is ported from corresponding method\n * in /GeographicLib-1.50.1/src/Math.cpp\n * Math::remainder(T x, T y)\n * @param {number} x - numerator\n * @param {number} y - denominator\n * @returns {number} - remainder\n */\nfunction _remainder(x, y) {\n y = Math.abs(y); // The result doesn't depend on the sign of y\n let z = _fmod(x, y);\n if (2 * Math.abs(z) === y) z -= _fmod(x, 2 * y) - z;\n // Implement ties to even\n else if (2 * Math.abs(z) > y) z += z < 0 ? y : -y; // Fold remaining cases to (-y/2, y/2)\n return z;\n}\n\n/**\n * Computes the floating-point remainder of the division operation x/y\n * @param {number} x - numerator\n * @param {number} y - denominator\n * @returns {number} - remainder\n */\nfunction _fmod(x, y) {\n return x - Math.floor(x / y) * y;\n}\n"],"file":"geoid-height-model.js"}
File without changes