@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.
- package/bin/converter.js +1 -1
- package/dist/bundle.js +85947 -4
- package/dist/converter.min.js +292 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +267 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/{3d-tiles-converter → es5/3d-tiles-converter}/helpers/b3dm-converter.d.ts +0 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +269 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/{3d-tiles-converter → es5/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +40 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +48 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/es5/bundle.js +7 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/{deps-installer → es5/deps-installer}/deps-installer.d.ts +0 -0
- package/dist/es5/deps-installer/deps-installer.js +39 -0
- package/dist/es5/deps-installer/deps-installer.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +65 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +30 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +208 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/{i3s-converter → es5/i3s-converter}/helpers/geometry-converter.d.ts +0 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +700 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js +103 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/{i3s-converter → es5/i3s-converter}/helpers/node-pages.d.ts +0 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +150 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/es5/i3s-converter/i3s-converter.js +915 -0
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/layers.js +203 -0
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js +29 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/node.js +91 -0
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js +35 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +141 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/store.js +105 -0
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/es5/i3s-server/app.js +23 -0
- package/dist/es5/i3s-server/app.js.map +1 -0
- package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
- package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
- package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
- package/dist/es5/i3s-server/controllers/index-controller.js +33 -0
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/es5/i3s-server/routes/index.js +22 -0
- package/dist/es5/i3s-server/routes/index.js.map +1 -0
- package/dist/es5/index.js +40 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/{lib → es5/lib}/geoid-height-model.d.ts +0 -0
- package/dist/es5/lib/geoid-height-model.js +149 -0
- package/dist/es5/lib/geoid-height-model.js.map +1 -0
- package/dist/{lib → es5/lib}/pgm-parser.d.ts +0 -0
- package/dist/es5/lib/pgm-parser.js +192 -0
- package/dist/es5/lib/pgm-parser.js.map +1 -0
- package/dist/es5/lib/utils/compress-util.js +202 -0
- package/dist/es5/lib/utils/compress-util.js.map +1 -0
- package/dist/{lib → es5/lib}/utils/compress-utils.d.ts +0 -0
- package/dist/{lib → es5/lib}/utils/file-utils.d.ts +0 -0
- package/dist/es5/lib/utils/file-utils.js +59 -0
- package/dist/es5/lib/utils/file-utils.js.map +1 -0
- package/dist/{lib → es5/lib}/utils/lod-conversion-utils.d.ts +0 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js +52 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/{lib → es5/lib}/utils/statistic-utills.d.ts +0 -0
- package/dist/es5/lib/utils/statistic-utills.js +85 -0
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
- package/dist/es5/pgm-loader.js +24 -0
- package/dist/es5/pgm-loader.js.map +1 -0
- package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/3d-tiles-converter.js +19 -13
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.d.ts +23 -0
- package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/helpers/b3dm-converter.js +19 -8
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +16 -0
- package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.js +0 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +33 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/{3d-tiles-converter → esm/3d-tiles-converter}/json-templates/tileset.js +0 -0
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/esm/bundle.js +5 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/deps-installer/deps-installer.d.ts +10 -0
- package/dist/{deps-installer → esm/deps-installer}/deps-installer.js +0 -0
- package/dist/esm/deps-installer/deps-installer.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/coordinate-converter.js +0 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/create-scene-server-path.js +0 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/geometry-attributes.js +0 -0
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +40 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/geometry-converter.js +29 -31
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/node-debug.js +2 -2
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.d.ts +144 -0
- package/dist/{i3s-converter → esm/i3s-converter}/helpers/node-pages.js +2 -2
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/i3s-converter.js +50 -31
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/layers.js +0 -0
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/metadata.js +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/node.js +0 -0
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/scene-server.js +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/shared-resources.js +2 -2
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/{i3s-converter → esm/i3s-converter}/json-templates/store.js +2 -2
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/{i3s-server → esm/i3s-server}/app.js +0 -0
- package/dist/esm/i3s-server/app.js.map +1 -0
- package/dist/esm/i3s-server/bin/www +102 -0
- package/dist/esm/i3s-server/certs/cert.pem +19 -0
- package/dist/esm/i3s-server/certs/key.pem +27 -0
- package/dist/{i3s-server → esm/i3s-server}/controllers/index-controller.js +2 -2
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/{i3s-server → esm/i3s-server}/routes/index.js +0 -0
- package/dist/esm/i3s-server/routes/index.js.map +1 -0
- package/dist/{index.js → esm/index.js} +0 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/geoid-height-model.d.ts +41 -0
- package/dist/{lib → esm/lib}/geoid-height-model.js +0 -0
- package/dist/esm/lib/geoid-height-model.js.map +1 -0
- package/dist/esm/lib/pgm-parser.d.ts +14 -0
- package/dist/{lib → esm/lib}/pgm-parser.js +0 -0
- package/dist/esm/lib/pgm-parser.js.map +1 -0
- package/dist/{lib → esm/lib}/utils/compress-util.js +13 -13
- package/dist/esm/lib/utils/compress-util.js.map +1 -0
- package/dist/esm/lib/utils/compress-utils.d.ts +53 -0
- package/dist/esm/lib/utils/file-utils.d.ts +43 -0
- package/dist/{lib → esm/lib}/utils/file-utils.js +1 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -0
- package/dist/esm/lib/utils/lod-conversion-utils.d.ts +32 -0
- package/dist/{lib → esm/lib}/utils/lod-conversion-utils.js +0 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
- package/dist/{lib → esm/lib}/utils/statistic-utills.js +5 -5
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
- package/dist/{pgm-loader.js → esm/pgm-loader.js} +1 -1
- package/dist/esm/pgm-loader.js.map +1 -0
- package/package.json +24 -21
- package/src/3d-tiles-converter/3d-tiles-converter.ts +4 -2
- package/src/3d-tiles-converter/helpers/b3dm-converter.js +35 -7
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +55 -0
- package/src/i3s-converter/helpers/geometry-converter.js +21 -22
- package/src/i3s-converter/i3s-converter.ts +32 -7
- package/src/i3s-converter/json-templates/metadata.js +1 -1
- package/src/i3s-converter/json-templates/scene-server.js +1 -1
- package/src/i3s-converter/json-templates/store.js +2 -2
- package/src/i3s-server/controllers/index-controller.js +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
- package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/deps-installer/deps-installer.js.map +0 -1
- package/dist/dist.min.js +0 -94
- package/dist/dist.min.js.map +0 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
- package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
- package/dist/i3s-converter/i3s-converter.js.map +0 -1
- package/dist/i3s-converter/json-templates/layers.js.map +0 -1
- package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
- package/dist/i3s-converter/json-templates/node.js.map +0 -1
- package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
- package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
- package/dist/i3s-converter/json-templates/store.js.map +0 -1
- package/dist/i3s-server/app.js.map +0 -1
- package/dist/i3s-server/controllers/index-controller.js.map +0 -1
- package/dist/i3s-server/routes/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/geoid-height-model.js.map +0 -1
- package/dist/lib/pgm-parser.js.map +0 -1
- package/dist/lib/utils/compress-util.js.map +0 -1
- package/dist/lib/utils/file-utils.js.map +0 -1
- package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
- package/dist/lib/utils/statistic-utills.js.map +0 -1
- package/dist/pgm-loader.js.map +0 -1
- 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
|
|
File without changes
|
|
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
|