@loaders.gl/tile-converter 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (134) hide show
  1. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +78 -0
  2. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  3. package/dist/3d-tiles-converter/3d-tiles-converter.js +9 -7
  4. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  5. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +78 -18
  6. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  7. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +19 -9
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  9. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
  10. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  11. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  12. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  13. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  14. package/dist/3d-tiles-converter/helpers/texture-atlas.js +1 -1
  15. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  16. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  17. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  18. package/dist/3d-tiles-converter/json-templates/tileset.js +12 -9
  19. package/dist/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  20. package/dist/bundle.d.ts +2 -0
  21. package/dist/bundle.d.ts.map +1 -0
  22. package/dist/converter.min.js +22 -22
  23. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  24. package/dist/deps-installer/deps-installer.js +2 -6
  25. package/dist/deps-installer/deps-installer.js.map +1 -1
  26. package/dist/dist.min.js +86527 -0
  27. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
  28. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  29. package/dist/i3s-converter/helpers/coordinate-converter.js +35 -3
  30. package/dist/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  31. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  32. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  33. package/dist/i3s-converter/helpers/create-scene-server-path.js +2 -2
  34. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  35. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +23 -0
  36. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  37. package/dist/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  38. package/dist/i3s-converter/helpers/geometry-converter.d.ts +5 -1
  39. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  40. package/dist/i3s-converter/helpers/geometry-converter.js +88 -42
  41. package/dist/i3s-converter/helpers/geometry-converter.js.map +1 -1
  42. package/dist/i3s-converter/helpers/node-debug.d.ts +2 -0
  43. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  44. package/dist/i3s-converter/helpers/node-debug.js +2 -4
  45. package/dist/i3s-converter/helpers/node-debug.js.map +1 -1
  46. package/dist/i3s-converter/helpers/node-pages.d.ts +83 -111
  47. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  48. package/dist/i3s-converter/helpers/node-pages.js +15 -4
  49. package/dist/i3s-converter/helpers/node-pages.js.map +1 -1
  50. package/dist/i3s-converter/i3s-converter.d.ts +320 -0
  51. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  52. package/dist/i3s-converter/i3s-converter.js +158 -65
  53. package/dist/i3s-converter/i3s-converter.js.map +1 -1
  54. package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
  55. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  56. package/dist/i3s-converter/json-templates/layers.js +37 -27
  57. package/dist/i3s-converter/json-templates/layers.js.map +1 -1
  58. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  59. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  60. package/dist/i3s-converter/json-templates/metadata.js +2 -2
  61. package/dist/i3s-converter/json-templates/metadata.js.map +1 -1
  62. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  63. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  64. package/dist/i3s-converter/json-templates/node.js +16 -12
  65. package/dist/i3s-converter/json-templates/node.js.map +1 -1
  66. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  67. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  68. package/dist/i3s-converter/json-templates/scene-server.js +2 -2
  69. package/dist/i3s-converter/json-templates/scene-server.js.map +1 -1
  70. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  71. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  72. package/dist/i3s-converter/json-templates/shared-resources.js +19 -14
  73. package/dist/i3s-converter/json-templates/shared-resources.js.map +1 -1
  74. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  75. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  76. package/dist/i3s-converter/json-templates/store.js.map +1 -1
  77. package/dist/i3s-converter/types.d.ts +14 -0
  78. package/dist/i3s-converter/types.d.ts.map +1 -0
  79. package/dist/i3s-converter/types.js +2 -0
  80. package/dist/i3s-converter/types.js.map +1 -0
  81. package/dist/i3s-server/app.d.ts +3 -0
  82. package/dist/i3s-server/app.d.ts.map +1 -0
  83. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  84. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  85. package/dist/i3s-server/routes/index.d.ts +3 -0
  86. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  87. package/dist/index.d.ts +5 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
  90. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  91. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  92. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  93. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  94. package/dist/pgm-loader.d.ts +6 -0
  95. package/dist/pgm-loader.d.ts.map +1 -0
  96. package/dist/pgm-loader.js +3 -3
  97. package/dist/pgm-loader.js.map +1 -1
  98. package/package.json +21 -19
  99. package/src/3d-tiles-converter/3d-tiles-converter.ts +25 -21
  100. package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +35 -11
  101. package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
  102. package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
  103. package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
  104. package/src/deps-installer/deps-installer.js +2 -2
  105. package/src/i3s-converter/helpers/coordinate-converter.ts +62 -9
  106. package/src/i3s-converter/helpers/{create-scene-server-path.js → create-scene-server-path.ts} +2 -2
  107. package/src/i3s-converter/helpers/{geometry-attributes.js → geometry-attributes.ts} +4 -4
  108. package/src/i3s-converter/helpers/geometry-converter.d.ts +5 -1
  109. package/src/i3s-converter/helpers/geometry-converter.js +110 -33
  110. package/src/i3s-converter/helpers/{node-debug.js → node-debug.ts} +3 -2
  111. package/src/i3s-converter/helpers/{node-pages.js → node-pages.ts} +41 -26
  112. package/src/i3s-converter/i3s-converter.ts +214 -136
  113. package/src/i3s-converter/json-templates/{layers.js → layers.ts} +29 -27
  114. package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
  115. package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
  116. package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
  117. package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +14 -14
  118. package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
  119. package/src/i3s-converter/types.ts +14 -0
  120. package/src/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
  121. package/src/pgm-loader.ts +2 -2
  122. package/dist/lib/geoid-height-model.d.ts +0 -41
  123. package/dist/lib/geoid-height-model.js +0 -140
  124. package/dist/lib/geoid-height-model.js.map +0 -1
  125. package/dist/lib/pgm-parser.d.ts +0 -14
  126. package/dist/lib/pgm-parser.js +0 -183
  127. package/dist/lib/pgm-parser.js.map +0 -1
  128. package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  129. package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  130. package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
  131. package/src/lib/geoid-height-model.d.ts +0 -41
  132. package/src/lib/geoid-height-model.js +0 -239
  133. package/src/lib/pgm-parser.d.ts +0 -14
  134. package/src/lib/pgm-parser.js +0 -179
