@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.
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +78 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js +9 -7
- package/dist/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +78 -18
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +19 -9
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.js +1 -1
- package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
- package/dist/3d-tiles-converter/json-templates/tileset.js +12 -9
- package/dist/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/converter.min.js +22 -22
- package/dist/deps-installer/deps-installer.d.ts.map +1 -0
- package/dist/deps-installer/deps-installer.js +2 -6
- package/dist/deps-installer/deps-installer.js.map +1 -1
- package/dist/dist.min.js +86527 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +35 -3
- package/dist/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.js +2 -2
- package/dist/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts +23 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +5 -1
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-converter.js +88 -42
- package/dist/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/i3s-converter/helpers/node-debug.d.ts +2 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-debug.js +2 -4
- package/dist/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/i3s-converter/helpers/node-pages.d.ts +83 -111
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-pages.js +15 -4
- package/dist/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/i3s-converter/i3s-converter.d.ts +320 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
- package/dist/i3s-converter/i3s-converter.js +158 -65
- package/dist/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/layers.js +37 -27
- package/dist/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
- package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/metadata.js +2 -2
- package/dist/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/i3s-converter/json-templates/node.d.ts +61 -0
- package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/node.js +16 -12
- package/dist/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
- package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/scene-server.js +2 -2
- package/dist/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
- package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/shared-resources.js +19 -14
- package/dist/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/i3s-converter/json-templates/store.d.ts +95 -0
- package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/i3s-converter/types.d.ts +14 -0
- package/dist/i3s-converter/types.d.ts.map +1 -0
- package/dist/i3s-converter/types.js +2 -0
- package/dist/i3s-converter/types.js.map +1 -0
- package/dist/i3s-server/app.d.ts +3 -0
- package/dist/i3s-server/app.d.ts.map +1 -0
- package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
- package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
- package/dist/i3s-server/routes/index.d.ts +3 -0
- package/dist/i3s-server/routes/index.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
- package/dist/lib/utils/compress-util.d.ts.map +1 -0
- package/dist/lib/utils/file-utils.d.ts.map +1 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
- package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
- package/dist/pgm-loader.d.ts +6 -0
- package/dist/pgm-loader.d.ts.map +1 -0
- package/dist/pgm-loader.js +3 -3
- package/dist/pgm-loader.js.map +1 -1
- package/package.json +21 -19
- package/src/3d-tiles-converter/3d-tiles-converter.ts +25 -21
- package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +35 -11
- package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
- package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
- package/src/deps-installer/deps-installer.js +2 -2
- package/src/i3s-converter/helpers/coordinate-converter.ts +62 -9
- package/src/i3s-converter/helpers/{create-scene-server-path.js → create-scene-server-path.ts} +2 -2
- package/src/i3s-converter/helpers/{geometry-attributes.js → geometry-attributes.ts} +4 -4
- package/src/i3s-converter/helpers/geometry-converter.d.ts +5 -1
- package/src/i3s-converter/helpers/geometry-converter.js +110 -33
- package/src/i3s-converter/helpers/{node-debug.js → node-debug.ts} +3 -2
- package/src/i3s-converter/helpers/{node-pages.js → node-pages.ts} +41 -26
- package/src/i3s-converter/i3s-converter.ts +214 -136
- package/src/i3s-converter/json-templates/{layers.js → layers.ts} +29 -27
- package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
- package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
- package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
- package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +14 -14
- package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
- package/src/i3s-converter/types.ts +14 -0
- package/src/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
- package/src/pgm-loader.ts +2 -2
- package/dist/lib/geoid-height-model.d.ts +0 -41
- package/dist/lib/geoid-height-model.js +0 -140
- package/dist/lib/geoid-height-model.js.map +0 -1
- package/dist/lib/pgm-parser.d.ts +0 -14
- package/dist/lib/pgm-parser.js +0 -183
- package/dist/lib/pgm-parser.js.map +0 -1
- package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
- package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
- package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
- package/src/lib/geoid-height-model.d.ts +0 -41
- package/src/lib/geoid-height-model.js +0 -239
- package/src/lib/pgm-parser.d.ts +0 -14
- package/src/lib/pgm-parser.js +0 -179
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
import {STORE} from './store';
|
|
3
3
|
|
|
4
|
-
const PLAIN_GEOMETRY_DEFINITION = {
|
|
4
|
+
const PLAIN_GEOMETRY_DEFINITION = () => ({
|
|
5
5
|
offset: 8,
|
|
6
6
|
position: {
|
|
7
7
|
type: 'Float32',
|
|
@@ -29,9 +29,9 @@ const PLAIN_GEOMETRY_DEFINITION = {
|
|
|
29
29
|
type: 'UInt32',
|
|
30
30
|
component: 2
|
|
31
31
|
}
|
|
32
|
-
};
|
|
32
|
+
});
|
|
33
33
|
|
|
34
|
-
const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
34
|
+
const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
|
|
35
35
|
offset: 8,
|
|
36
36
|
position: {
|
|
37
37
|
type: 'Float32',
|
|
@@ -55,23 +55,23 @@ const PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
|
55
55
|
type: 'UInt32',
|
|
56
56
|
component: 2
|
|
57
57
|
}
|
|
58
|
-
};
|
|
58
|
+
});
|
|
59
59
|
|
|
60
|
-
const COMPRESSED_GEOMETRY_DEFINITION = {
|
|
60
|
+
const COMPRESSED_GEOMETRY_DEFINITION = () => ({
|
|
61
61
|
compressedAttributes: {
|
|
62
62
|
encoding: 'draco',
|
|
63
63
|
attributes: ['position', 'normal', 'uv0', 'color', 'feature-index']
|
|
64
64
|
}
|
|
65
|
-
};
|
|
65
|
+
});
|
|
66
66
|
|
|
67
|
-
const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = {
|
|
67
|
+
const COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({
|
|
68
68
|
compressedAttributes: {
|
|
69
69
|
encoding: 'draco',
|
|
70
70
|
attributes: ['position', 'normal', 'color', 'feature-index']
|
|
71
71
|
}
|
|
72
|
-
};
|
|
72
|
+
});
|
|
73
73
|
|
|
74
|
-
const SPATIAL_REFERENCE = {
|
|
74
|
+
const SPATIAL_REFERENCE = () => ({
|
|
75
75
|
wkid: {
|
|
76
76
|
path: 'wkid',
|
|
77
77
|
default: 4326
|
|
@@ -88,9 +88,9 @@ const SPATIAL_REFERENCE = {
|
|
|
88
88
|
path: 'latestVcsWkid',
|
|
89
89
|
default: 5773
|
|
90
90
|
}
|
|
91
|
-
};
|
|
91
|
+
});
|
|
92
92
|
|
|
93
|
-
const HEIGHT_MODEL_INFO = {
|
|
93
|
+
const HEIGHT_MODEL_INFO = () => ({
|
|
94
94
|
heightModel: {
|
|
95
95
|
path: 'heightModel',
|
|
96
96
|
default: 'gravity_related_height'
|
|
@@ -103,9 +103,9 @@ const HEIGHT_MODEL_INFO = {
|
|
|
103
103
|
path: 'heightUnit',
|
|
104
104
|
default: 'meter'
|
|
105
105
|
}
|
|
106
|
-
};
|
|
106
|
+
});
|
|
107
107
|
|
|
108
|
-
const NODE_PAGES = {
|
|
108
|
+
const NODE_PAGES = () => ({
|
|
109
109
|
nodesPerPage: {
|
|
110
110
|
path: 'nodesPerPage'
|
|
111
111
|
},
|
|
@@ -113,9 +113,9 @@ const NODE_PAGES = {
|
|
|
113
113
|
path: 'lodSelectionMetricType',
|
|
114
114
|
default: 'maxScreenThresholdSQ'
|
|
115
115
|
}
|
|
116
|
-
};
|
|
116
|
+
});
|
|
117
117
|
|
|
118
|
-
export const LAYERS = {
|
|
118
|
+
export const LAYERS = () => ({
|
|
119
119
|
version: {
|
|
120
120
|
path: 'version',
|
|
121
121
|
transform: (val) => val.toUpperCase()
|
|
@@ -137,7 +137,7 @@ export const LAYERS = {
|
|
|
137
137
|
},
|
|
138
138
|
spatialReference: {
|
|
139
139
|
path: 'spatialReference',
|
|
140
|
-
transform: (val) => transform(val, SPATIAL_REFERENCE)
|
|
140
|
+
transform: (val) => transform(val, SPATIAL_REFERENCE())
|
|
141
141
|
},
|
|
142
142
|
capabilities: {
|
|
143
143
|
path: 'capabilities',
|
|
@@ -149,11 +149,11 @@ export const LAYERS = {
|
|
|
149
149
|
},
|
|
150
150
|
heightModelInfo: {
|
|
151
151
|
path: 'heightModelInfo',
|
|
152
|
-
transform: (val) => transform(val, HEIGHT_MODEL_INFO)
|
|
152
|
+
transform: (val) => transform(val, HEIGHT_MODEL_INFO())
|
|
153
153
|
},
|
|
154
154
|
nodePages: {
|
|
155
155
|
path: 'nodePages',
|
|
156
|
-
transform: (val) => transform(val, NODE_PAGES)
|
|
156
|
+
transform: (val) => transform(val, NODE_PAGES())
|
|
157
157
|
},
|
|
158
158
|
materialDefinitions: {
|
|
159
159
|
path: 'materialDefinitions',
|
|
@@ -166,21 +166,23 @@ export const LAYERS = {
|
|
|
166
166
|
geometryDefinitions: {
|
|
167
167
|
path: 'compressGeometry',
|
|
168
168
|
transform: (val) => {
|
|
169
|
-
const result = [{}, {}];
|
|
170
|
-
result[0].geometryBuffers = [];
|
|
171
|
-
result[1].geometryBuffers = [];
|
|
169
|
+
const result = [{geometryBuffers: []}, {geometryBuffers: []}];
|
|
172
170
|
|
|
173
|
-
|
|
174
|
-
result[
|
|
171
|
+
// @ts-expect-error
|
|
172
|
+
result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION());
|
|
173
|
+
// @ts-expect-error
|
|
174
|
+
result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0());
|
|
175
175
|
if (val) {
|
|
176
|
-
|
|
177
|
-
result[
|
|
176
|
+
// @ts-expect-error
|
|
177
|
+
result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION());
|
|
178
|
+
// @ts-expect-error
|
|
179
|
+
result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0());
|
|
178
180
|
}
|
|
179
181
|
return result;
|
|
180
182
|
},
|
|
181
183
|
default: [
|
|
182
184
|
{
|
|
183
|
-
geometryBuffers: [PLAIN_GEOMETRY_DEFINITION, PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0]
|
|
185
|
+
geometryBuffers: [PLAIN_GEOMETRY_DEFINITION(), PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0()]
|
|
184
186
|
}
|
|
185
187
|
]
|
|
186
188
|
},
|
|
@@ -196,4 +198,4 @@ export const LAYERS = {
|
|
|
196
198
|
path: 'popupInfo',
|
|
197
199
|
default: null
|
|
198
200
|
}
|
|
199
|
-
};
|
|
201
|
+
});
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
|
|
3
|
-
const COORDINATES = {
|
|
3
|
+
const COORDINATES = () => ({
|
|
4
4
|
mbs: {
|
|
5
5
|
path: 'mbs'
|
|
6
6
|
},
|
|
7
7
|
obb: {
|
|
8
8
|
path: 'obb'
|
|
9
9
|
}
|
|
10
|
-
};
|
|
10
|
+
});
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const HREF = () => ({
|
|
13
13
|
href: {
|
|
14
14
|
path: 'href'
|
|
15
15
|
}
|
|
16
|
-
};
|
|
16
|
+
});
|
|
17
17
|
|
|
18
|
-
const PARENT_NODE = {
|
|
18
|
+
const PARENT_NODE = () => ({
|
|
19
19
|
id: {
|
|
20
20
|
path: 'id'
|
|
21
21
|
},
|
|
22
|
-
...
|
|
23
|
-
...COORDINATES
|
|
24
|
-
};
|
|
22
|
+
...HREF(),
|
|
23
|
+
...COORDINATES()
|
|
24
|
+
});
|
|
25
25
|
|
|
26
|
-
export const NODE = {
|
|
26
|
+
export const NODE = () => ({
|
|
27
27
|
version: {
|
|
28
28
|
path: 'version'
|
|
29
29
|
},
|
|
@@ -36,7 +36,7 @@ export const NODE = {
|
|
|
36
36
|
level: {
|
|
37
37
|
path: 'level'
|
|
38
38
|
},
|
|
39
|
-
...COORDINATES,
|
|
39
|
+
...COORDINATES(),
|
|
40
40
|
lodSelection: {
|
|
41
41
|
path: 'lodSelection',
|
|
42
42
|
default: [
|
|
@@ -60,7 +60,7 @@ export const NODE = {
|
|
|
60
60
|
},
|
|
61
61
|
parentNode: {
|
|
62
62
|
path: 'parentNode',
|
|
63
|
-
transform: (val) => transform(val, PARENT_NODE),
|
|
63
|
+
transform: (val) => transform(val, PARENT_NODE()),
|
|
64
64
|
default: null
|
|
65
65
|
},
|
|
66
66
|
sharedResource: {
|
|
@@ -83,4 +83,4 @@ export const NODE = {
|
|
|
83
83
|
path: 'attributeData',
|
|
84
84
|
default: null
|
|
85
85
|
}
|
|
86
|
-
};
|
|
86
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import transform from 'json-map-transform';
|
|
2
2
|
|
|
3
|
-
const MATERIAL_DEFINITION_INFO_PARAMS = {
|
|
3
|
+
const MATERIAL_DEFINITION_INFO_PARAMS = () => ({
|
|
4
4
|
renderMode: {
|
|
5
5
|
path: 'renderMode',
|
|
6
6
|
default: 'solid'
|
|
@@ -37,9 +37,9 @@ const MATERIAL_DEFINITION_INFO_PARAMS = {
|
|
|
37
37
|
path: 'vertexColors',
|
|
38
38
|
default: true
|
|
39
39
|
}
|
|
40
|
-
};
|
|
40
|
+
});
|
|
41
41
|
|
|
42
|
-
const MATERIAL_DEFINITION_INFO = {
|
|
42
|
+
const MATERIAL_DEFINITION_INFO = () => ({
|
|
43
43
|
name: {
|
|
44
44
|
path: 'name',
|
|
45
45
|
default: 'standard'
|
|
@@ -51,11 +51,11 @@ const MATERIAL_DEFINITION_INFO = {
|
|
|
51
51
|
params: {
|
|
52
52
|
path: 'params',
|
|
53
53
|
transform: (val, thisObject, originalObject) =>
|
|
54
|
-
transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)
|
|
54
|
+
transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS())
|
|
55
55
|
}
|
|
56
|
-
};
|
|
56
|
+
});
|
|
57
57
|
|
|
58
|
-
const TEXTURE_DEFINITION_IMAGE = {
|
|
58
|
+
const TEXTURE_DEFINITION_IMAGE = () => ({
|
|
59
59
|
id: {
|
|
60
60
|
path: 'id'
|
|
61
61
|
},
|
|
@@ -69,9 +69,9 @@ const TEXTURE_DEFINITION_IMAGE = {
|
|
|
69
69
|
length: {
|
|
70
70
|
path: 'length'
|
|
71
71
|
}
|
|
72
|
-
};
|
|
72
|
+
});
|
|
73
73
|
|
|
74
|
-
const TEXTURE_DEFINITION_INFO = {
|
|
74
|
+
const TEXTURE_DEFINITION_INFO = () => ({
|
|
75
75
|
encoding: {
|
|
76
76
|
path: 'encoding'
|
|
77
77
|
},
|
|
@@ -94,11 +94,11 @@ const TEXTURE_DEFINITION_INFO = {
|
|
|
94
94
|
images: {
|
|
95
95
|
path: 'images',
|
|
96
96
|
transform: (val, thisObject, originalObject) =>
|
|
97
|
-
val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE))
|
|
97
|
+
val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE()))
|
|
98
98
|
}
|
|
99
|
-
};
|
|
99
|
+
});
|
|
100
100
|
|
|
101
|
-
export const
|
|
101
|
+
export const SHARED_RESOURCES = () => ({
|
|
102
102
|
materialDefinitions: {
|
|
103
103
|
path: 'materialDefinitionInfos',
|
|
104
104
|
transform: transfromMaterialDefinitions
|
|
@@ -107,14 +107,14 @@ export const SHARED_RESOURCES_TEMPLATE = {
|
|
|
107
107
|
path: 'textureDefinitionInfos',
|
|
108
108
|
transform: transfromTextureDefinitions
|
|
109
109
|
}
|
|
110
|
-
};
|
|
110
|
+
});
|
|
111
111
|
|
|
112
112
|
function transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {
|
|
113
113
|
const result = {};
|
|
114
114
|
for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {
|
|
115
115
|
result[`Mat${originalObject.nodePath}${index}`] = transform(
|
|
116
116
|
materialDefinitionInfo,
|
|
117
|
-
MATERIAL_DEFINITION_INFO
|
|
117
|
+
MATERIAL_DEFINITION_INFO()
|
|
118
118
|
);
|
|
119
119
|
}
|
|
120
120
|
return result;
|
|
@@ -128,7 +128,7 @@ function transfromTextureDefinitions(textureDefinitionInfos, thisObject, origina
|
|
|
128
128
|
for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {
|
|
129
129
|
const imageIndex = `${originalObject.nodePath}${index}`;
|
|
130
130
|
textureDefinitionInfo.imageIndex = imageIndex;
|
|
131
|
-
result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);
|
|
131
|
+
result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO());
|
|
132
132
|
}
|
|
133
133
|
return result;
|
|
134
134
|
}
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {BoundingVolumes, I3SMaterialDefinition, SharedResources} from '@loaders.gl/i3s';
|
|
2
|
+
|
|
3
|
+
export type I3SConvertedResources = {
|
|
4
|
+
geometry: ArrayBuffer | null;
|
|
5
|
+
compressedGeometry?: ArrayBuffer | null;
|
|
6
|
+
texture: any | null;
|
|
7
|
+
sharedResources: SharedResources | null;
|
|
8
|
+
meshMaterial?: I3SMaterialDefinition | null;
|
|
9
|
+
vertexCount: number | null;
|
|
10
|
+
attributes: any | null;
|
|
11
|
+
featureCount: number | null;
|
|
12
|
+
geometryBuffer?: ArrayBuffer;
|
|
13
|
+
boundingVolumes: BoundingVolumes | null;
|
|
14
|
+
};
|
|
File without changes
|
package/src/pgm-loader.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
|
4
4
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
5
5
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {parsePGM} from '@math.gl/geoid';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Loader for PGM - Netpbm grayscale image format
|
|
@@ -15,7 +15,7 @@ export const PGMLoader: LoaderWithParser = {
|
|
|
15
15
|
module: 'tile-converter',
|
|
16
16
|
version: VERSION,
|
|
17
17
|
mimeTypes: ['image/x-portable-graymap'],
|
|
18
|
-
parse: (arrayBuffer, options) =>
|
|
18
|
+
parse: async (arrayBuffer, options) => parsePGM(new Uint8Array(arrayBuffer), options),
|
|
19
19
|
extensions: ['pgm'],
|
|
20
20
|
options: {
|
|
21
21
|
// TODO - use pgm namespace
|
|
@@ -1,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"}
|
package/dist/lib/pgm-parser.d.ts
DELETED
|
@@ -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);
|