bruce-models 4.6.5 → 4.6.7
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/bruce-models.es5.js +497 -273
- package/dist/bruce-models.es5.js.map +1 -1
- package/dist/bruce-models.umd.js +490 -270
- package/dist/bruce-models.umd.js.map +1 -1
- package/dist/lib/bruce-models.js +2 -1
- package/dist/lib/bruce-models.js.map +1 -1
- package/dist/lib/common/geojson.js +22 -0
- package/dist/lib/common/geojson.js.map +1 -0
- package/dist/lib/common/geometry.js +332 -0
- package/dist/lib/common/geometry.js.map +1 -1
- package/dist/lib/entity/entity.js +0 -128
- package/dist/lib/entity/entity.js.map +1 -1
- package/dist/types/bruce-models.d.ts +2 -1
- package/dist/types/common/geojson.d.ts +68 -0
- package/dist/types/common/geometry.d.ts +22 -0
- package/dist/types/entity/entity.d.ts +0 -13
- package/package.json +1 -1
package/dist/lib/bruce-models.js
CHANGED
|
@@ -40,6 +40,7 @@ __exportStar(require("./common/utc"), exports);
|
|
|
40
40
|
__exportStar(require("./common/bruce-variable"), exports);
|
|
41
41
|
__exportStar(require("./common/lru-cache"), exports);
|
|
42
42
|
__exportStar(require("./common/section"), exports);
|
|
43
|
+
__exportStar(require("./common/geojson"), exports);
|
|
43
44
|
__exportStar(require("./entity/entity-attachment-type"), exports);
|
|
44
45
|
__exportStar(require("./entity/entity-attachment"), exports);
|
|
45
46
|
__exportStar(require("./entity/entity-comment"), exports);
|
|
@@ -100,5 +101,5 @@ __exportStar(require("./plugin/plugin"), exports);
|
|
|
100
101
|
__exportStar(require("./environment"), exports);
|
|
101
102
|
__exportStar(require("./data-source/data-source"), exports);
|
|
102
103
|
// This is updated with the package.json version on build.
|
|
103
|
-
exports.VERSION = "4.6.
|
|
104
|
+
exports.VERSION = "4.6.7";
|
|
104
105
|
//# sourceMappingURL=bruce-models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bruce-models.js","sourceRoot":"","sources":["../../src/bruce-models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA4C;AAE5C,4DAA0C;AAC1C,oEAAkD;AAElD,qDAAmC;AACnC,4CAA0B;AAC1B,kDAAgC;AAChC,mDAAiC;AACjC,qDAAmC;AACnC,oDAAkC;AAElC,0DAAwC;AAExC,kDAAgC;AAChC,uDAAqC;AACrC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,iDAA+B;AAC/B,iDAA+B;AAC/B,uDAAqC;AACrC,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,+CAA6B;AAC7B,0DAAwC;AACxC,qDAAmC;AACnC,mDAAiC;AAEjC,kEAAgD;AAChD,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAC7C,gEAA8C;AAC9C,2DAAyC;AACzC,yDAAuC;AACvC,sDAAoC;AACpC,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,uEAAqD;AACrD,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAE3C,8DAA4C;AAE5C,4DAA0C;AAE1C,4DAA0C;AAE1C,yDAAuC;AACvC,sDAAoC;AACpC,kEAAgD;AAChD,yDAAuC;AACvC,qEAAmD;AACnD,8DAA4C;AAC5C,mEAAiD;AACjD,gEAA8C;AAC9C,yEAAuD;AAEvD,0DAAwC;AACxC,0DAAwC;AACxC,4DAA0C;AAE1C,gDAA8B;AAE9B,oDAAkC;AAElC,oDAAkC;AAClC,iDAA+B;AAC/B,oDAAkC;AAClC,8CAA4B;AAE5B,oDAAkC;AAClC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,2DAAyC;AAEzC,uDAAqC;AACrC,oDAAkC;AAClC,sDAAoC;AACpC,oDAAkC;AAClC,mDAAiC;AAEjC,sDAAoC;AAEpC,sDAAoC;AACpC,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,yDAAuC;AAEvC,kDAAgC;AAChC,sDAAoC;AACpC,kDAAgC;AAChC,gDAA8B;AAC9B,4DAA0C;AAE1C,0DAA0D;AAC7C,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"bruce-models.js","sourceRoot":"","sources":["../../src/bruce-models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA4C;AAE5C,4DAA0C;AAC1C,oEAAkD;AAElD,qDAAmC;AACnC,4CAA0B;AAC1B,kDAAgC;AAChC,mDAAiC;AACjC,qDAAmC;AACnC,oDAAkC;AAElC,0DAAwC;AAExC,kDAAgC;AAChC,uDAAqC;AACrC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,iDAA+B;AAC/B,iDAA+B;AAC/B,uDAAqC;AACrC,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,+CAA6B;AAC7B,0DAAwC;AACxC,qDAAmC;AACnC,mDAAiC;AACjC,mDAAiC;AAEjC,kEAAgD;AAChD,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAC7C,gEAA8C;AAC9C,2DAAyC;AACzC,yDAAuC;AACvC,sDAAoC;AACpC,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,uEAAqD;AACrD,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAE3C,8DAA4C;AAE5C,4DAA0C;AAE1C,4DAA0C;AAE1C,yDAAuC;AACvC,sDAAoC;AACpC,kEAAgD;AAChD,yDAAuC;AACvC,qEAAmD;AACnD,8DAA4C;AAC5C,mEAAiD;AACjD,gEAA8C;AAC9C,yEAAuD;AAEvD,0DAAwC;AACxC,0DAAwC;AACxC,4DAA0C;AAE1C,gDAA8B;AAE9B,oDAAkC;AAElC,oDAAkC;AAClC,iDAA+B;AAC/B,oDAAkC;AAClC,8CAA4B;AAE5B,oDAAkC;AAClC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,2DAAyC;AAEzC,uDAAqC;AACrC,oDAAkC;AAClC,sDAAoC;AACpC,oDAAkC;AAClC,mDAAiC;AAEjC,sDAAoC;AAEpC,sDAAoC;AACpC,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,yDAAuC;AAEvC,kDAAgC;AAChC,sDAAoC;AACpC,kDAAgC;AAChC,gDAA8B;AAC9B,4DAA0C;AAE1C,0DAA0D;AAC7C,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoJson = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* GeoJSON data structures.
|
|
6
|
+
*/
|
|
7
|
+
var GeoJson;
|
|
8
|
+
(function (GeoJson) {
|
|
9
|
+
let EType;
|
|
10
|
+
(function (EType) {
|
|
11
|
+
EType["Point"] = "Point";
|
|
12
|
+
EType["MultiPoint"] = "MultiPoint";
|
|
13
|
+
EType["LineString"] = "LineString";
|
|
14
|
+
EType["MultiLineString"] = "MultiLineString";
|
|
15
|
+
EType["Polygon"] = "Polygon";
|
|
16
|
+
EType["MultiPolygon"] = "MultiPolygon";
|
|
17
|
+
EType["GeometryCollection"] = "GeometryCollection";
|
|
18
|
+
EType["Feature"] = "Feature";
|
|
19
|
+
EType["FeatureCollection"] = "FeatureCollection";
|
|
20
|
+
})(EType = GeoJson.EType || (GeoJson.EType = {}));
|
|
21
|
+
})(GeoJson = exports.GeoJson || (exports.GeoJson = {}));
|
|
22
|
+
//# sourceMappingURL=geojson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geojson.js","sourceRoot":"","sources":["../../../src/common/geojson.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAiB,OAAO,CA8EvB;AA9ED,WAAiB,OAAO;IA8BpB,IAAY,KAUX;IAVD,WAAY,KAAK;QACb,wBAAe,CAAA;QACf,kCAAyB,CAAA;QACzB,kCAAyB,CAAA;QACzB,4CAAmC,CAAA;QACnC,4BAAmB,CAAA;QACnB,sCAA6B,CAAA;QAC7B,kDAAyC,CAAA;QACzC,4BAAmB,CAAA;QACnB,gDAAuC,CAAA;IAC3C,CAAC,EAVW,KAAK,GAAL,aAAK,KAAL,aAAK,QAUhB;AAsCL,CAAC,EA9EgB,OAAO,GAAP,eAAO,KAAP,eAAO,QA8EvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Geometry = void 0;
|
|
4
|
+
const geojson_1 = require("./geojson");
|
|
4
5
|
/**
|
|
5
6
|
* Describes vector geometry that Bruce uses.
|
|
6
7
|
*/
|
|
@@ -122,5 +123,336 @@ var Geometry;
|
|
|
122
123
|
return geometry;
|
|
123
124
|
}
|
|
124
125
|
Geometry.ParseGeometry = ParseGeometry;
|
|
126
|
+
/**
|
|
127
|
+
* Converts Bruce geometry to GeoJSON.
|
|
128
|
+
* @param geometry
|
|
129
|
+
* @returns returns GeoJSON or null if conversion failed or resulted in an empty object.
|
|
130
|
+
*/
|
|
131
|
+
function ToGeoJsonFeature(params) {
|
|
132
|
+
const { geometry, properties, altitude } = params;
|
|
133
|
+
// Primary collection of geometries.
|
|
134
|
+
// We will return a single feature that contains many geometries.
|
|
135
|
+
// That way we can attach properties to the top-level.
|
|
136
|
+
const collection = [];
|
|
137
|
+
// Returns if two coordinates are equal.
|
|
138
|
+
const areCoordinatesEqual = (coord1, coord2) => {
|
|
139
|
+
return coord1[0] === coord2[0] && coord1[1] === coord2[1] && coord1[2] === coord2[2];
|
|
140
|
+
};
|
|
141
|
+
// Removes consecutive duplicate coordinates.
|
|
142
|
+
const removeConsecutiveDuplicates = (coordinates) => {
|
|
143
|
+
return coordinates.filter((coord, index) => {
|
|
144
|
+
return index === 0 || !areCoordinatesEqual(coord, coordinates[index - 1]);
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
// Ensures that the polygon is closed.
|
|
148
|
+
const closePolygonCoordinates = (coordinates) => {
|
|
149
|
+
return coordinates.map(ring => {
|
|
150
|
+
if (!areCoordinatesEqual(ring[0], ring[ring.length - 1])) {
|
|
151
|
+
ring.push(ring[0]);
|
|
152
|
+
}
|
|
153
|
+
return ring;
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Processes Bruce geometry.
|
|
158
|
+
* Called recursively for MultiGeometry.
|
|
159
|
+
* @param geometry
|
|
160
|
+
* @returns if a geometry was processed and added.
|
|
161
|
+
*/
|
|
162
|
+
const processGeometry = (geometry) => {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
let jGeometry = null;
|
|
165
|
+
// We add in order of priority while ignoring anything lower priority.
|
|
166
|
+
// This mimics how we render Bruce geometry.
|
|
167
|
+
if ((_a = geometry.MultiGeometry) === null || _a === void 0 ? void 0 : _a.length) {
|
|
168
|
+
let passed = false;
|
|
169
|
+
geometry.MultiGeometry.forEach(geo => {
|
|
170
|
+
if (processGeometry(geo)) {
|
|
171
|
+
passed = true;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
if (passed) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (!jGeometry && ((_b = geometry.Polygon) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
179
|
+
// Sorts polygons so that boundaries come first.
|
|
180
|
+
const sortedPolygons = geometry.Polygon.sort((a, b) => a.Facing === Geometry.EPolygonRingType.Boundaries ? -1 : 1);
|
|
181
|
+
// Converts polygons to GeoJSON coordinates.
|
|
182
|
+
// This will close the polygon if it's not already closed and remove consecutive duplicates.
|
|
183
|
+
const coordinates = closePolygonCoordinates(sortedPolygons.map(polygon => {
|
|
184
|
+
const points = ParsePoints(polygon.LinearRing);
|
|
185
|
+
return removeConsecutiveDuplicates(points.map(coord => {
|
|
186
|
+
const { longitude: lon, latitude: lat, altitude: alt } = coord;
|
|
187
|
+
return (altitude != null ? [lon, lat, altitude] : [lon, lat, alt !== undefined ? alt : 0]);
|
|
188
|
+
}));
|
|
189
|
+
}));
|
|
190
|
+
if (coordinates.every(polygon => polygon.length >= 4)) {
|
|
191
|
+
jGeometry = {
|
|
192
|
+
coordinates: coordinates,
|
|
193
|
+
type: geojson_1.GeoJson.EType.Polygon
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!jGeometry && geometry.LineString) {
|
|
198
|
+
const points = ParsePoints(geometry.LineString);
|
|
199
|
+
const coordinates = removeConsecutiveDuplicates(points.map(coord => {
|
|
200
|
+
const { longitude: lon, latitude: lat, altitude: alt } = coord;
|
|
201
|
+
return (altitude != null ? [lon, lat, altitude] : [lon, lat, alt !== undefined ? alt : 0]);
|
|
202
|
+
}));
|
|
203
|
+
if (coordinates.length >= 2) {
|
|
204
|
+
jGeometry = {
|
|
205
|
+
coordinates: coordinates,
|
|
206
|
+
type: geojson_1.GeoJson.EType.LineString
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (!jGeometry && geometry.Point) {
|
|
211
|
+
const points = ParsePoints(geometry.Point);
|
|
212
|
+
if (points.length) {
|
|
213
|
+
const { longitude: lon, latitude: lat, altitude: alt } = points[0];
|
|
214
|
+
const coordinates = altitude != null ? [lon, lat, altitude] : [lon, lat, alt !== undefined ? alt : 0];
|
|
215
|
+
jGeometry = {
|
|
216
|
+
coordinates: coordinates,
|
|
217
|
+
type: geojson_1.GeoJson.EType.Point
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (jGeometry) {
|
|
222
|
+
collection.push(jGeometry);
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
// Nothing :(
|
|
226
|
+
return false;
|
|
227
|
+
};
|
|
228
|
+
// Add all geometries to the collection.
|
|
229
|
+
processGeometry(geometry);
|
|
230
|
+
// Nothing was produced.
|
|
231
|
+
if (!collection.length) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
// Just 1 item. We can have a single feature rather than geometry collection.
|
|
235
|
+
if (collection.length === 1) {
|
|
236
|
+
const geoJson = {
|
|
237
|
+
type: geojson_1.GeoJson.EType.Feature,
|
|
238
|
+
geometry: collection[0],
|
|
239
|
+
properties: properties || {}
|
|
240
|
+
};
|
|
241
|
+
return geoJson;
|
|
242
|
+
}
|
|
243
|
+
// Construct the base feature and append the collection.
|
|
244
|
+
const geoJson = {
|
|
245
|
+
type: geojson_1.GeoJson.EType.Feature,
|
|
246
|
+
geometry: {
|
|
247
|
+
type: geojson_1.GeoJson.EType.GeometryCollection,
|
|
248
|
+
geometries: collection
|
|
249
|
+
},
|
|
250
|
+
properties: properties || {}
|
|
251
|
+
};
|
|
252
|
+
return geoJson;
|
|
253
|
+
}
|
|
254
|
+
Geometry.ToGeoJsonFeature = ToGeoJsonFeature;
|
|
255
|
+
/**
|
|
256
|
+
* Converts GeoJSON to Bruce geometry.
|
|
257
|
+
* @param geoJson
|
|
258
|
+
* @returns
|
|
259
|
+
*/
|
|
260
|
+
function FromGeoJson(params) {
|
|
261
|
+
var _a;
|
|
262
|
+
const { geoJson } = params;
|
|
263
|
+
// Don't process if there's no geometry.
|
|
264
|
+
if (geoJson.type === geojson_1.GeoJson.EType.FeatureCollection) {
|
|
265
|
+
if (!geoJson.features.length) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// We start by populating multi-geometry.
|
|
270
|
+
// If we end up with only 1 level then we'll return the single geometry.
|
|
271
|
+
const full = {
|
|
272
|
+
MultiGeometry: []
|
|
273
|
+
};
|
|
274
|
+
// Merged properties added to as we go.
|
|
275
|
+
const properties = {};
|
|
276
|
+
// Traverse a geojson hierarchy and generate a Bruce multi-geometry from it.
|
|
277
|
+
// This will append to the "full" object as it goes.
|
|
278
|
+
const traverse = (feature) => {
|
|
279
|
+
// Geometry collections don't have coords so we have to cast as any.
|
|
280
|
+
const { type, coordinates, properties } = feature.geometry;
|
|
281
|
+
// Unknown thing. Ignoring.
|
|
282
|
+
if (!type) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// No coordinates. Ignoring.
|
|
286
|
+
if (!coordinates) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
// Simple properties merge.
|
|
290
|
+
// Doesn't handle nested properties very well.
|
|
291
|
+
if (properties) {
|
|
292
|
+
Object.assign(properties, properties);
|
|
293
|
+
}
|
|
294
|
+
// We'll first match cases of nested collections and handle them early.
|
|
295
|
+
// Then we'll be left with simple geometry cases.
|
|
296
|
+
if (type === geojson_1.GeoJson.EType.GeometryCollection) {
|
|
297
|
+
const collection = feature;
|
|
298
|
+
for (let i = 0; i < collection.geometries.length; i++) {
|
|
299
|
+
const geo = collection.geometries[i];
|
|
300
|
+
traverse({
|
|
301
|
+
type: geojson_1.GeoJson.EType.Feature,
|
|
302
|
+
geometry: geo,
|
|
303
|
+
properties: feature.properties
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
else if (type === geojson_1.GeoJson.EType.FeatureCollection) {
|
|
309
|
+
const collection = feature;
|
|
310
|
+
for (let i = 0; i < collection.features.length; i++) {
|
|
311
|
+
traverse(collection.features[i]);
|
|
312
|
+
}
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const geometry = {};
|
|
316
|
+
switch (type) {
|
|
317
|
+
case geojson_1.GeoJson.EType.Polygon:
|
|
318
|
+
if (!geometry.Polygon) {
|
|
319
|
+
geometry.Polygon = [];
|
|
320
|
+
}
|
|
321
|
+
coordinates.forEach((polygon, index) => {
|
|
322
|
+
const linearRing = polygon.map(coord => coord.join(',')).join(' ');
|
|
323
|
+
geometry.Polygon.push({
|
|
324
|
+
LinearRing: linearRing,
|
|
325
|
+
Facing: index === 0 ? Geometry.EPolygonRingType.Boundaries : Geometry.EPolygonRingType.Hole
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
break;
|
|
329
|
+
case geojson_1.GeoJson.EType.LineString:
|
|
330
|
+
geometry.LineString = coordinates.map((coord) => coord.join(',')).join(' ');
|
|
331
|
+
break;
|
|
332
|
+
case geojson_1.GeoJson.EType.Point:
|
|
333
|
+
geometry.Point = coordinates.join(',');
|
|
334
|
+
break;
|
|
335
|
+
case geojson_1.GeoJson.EType.MultiPolygon:
|
|
336
|
+
if (!geometry.MultiGeometry) {
|
|
337
|
+
geometry.MultiGeometry = [];
|
|
338
|
+
}
|
|
339
|
+
coordinates.forEach((multiPolygon) => {
|
|
340
|
+
const multiPolygonGeometry = { Polygon: [] };
|
|
341
|
+
multiPolygon.forEach((polygon, index) => {
|
|
342
|
+
const linearRing = polygon.map(coord => coord.join(',')).join(' ');
|
|
343
|
+
multiPolygonGeometry.Polygon.push({
|
|
344
|
+
LinearRing: linearRing,
|
|
345
|
+
Facing: index === 0 ? Geometry.EPolygonRingType.Boundaries : Geometry.EPolygonRingType.Hole
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
geometry.MultiGeometry.push(multiPolygonGeometry);
|
|
349
|
+
});
|
|
350
|
+
break;
|
|
351
|
+
case geojson_1.GeoJson.EType.MultiLineString:
|
|
352
|
+
if (!geometry.MultiGeometry) {
|
|
353
|
+
geometry.MultiGeometry = [];
|
|
354
|
+
}
|
|
355
|
+
coordinates.forEach((multiLineString) => {
|
|
356
|
+
geometry.MultiGeometry.push({
|
|
357
|
+
LineString: multiLineString.map((coord) => coord.join(',')).join(' ')
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
break;
|
|
361
|
+
case geojson_1.GeoJson.EType.MultiPoint:
|
|
362
|
+
if (!geometry.MultiGeometry) {
|
|
363
|
+
geometry.MultiGeometry = [];
|
|
364
|
+
}
|
|
365
|
+
coordinates.forEach((multiPoint) => {
|
|
366
|
+
geometry.MultiGeometry.push({
|
|
367
|
+
Point: multiPoint.join(',')
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
break;
|
|
371
|
+
default:
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
// Nothing to do. Nothing was made.
|
|
375
|
+
if (Object.keys(geometry).length === 0) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
full.MultiGeometry.push(geometry);
|
|
379
|
+
};
|
|
380
|
+
// Traverse all features.
|
|
381
|
+
if (geoJson.type === geojson_1.GeoJson.EType.Feature) {
|
|
382
|
+
traverse(geoJson);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
(_a = geoJson.features) === null || _a === void 0 ? void 0 : _a.forEach(traverse);
|
|
386
|
+
}
|
|
387
|
+
// If we only have 1 geometry then we'll return it directly.
|
|
388
|
+
if (full.MultiGeometry.length === 1) {
|
|
389
|
+
return {
|
|
390
|
+
geometry: full.MultiGeometry[0],
|
|
391
|
+
properties: properties
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
// If we have multiple but only 1 of each type then that's standard Bruce stuff.
|
|
395
|
+
// Eg: 1 point, 1 line, 1 polygon is a very normal Bruce geometry.
|
|
396
|
+
const countsPerType = {
|
|
397
|
+
Point: 0,
|
|
398
|
+
LineString: 0,
|
|
399
|
+
Polygon: 0
|
|
400
|
+
};
|
|
401
|
+
full.MultiGeometry.forEach(geo => {
|
|
402
|
+
if (geo.Point) {
|
|
403
|
+
countsPerType.Point++;
|
|
404
|
+
}
|
|
405
|
+
else if (geo.LineString) {
|
|
406
|
+
countsPerType.LineString++;
|
|
407
|
+
}
|
|
408
|
+
else if (geo.Polygon) {
|
|
409
|
+
countsPerType.Polygon++;
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
if (countsPerType.Point === 1 && countsPerType.LineString === 1 && countsPerType.Polygon === 1) {
|
|
413
|
+
const merged = {};
|
|
414
|
+
const addToMerged = (geo) => {
|
|
415
|
+
if (geo.Point) {
|
|
416
|
+
merged.Point = geo.Point;
|
|
417
|
+
}
|
|
418
|
+
else if (geo.LineString) {
|
|
419
|
+
merged.LineString = geo.LineString;
|
|
420
|
+
}
|
|
421
|
+
else if (geo.Polygon) {
|
|
422
|
+
merged.Polygon = geo.Polygon;
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
full.MultiGeometry.forEach(addToMerged);
|
|
426
|
+
return {
|
|
427
|
+
geometry: merged,
|
|
428
|
+
properties: properties
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
// If there are many polygons but only 1 line and/or 1 point then we'll put those singles into the top-level.
|
|
432
|
+
// Eg: 5 polygons, 1 point, 1 line. That should be a single geometry.
|
|
433
|
+
if (countsPerType.Polygon > 1 && (countsPerType.LineString <= 1 && countsPerType.Point <= 1)) {
|
|
434
|
+
const semiMerged = {};
|
|
435
|
+
const addToSemiMerged = (geo) => {
|
|
436
|
+
if (geo.Point) {
|
|
437
|
+
semiMerged.Point = geo.Point;
|
|
438
|
+
}
|
|
439
|
+
else if (geo.LineString) {
|
|
440
|
+
semiMerged.LineString = geo.LineString;
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
semiMerged.MultiGeometry = full.MultiGeometry.filter(geo => geo.Polygon);
|
|
444
|
+
full.MultiGeometry.forEach(addToSemiMerged);
|
|
445
|
+
return {
|
|
446
|
+
geometry: semiMerged,
|
|
447
|
+
properties: properties
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
// More than 1 of each, then return the full multi-geometry as-is.
|
|
451
|
+
return {
|
|
452
|
+
geometry: full,
|
|
453
|
+
properties: properties
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
Geometry.FromGeoJson = FromGeoJson;
|
|
125
457
|
})(Geometry = exports.Geometry || (exports.Geometry = {}));
|
|
126
458
|
//# sourceMappingURL=geometry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/common/geometry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/common/geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Entity = void 0;
|
|
13
13
|
const api_1 = require("../api/api");
|
|
14
|
-
const geometry_1 = require("../common/geometry");
|
|
15
14
|
const object_utils_1 = require("../util/object-utils");
|
|
16
15
|
const entity_type_1 = require("./entity-type");
|
|
17
16
|
const path_utils_1 = require("../util/path-utils");
|
|
18
17
|
const environment_1 = require("../environment");
|
|
19
|
-
const zoom_control_1 = require("../project/zoom-control");
|
|
20
18
|
const entity_historic_data_1 = require("./entity-historic-data");
|
|
21
19
|
/**
|
|
22
20
|
* Describes the "Entity" concept within Nextspace.
|
|
@@ -784,132 +782,6 @@ var Entity;
|
|
|
784
782
|
return Object.assign(Object.assign({}, baseEntity), { "Bruce": bruce });
|
|
785
783
|
}
|
|
786
784
|
Entity.Assert = Assert;
|
|
787
|
-
/**
|
|
788
|
-
* Helper method that returns a geojson object for a given set of Entities.
|
|
789
|
-
* @param params
|
|
790
|
-
* @returns
|
|
791
|
-
*/
|
|
792
|
-
function ToGeoJson(params) {
|
|
793
|
-
const { entities, excludeAltitude, altitude, includeUserData, allowedDisplayTypes } = params;
|
|
794
|
-
const features = [];
|
|
795
|
-
const allowPoint = allowedDisplayTypes == null || allowedDisplayTypes.includes(zoom_control_1.ZoomControl.EDisplayType.Point);
|
|
796
|
-
const allowGeometry = allowedDisplayTypes == null || allowedDisplayTypes.includes(zoom_control_1.ZoomControl.EDisplayType.Geometry);
|
|
797
|
-
const cloneObj = (obj) => {
|
|
798
|
-
return JSON.parse(JSON.stringify(obj));
|
|
799
|
-
};
|
|
800
|
-
const areCoordinatesEqual = (coord1, coord2) => {
|
|
801
|
-
return coord1[0] === coord2[0] && coord1[1] === coord2[1] && (coord1[2] === coord2[2] || (coord1.length < 3 && coord2.length < 3));
|
|
802
|
-
};
|
|
803
|
-
const removeConsecutiveDuplicates = (coordinates) => {
|
|
804
|
-
return coordinates.filter((coord, index, array) => {
|
|
805
|
-
return index === 0 || !areCoordinatesEqual(coord, array[index - 1]);
|
|
806
|
-
});
|
|
807
|
-
};
|
|
808
|
-
const closePolygonCoordinates = (coordinates) => {
|
|
809
|
-
if (coordinates.length > 0 && !areCoordinatesEqual(coordinates[0], coordinates[coordinates.length - 1])) {
|
|
810
|
-
const firstPointCopy = [...coordinates[0]];
|
|
811
|
-
coordinates.push(firstPointCopy);
|
|
812
|
-
}
|
|
813
|
-
return coordinates;
|
|
814
|
-
};
|
|
815
|
-
const populateProperties = (feature, entity) => {
|
|
816
|
-
let properties = null;
|
|
817
|
-
// All properties.
|
|
818
|
-
if (includeUserData != false) {
|
|
819
|
-
properties = cloneObj(entity);
|
|
820
|
-
// The GeoJSON is supposed to represent the geometry attribute.
|
|
821
|
-
delete properties.Bruce.VectorGeometry;
|
|
822
|
-
delete properties.Bruce.Boundaries;
|
|
823
|
-
}
|
|
824
|
-
// Only specific internal properties.
|
|
825
|
-
else {
|
|
826
|
-
const bClone = cloneObj(entity.Bruce);
|
|
827
|
-
// The GeoJSON is supposed to represent the geometry attribute.
|
|
828
|
-
delete bClone.VectorGeometry;
|
|
829
|
-
delete bClone.Boundaries;
|
|
830
|
-
properties = {
|
|
831
|
-
Bruce: bClone
|
|
832
|
-
};
|
|
833
|
-
}
|
|
834
|
-
feature.properties = properties;
|
|
835
|
-
};
|
|
836
|
-
const processGeometry = (geometry, entity) => {
|
|
837
|
-
var _a, _b;
|
|
838
|
-
const feature = {
|
|
839
|
-
type: "Feature",
|
|
840
|
-
properties: {},
|
|
841
|
-
geometry: null
|
|
842
|
-
};
|
|
843
|
-
populateProperties(feature, entity);
|
|
844
|
-
if (((_a = geometry.MultiGeometry) === null || _a === void 0 ? void 0 : _a.length) && allowGeometry) {
|
|
845
|
-
geometry.MultiGeometry.forEach(geo => processGeometry(geo, entity));
|
|
846
|
-
return;
|
|
847
|
-
}
|
|
848
|
-
else if (((_b = geometry.Polygon) === null || _b === void 0 ? void 0 : _b.length) && allowGeometry) {
|
|
849
|
-
const sortedPolygons = geometry.Polygon.sort((a, b) => a.Facing === geometry_1.Geometry.EPolygonRingType.Boundaries ? -1 : 1);
|
|
850
|
-
const coordinates = sortedPolygons.map(polygonRing => closePolygonCoordinates(removeConsecutiveDuplicates(polygonRing.LinearRing.split(' ').map(coord => {
|
|
851
|
-
const [lon, lat, alt] = coord.split(',').map(Number);
|
|
852
|
-
return excludeAltitude ? [lon, lat] : [lon, lat, altitude !== undefined ? altitude : (alt !== undefined ? alt : [])];
|
|
853
|
-
}))));
|
|
854
|
-
// Check if the polygon has at least 4 points.
|
|
855
|
-
const isValidPolygon = coordinates.every(polygon => polygon.length >= 4);
|
|
856
|
-
if (!isValidPolygon) {
|
|
857
|
-
// Perhaps try other geometry instead of returning?
|
|
858
|
-
return;
|
|
859
|
-
}
|
|
860
|
-
feature.geometry = {
|
|
861
|
-
type: "Polygon",
|
|
862
|
-
coordinates: coordinates,
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
else if (geometry.LineString && (allowedDisplayTypes == null || allowedDisplayTypes.includes(zoom_control_1.ZoomControl.EDisplayType.Geometry))) {
|
|
866
|
-
const coordinates = removeConsecutiveDuplicates(geometry.LineString.split(' ').map(coord => {
|
|
867
|
-
const [lon, lat, alt] = coord.split(',').map(Number);
|
|
868
|
-
return excludeAltitude ? [lon, lat] : [lon, lat, altitude !== undefined ? altitude : (alt !== undefined ? alt : [])];
|
|
869
|
-
}));
|
|
870
|
-
// Check if the polyline has at least 2 points.
|
|
871
|
-
if (coordinates.length < 2) {
|
|
872
|
-
// Perhaps try other geometry instead of returning?
|
|
873
|
-
return;
|
|
874
|
-
}
|
|
875
|
-
feature.geometry = {
|
|
876
|
-
type: "LineString",
|
|
877
|
-
coordinates,
|
|
878
|
-
};
|
|
879
|
-
}
|
|
880
|
-
else if (geometry.Point && allowPoint) {
|
|
881
|
-
const [lon, lat, alt] = geometry.Point.split(',').map(Number);
|
|
882
|
-
const coordinates = excludeAltitude ? [lon, lat] : [lon, lat, altitude !== undefined ? altitude : (alt !== undefined ? alt : [])];
|
|
883
|
-
feature.geometry = {
|
|
884
|
-
type: "Point",
|
|
885
|
-
coordinates,
|
|
886
|
-
};
|
|
887
|
-
}
|
|
888
|
-
if (feature.geometry) {
|
|
889
|
-
features.push(feature);
|
|
890
|
-
}
|
|
891
|
-
};
|
|
892
|
-
entities.forEach(entity => {
|
|
893
|
-
var _a, _b, _c;
|
|
894
|
-
if (!((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID)) {
|
|
895
|
-
return;
|
|
896
|
-
}
|
|
897
|
-
let geometry = entity.Bruce.VectorGeometry;
|
|
898
|
-
if (!geometry && (((_b = entity.Bruce.Location) === null || _b === void 0 ? void 0 : _b.longitude) && ((_c = entity.Bruce.Location) === null || _c === void 0 ? void 0 : _c.latitude))) {
|
|
899
|
-
geometry = {
|
|
900
|
-
Point: `${entity.Bruce.Location.longitude},${entity.Bruce.Location.latitude}` + (entity.Bruce.Location.altitude != null ? `,${entity.Bruce.Location.altitude}` : ""),
|
|
901
|
-
};
|
|
902
|
-
}
|
|
903
|
-
if (geometry) {
|
|
904
|
-
processGeometry(geometry, entity);
|
|
905
|
-
}
|
|
906
|
-
});
|
|
907
|
-
return {
|
|
908
|
-
type: "FeatureCollection",
|
|
909
|
-
features,
|
|
910
|
-
};
|
|
911
|
-
}
|
|
912
|
-
Entity.ToGeoJson = ToGeoJson;
|
|
913
785
|
/**
|
|
914
786
|
* Returns cache identifier for an entity record.
|
|
915
787
|
* Example: {
|