@@ -1,7 +1,7 @@
1
1
  import transform from 'json-map-transform';
2
2
  import {STORE} from './store';
3
3
 
4
- const PLAIN_GEOMETRY_DEFINITION = {
4
+ const PLAIN_GEOMETRY_DEFINITION = () => ({
5
5
  offset: 8,
6
6
  position: {
7
7
  type: 'Float32',
@@ -29,9 +29,9 @@ const PLAIN_GEOMETRY_DEFINITION = {
29
29
  type: 'UInt32',
30
30
  component: 2
31
31
  }
32
- };
32
+ });
33
33
 
34
- const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
34
+ const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
35
35
  offset: 8,
36
36
  position: {
37
37
  type: 'Float32',
@@ -55,23 +55,23 @@ const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
55
55
  type: 'UInt32',
56
56
  component: 2
57
57
  }
58
- };
58
+ });
59
59
 
60
- const COMPRESSED_GEOMETRY_DEFINITION = {
60
+ const COMPRESSED_GEOMETRY_DEFINITION = () => ({
61
61
  compressedAttributes: {
62
62
  encoding: 'draco',
63
63
  attributes: ['position', 'normal', 'uv0', 'color', 'feature-index']
64
64
  }
65
- };
65
+ });
66
66
 
67
- const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
67
+ const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
68
68
  compressedAttributes: {
69
69
  encoding: 'draco',
70
70
  attributes: ['position', 'normal', 'color', 'feature-index']
71
71
  }
72
- };
72
+ });
73
73
 
74
- const SPATIAL_REFERENCE = {
74
+ const SPATIAL_REFERENCE = () => ({
75
75
  wkid: {
76
76
  path: 'wkid',
77
77
  default: 4326
@@ -88,9 +88,9 @@ const SPATIAL_REFERENCE = {
88
88
  path: 'latestVcsWkid',
89
89
  default: 5773
90
90
  }
91
- };
91
+ });
92
92
 
93
- const HEIGHT_MODEL_INFO = {
93
+ const HEIGHT_MODEL_INFO = () => ({
94
94
  heightModel: {
95
95
  path: 'heightModel',
96
96
  default: 'gravity_related_height'
@@ -103,9 +103,9 @@ const HEIGHT_MODEL_INFO = {
103
103
  path: 'heightUnit',
104
104
  default: 'meter'
105
105
  }
106
- };
106
+ });
107
107
 
108
- const NODE_PAGES = {
108
+ const NODE_PAGES = () => ({
109
109
  nodesPerPage: {
110
110
  path: 'nodesPerPage'
111
111
  },
@@ -113,9 +113,9 @@ const NODE_PAGES = {
113
113
  path: 'lodSelectionMetricType',
114
114
  default: 'maxScreenThresholdSQ'
115
115
  }
116
- };
116
+ });
117
117
 
118
- export const LAYERS = {
118
+ export const LAYERS = () => ({
119
119
  version: {
120
120
  path: 'version',
121
121
  transform: (val) => val.toUpperCase()
@@ -137,7 +137,7 @@ export const LAYERS = {
137
137
  },
138
138
  spatialReference: {
139
139
  path: 'spatialReference',
140
- transform: (val) => transform(val, SPATIAL_REFERENCE)
140
+ transform: (val) => transform(val, SPATIAL_REFERENCE())
141
141
  },
142
142
  capabilities: {
143
143
  path: 'capabilities',
@@ -149,11 +149,11 @@ export const LAYERS = {
149
149
  },
150
150
  heightModelInfo: {
151
151
  path: 'heightModelInfo',
152
- transform: (val) => transform(val, HEIGHT_MODEL_INFO)
152
+ transform: (val) => transform(val, HEIGHT_MODEL_INFO())
153
153
  },
154
154
  nodePages: {
155
155
  path: 'nodePages',
156
- transform: (val) => transform(val, NODE_PAGES)
156
+ transform: (val) => transform(val, NODE_PAGES())
157
157
  },
158
158
  materialDefinitions: {
159
159
  path: 'materialDefinitions',
@@ -166,21 +166,23 @@ export const LAYERS = {
166
166
  geometryDefinitions: {
167
167
  path: 'compressGeometry',
168
168
  transform: (val) => {
169
- const result = [{}, {}];
170
- result[0].geometryBuffers = [];
171
- result[1].geometryBuffers = [];
169
+ const result = [{geometryBuffers: []}, {geometryBuffers: []}];
172
170
 
173
- result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION);
174
- result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0);
171
+ // @ts-expect-error
172
+ result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION());
173
+ // @ts-expect-error
174
+ result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0());
175
175
  if (val) {
176
- result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION);
177
- result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0);
176
+ // @ts-expect-error
177
+ result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION());
178
+ // @ts-expect-error
179
+ result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0());
178
180
  }
179
181
  return result;
180
182
  },
181
183
  default: [
182
184
  {
183
- geometryBuffers: [PLAIN_GEOMETRY_DEFINITION, PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0]
185
+ geometryBuffers: [PLAIN_GEOMETRY_DEFINITION(), PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0()]
184
186
  }
185
187
  ]
186
188
  },
@@ -196,4 +198,4 @@ export const LAYERS = {
196
198
  path: 'popupInfo',
197
199
  default: null
198
200
  }
199
- };
201
+ });
@@ -1,4 +1,4 @@
1
- export const METADATA = {
1
+ export const METADATA = () => ({
2
2
  folderPattern: {
3
3
  path: 'folderPattern',
4
4
  default: 'BASIC'
@@ -18,4 +18,4 @@ export const METADATA = {
18
18
  nodeCount: {
19
19
  path: 'nodeCount'
20
20
  }
21
- };
21
+ });
@@ -1,29 +1,29 @@
1
1
  import transform from 'json-map-transform';
2
2
 
3
- const COORDINATES = {
3
+ const COORDINATES = () => ({
4
4
  mbs: {
5
5
  path: 'mbs'
6
6
  },
7
7
  obb: {
8
8
  path: 'obb'
9
9
  }
10
- };
10
+ });
11
11
 
12
- const _href = {
12
+ const HREF = () => ({
13
13
  href: {
14
14
  path: 'href'
15
15
  }
16
- };
16
+ });
17
17
 
18
- const PARENT_NODE = {
18
+ const PARENT_NODE = () => ({
19
19
  id: {
20
20
  path: 'id'
21
21
  },
22
- ..._href,
23
- ...COORDINATES
24
- };
22
+ ...HREF(),
23
+ ...COORDINATES()
24
+ });
25
25
 
26
- export const NODE = {
26
+ export const NODE = () => ({
27
27
  version: {
28
28
  path: 'version'
29
29
  },
@@ -36,7 +36,7 @@ export const NODE = {
36
36
  level: {
37
37
  path: 'level'
38
38
  },
39
- ...COORDINATES,
39
+ ...COORDINATES(),
40
40
  lodSelection: {
41
41
  path: 'lodSelection',
42
42
  default: [
@@ -60,7 +60,7 @@ export const NODE = {
60
60
  },
61
61
  parentNode: {
62
62
  path: 'parentNode',
63
- transform: (val) => transform(val, PARENT_NODE),
63
+ transform: (val) => transform(val, PARENT_NODE()),
64
64
  default: null
65
65
  },
66
66
  sharedResource: {
@@ -83,4 +83,4 @@ export const NODE = {
83
83
  path: 'attributeData',
84
84
  default: null
85
85
  }
86
- };
86
+ });
@@ -1,4 +1,4 @@
1
- export const SCENE_SERVER_TEMPLATE = {
1
+ export const SCENE_SERVER = () => ({
2
2
  serviceItemId: {
3
3
  path: 'serviceItemId'
4
4
  },
@@ -24,4 +24,4 @@ export const SCENE_SERVER_TEMPLATE = {
24
24
  path: 'layers0',
25
25
  transform: (layers0) => [layers0]
26
26
  }
27
- };
27
+ });
@@ -1,6 +1,6 @@
1
1
  import transform from 'json-map-transform';
2
2
 
3
- const MATERIAL_DEFINITION_INFO_PARAMS = {
3
+ const MATERIAL_DEFINITION_INFO_PARAMS = () => ({
4
4
  renderMode: {
5
5
  path: 'renderMode',
6
6
  default: 'solid'
@@ -37,9 +37,9 @@ const MATERIAL_DEFINITION_INFO_PARAMS = {
37
37
  path: 'vertexColors',
38
38
  default: true
39
39
  }
40
- };
40
+ });
41
41
 
42
- const MATERIAL_DEFINITION_INFO = {
42
+ const MATERIAL_DEFINITION_INFO = () => ({
43
43
  name: {
44
44
  path: 'name',
45
45
  default: 'standard'
@@ -51,11 +51,11 @@ const MATERIAL_DEFINITION_INFO = {
51
51
  params: {
52
52
  path: 'params',
53
53
  transform: (val, thisObject, originalObject) =>
54
- transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)
54
+ transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS())
55
55
  }
56
- };
56
+ });
57
57
 
58
- const TEXTURE_DEFINITION_IMAGE = {
58
+ const TEXTURE_DEFINITION_IMAGE = () => ({
59
59
  id: {
60
60
  path: 'id'
61
61
  },
@@ -69,9 +69,9 @@ const TEXTURE_DEFINITION_IMAGE = {
69
69
  length: {
70
70
  path: 'length'
71
71
  }
72
- };
72
+ });
73
73
 
74
- const TEXTURE_DEFINITION_INFO = {
74
+ const TEXTURE_DEFINITION_INFO = () => ({
75
75
  encoding: {
76
76
  path: 'encoding'
77
77
  },
@@ -94,11 +94,11 @@ const TEXTURE_DEFINITION_INFO = {
94
94
  images: {
95
95
  path: 'images',
96
96
  transform: (val, thisObject, originalObject) =>
97
- val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE))
97
+ val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE()))
98
98
  }
99
- };
99
+ });
100
100
 
101
- export const SHARED_RESOURCES_TEMPLATE = {
101
+ export const SHARED_RESOURCES = () => ({
102
102
  materialDefinitions: {
103
103
  path: 'materialDefinitionInfos',
104
104
  transform: transfromMaterialDefinitions
@@ -107,14 +107,14 @@ export const SHARED_RESOURCES_TEMPLATE = {
107
107
  path: 'textureDefinitionInfos',
108
108
  transform: transfromTextureDefinitions
109
109
  }
110
- };
110
+ });
111
111
 
112
112
  function transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {
113
113
  const result = {};
114
114
  for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {
115
115
  result[`Mat${originalObject.nodePath}${index}`] = transform(
116
116
  materialDefinitionInfo,
117
- MATERIAL_DEFINITION_INFO
117
+ MATERIAL_DEFINITION_INFO()
118
118
  );
119
119
  }
120
120
  return result;
@@ -128,7 +128,7 @@ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, origina
128
128
  for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {
129
129
  const imageIndex = `${originalObject.nodePath}${index}`;
130
130
  textureDefinitionInfo.imageIndex = imageIndex;
131
- result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);
131
+ result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO());
132
132
  }
133
133
  return result;
134
134
  }
@@ -0,0 +1,14 @@
1
+ import {BoundingVolumes, I3SMaterialDefinition, SharedResources} from '@loaders.gl/i3s';
2
+
3
+ export type I3SConvertedResources = {
4
+ geometry: ArrayBuffer | null;
5
+ compressedGeometry?: ArrayBuffer | null;
6
+ texture: any | null;
7
+ sharedResources: SharedResources | null;
8
+ meshMaterial?: I3SMaterialDefinition | null;
9
+ vertexCount: number | null;
10
+ attributes: any | null;
11
+ featureCount: number | null;
12
+ geometryBuffer?: ArrayBuffer;
13
+ boundingVolumes: BoundingVolumes | null;
14
+ };
package/src/pgm-loader.ts CHANGED
@@ -4,7 +4,7 @@ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
4
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
5
5
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
6
6
 
7
- import {parsePgm} from './lib/pgm-parser';
7
+ import {parsePGM} from '@math.gl/geoid';
8
8
 
9
9
  /**
10
10
  * Loader for PGM - Netpbm grayscale image format
@@ -15,7 +15,7 @@ export const PGMLoader: LoaderWithParser = {
15
15
  module: 'tile-converter',
16
16
  version: VERSION,
17
17
  mimeTypes: ['image/x-portable-graymap'],
18
- parse: (arrayBuffer, options) => parsePgm(new Uint8Array(arrayBuffer), options),
18
+ parse: async (arrayBuffer, options) => parsePGM(new Uint8Array(arrayBuffer), options),
19
19
  extensions: ['pgm'],
20
20
  options: {
21
21
  // TODO - use pgm namespace
@@ -1,41 +0,0 @@
1
- /**
2
- * class GeoidHeightModel - "Gravity Height Model"
3
- * Calculates difference between mean see level height and WGS84 ellipsoid height
4
- * Input data have to be loaded from "Earth Gravity Model" *.pgm file with "PGMLoader"
5
- * A particular model file can be loaded on https://geographiclib.sourceforge.io/html/geoid.html
6
- *
7
- * The implementation is ported from GeographicLib-1.50.1
8
- */
9
- export class GeoidHeightModel {
10
- /**
11
- * @constructs
12
- * Create a GeoidHeightModel instance.
13
- * @param options - object which includes parameters parsed from *.pgm header
14
- * @param options.data - binary buffer of *.pgm file
15
- */
16
- constructor(options: {
17
- cubic: boolean;
18
- _width: number;
19
- _height: number;
20
- _rlonres: number;
21
- _rlatres: number;
22
- _offset: number;
23
- _scale: number;
24
- _swidth: number;
25
- _datastart: number;
26
- _maxerror: number;
27
- _rmserror: number;
28
- _description: string;
29
- _datetime: string;
30
- data: Uint8Array;
31
- });
32
-
33
- /**
34
- * Calculates difference between mean see level height and WGS84 ellipsoid height
35
- * Code is ported from /GeographicLib-1.50.1/src/Geoid.cpp
36
- * @param lat - latitude
37
- * @param lon - longitude
38
- * @returns height in meters
39
- */
40
- getHeight(lat: number, lon: number): number;
41
- }
@@ -1,140 +0,0 @@
1
- const c0_ = 240;
2
- 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];
3
- const c0n_ = 372;
4
- 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];
5
- const c0s_ = 372;
6
- 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];
7
- const stencilsize_ = 12;
8
- const nterms_ = (3 + 1) * (3 + 2) / 2;
9
- const PIXEL_SIZE = 2;
10
- export class GeoidHeightModel {
11
- constructor(options) {
12
- this.options = options;
13
- this._v00 = 0;
14
- this._v01 = 0;
15
- this._v10 = 0;
16
- this._v11 = 0;
17
- this._t = [];
18
- this._ix = this.options._width;
19
- this._iy = this.options._height;
20
- }
21
-
22
- getHeight(lat, lon) {
23
- lat = Math.abs(lat) > 90 ? NaN : lat;
24
-
25
- if (isNaN(lat) || isNaN(lon)) {
26
- return NaN;
27
- }
28
-
29
- const rem = _remainder(lon, 360);
30
-
31
- lon = rem !== -180 ? rem : 180;
32
- let fx = lon * this.options._rlonres;
33
- let fy = -lat * this.options._rlatres;
34
- let ix = Math.floor(fx);
35
- let iy = Math.min(Math.round((this.options._height - 1) / 2 - 1), Math.floor(fy));
36
- fx -= ix;
37
- fy -= iy;
38
- iy += (this.options._height - 1) / 2;
39
- ix += ix < 0 ? this.options._width : ix >= this.options._width ? -this.options._width : 0;
40
- let v00 = 0;
41
- let v01 = 0;
42
- let v10 = 0;
43
- let v11 = 0;
44
- let t = new Array(nterms_);
45
-
46
- if (!(ix === this._ix && iy === this._iy)) {
47
- if (!this.options.cubic) {
48
- v00 = this._rawval(ix, iy);
49
- v01 = this._rawval(ix + 1, iy);
50
- v10 = this._rawval(ix, iy + 1);
51
- v11 = this._rawval(ix + 1, iy + 1);
52
- } else {
53
- 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)];
54
- let c3x = c3n_;
55
-
56
- if (iy !== 0) {
57
- c3x = iy === this.options._height - 2 ? c3s_ : c3_;
58
- }
59
-
60
- let c0x = c0n_;
61
-
62
- if (iy !== 0) {
63
- c0x = iy === this.options._height - 2 ? c0s_ : c0_;
64
- }
65
-
66
- for (let i = 0; i < nterms_; ++i) {
67
- t[i] = 0;
68
-
69
- for (let j = 0; j < stencilsize_; ++j) {
70
- t[i] += v[j] * c3x[nterms_ * j + i];
71
- }
72
-
73
- t[i] /= c0x;
74
- }
75
- }
76
- } else if (!this.options.cubic) {
77
- v00 = this._v00;
78
- v01 = this._v01;
79
- v10 = this._v10;
80
- v11 = this._v11;
81
- } else {
82
- t = this._t;
83
- }
84
-
85
- if (!this.options.cubic) {
86
- const a = (1 - fx) * v00 + fx * v01;
87
- const b = (1 - fx) * v10 + fx * v11;
88
- const c = (1 - fy) * a + fy * b;
89
- const h = this.options._offset + this.options._scale * c;
90
- this._ix = ix;
91
- this._iy = iy;
92
- this._v00 = v00;
93
- this._v01 = v01;
94
- this._v10 = v10;
95
- this._v11 = v11;
96
- return h;
97
- }
98
-
99
- 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]));
100
- h = this.options._offset + this.options._scale * h;
101
- this._ix = ix;
102
- this._iy = iy;
103
- this._t = t;
104
- return h;
105
- }
106
-
107
- _rawval(ix, iy) {
108
- if (ix < 0) {
109
- ix += this.options._width;
110
- } else if (ix >= this.options._width) {
111
- ix -= this.options._width;
112
- }
113
-
114
- if (iy < 0 || iy >= this.options._height) {
115
- iy = iy < 0 ? -iy : 2 * (this.options._height - 1) - iy;
116
- ix += (ix < this.options._width / 2 ? 1 : -1) * this.options._width / 2;
117
- }
118
-
119
- const bufferPosition = this.options._datastart + PIXEL_SIZE * (iy * this.options._swidth + ix);
120
- const a = this.options.data[bufferPosition];
121
- const b = this.options.data[bufferPosition + 1];
122
- const r = a << 8 | b;
123
- return r;
124
- }
125
-
126
- }
127
-
128
- function _remainder(x, y) {
129
- y = Math.abs(y);
130
-
131
- let z = _fmod(x, y);
132
-
133
- if (2 * Math.abs(z) === y) z -= _fmod(x, 2 * y) - z;else if (2 * Math.abs(z) > y) z += z < 0 ? y : -y;
134
- return z;
135
- }
136
-
137
- function _fmod(x, y) {
138
- return x - Math.floor(x / y) * y;
139
- }
140
- //# sourceMappingURL=geoid-height-model.js.map
@@ -1 +0,0 @@
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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Parse header of "Earth Gravity Model" *.pgm file
3
- * The implementation is ported from GeographicLib-1.50.1
4
- * https://geographiclib.sourceforge.io/html/index.html
5
- */
6
-
7
- /**
8
- * Parse "Earth Gravity Model" loaded from a *.pgm file
9
- * https://geographiclib.sourceforge.io/html/geoid.html
10
- * @param {Uint8Array} data - binary buffer of pgm file
11
- * @param {Object} options - loader options
12
- * @returns {GeoidHeightModel} - instance of GeoidHeightModel class
13
- */
14
- export function parsePgm(data, options);