raain-model 2.6.10 → 3.0.1
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/CHANGELOG.md +94 -7
- package/README.md +14 -13
- package/RELEASE_PROCESS.md +91 -4
- package/cartesian/CartesianMeasureValue.d.ts +46 -0
- package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +41 -73
- package/cartesian/CartesianMeasureValue.js.map +1 -0
- package/cartesian/CartesianTools.d.ts +32 -0
- package/{src/cartesian/CartesianTools.ts → cartesian/CartesianTools.js} +69 -130
- package/cartesian/CartesianTools.js.map +1 -0
- package/cartesian/CartesianValue.d.ts +14 -0
- package/cartesian/CartesianValue.js +17 -0
- package/cartesian/CartesianValue.js.map +1 -0
- package/cartesian/EarthMap.d.ts +5 -0
- package/cartesian/EarthMap.js +3 -0
- package/cartesian/EarthMap.js.map +1 -0
- package/cartesian/ICartesianMeasureValue.d.ts +23 -0
- package/cartesian/ICartesianMeasureValue.js +3 -0
- package/cartesian/ICartesianMeasureValue.js.map +1 -0
- package/cartesian/LatLng.d.ts +16 -0
- package/cartesian/LatLng.js +34 -0
- package/cartesian/LatLng.js.map +1 -0
- package/cartesian/RadarCartesianMeasureValue.d.ts +27 -0
- package/cartesian/RadarCartesianMeasureValue.js +24 -0
- package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
- package/cartesian/RainCartesianMeasureValue.d.ts +25 -0
- package/cartesian/RainCartesianMeasureValue.js +25 -0
- package/cartesian/RainCartesianMeasureValue.js.map +1 -0
- package/cartesian/index.js +25 -0
- package/cartesian/index.js.map +1 -0
- package/gauge/GaugeMeasure.d.ts +30 -0
- package/gauge/GaugeMeasure.js +30 -0
- package/gauge/GaugeMeasure.js.map +1 -0
- package/gauge/GaugeNode.d.ts +95 -0
- package/{src/gauge/GaugeNode.ts → gauge/GaugeNode.js} +28 -54
- package/gauge/GaugeNode.js.map +1 -0
- package/gauge/GaugeNodeMap.d.ts +35 -0
- package/gauge/GaugeNodeMap.js +42 -0
- package/gauge/GaugeNodeMap.js.map +1 -0
- package/gauge/index.js +20 -0
- package/gauge/index.js.map +1 -0
- package/index.js +24 -0
- package/index.js.map +1 -0
- package/organization/EventNode.d.ts +30 -0
- package/organization/EventNode.js +30 -0
- package/organization/EventNode.js.map +1 -0
- package/organization/IVersion.js +3 -0
- package/organization/IVersion.js.map +1 -0
- package/organization/Link.d.ts +16 -0
- package/{src/organization/Link.ts → organization/Link.js} +15 -15
- package/organization/Link.js.map +1 -0
- package/organization/Measure.d.ts +30 -0
- package/organization/Measure.js +51 -0
- package/organization/Measure.js.map +1 -0
- package/organization/PeopleNode.d.ts +23 -0
- package/{src/organization/PeopleNode.ts → organization/PeopleNode.js} +10 -20
- package/organization/PeopleNode.js.map +1 -0
- package/organization/RaainNode.d.ts +95 -0
- package/{src/organization/RaainNode.ts → organization/RaainNode.js} +38 -63
- package/organization/RaainNode.js.map +1 -0
- package/organization/TeamNode.d.ts +51 -0
- package/organization/TeamNode.js +52 -0
- package/organization/TeamNode.js.map +1 -0
- package/organization/index.js +24 -0
- package/organization/index.js.map +1 -0
- package/package.json +4 -2
- package/polar/AbstractPolarMeasureValue.d.ts +31 -0
- package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +34 -62
- package/polar/AbstractPolarMeasureValue.js.map +1 -0
- package/polar/IPolarMeasureValue.d.ts +19 -0
- package/polar/IPolarMeasureValue.js +3 -0
- package/polar/IPolarMeasureValue.js.map +1 -0
- package/polar/MeasureValuePolarContainer.d.ts +24 -0
- package/{src/polar/MeasureValuePolarContainer.ts → polar/MeasureValuePolarContainer.js} +13 -29
- package/polar/MeasureValuePolarContainer.js.map +1 -0
- package/polar/PolarFilter.d.ts +16 -0
- package/polar/PolarFilter.js +45 -0
- package/polar/PolarFilter.js.map +1 -0
- package/polar/PolarMeasureValue.d.ts +51 -0
- package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +62 -125
- package/polar/PolarMeasureValue.js.map +1 -0
- package/polar/PolarMeasureValueMap.d.ts +45 -0
- package/{src/polar/PolarMeasureValueMap.ts → polar/PolarMeasureValueMap.js} +88 -165
- package/polar/PolarMeasureValueMap.js.map +1 -0
- package/polar/PolarValue.d.ts +10 -0
- package/polar/PolarValue.js +12 -0
- package/polar/PolarValue.js.map +1 -0
- package/polar/RadarPolarMeasureValue.d.ts +33 -0
- package/{src/polar/RadarPolarMeasureValue.ts → polar/RadarPolarMeasureValue.js} +31 -39
- package/polar/RadarPolarMeasureValue.js.map +1 -0
- package/polar/RainPolarMeasureValue.d.ts +24 -0
- package/polar/RainPolarMeasureValue.js +46 -0
- package/polar/RainPolarMeasureValue.js.map +1 -0
- package/polar/index.js +25 -0
- package/polar/index.js.map +1 -0
- package/quality/QualityPoint.d.ts +37 -0
- package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +33 -56
- package/quality/QualityPoint.js.map +1 -0
- package/quality/SpeedMatrix.d.ts +83 -0
- package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -117
- package/quality/SpeedMatrix.js.map +1 -0
- package/quality/SpeedMatrixContainer.d.ts +102 -0
- package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +103 -210
- package/quality/SpeedMatrixContainer.js.map +1 -0
- package/quality/history/CartesianGaugeHistory.d.ts +15 -0
- package/quality/history/CartesianGaugeHistory.js +14 -0
- package/quality/history/CartesianGaugeHistory.js.map +1 -0
- package/quality/history/CartesianRainHistory.d.ts +9 -0
- package/quality/history/CartesianRainHistory.js +11 -0
- package/quality/history/CartesianRainHistory.js.map +1 -0
- package/quality/history/PositionHistory.d.ts +20 -0
- package/quality/history/PositionHistory.js +17 -0
- package/quality/history/PositionHistory.js.map +1 -0
- package/{src/quality/index.ts → quality/index.d.ts} +0 -3
- package/quality/index.js +26 -0
- package/quality/index.js.map +1 -0
- package/quality/position/Position.d.ts +22 -0
- package/quality/position/Position.js +50 -0
- package/quality/position/Position.js.map +1 -0
- package/quality/position/PositionValue.d.ts +9 -0
- package/quality/position/PositionValue.js +12 -0
- package/quality/position/PositionValue.js.map +1 -0
- package/quality/tools/QualityTools.d.ts +9 -0
- package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +17 -18
- package/quality/tools/QualityTools.js.map +1 -0
- package/radar/RadarMeasure.d.ts +38 -0
- package/radar/RadarMeasure.js +33 -0
- package/radar/RadarMeasure.js.map +1 -0
- package/radar/RadarNode.d.ts +41 -0
- package/radar/RadarNode.js +58 -0
- package/radar/RadarNode.js.map +1 -0
- package/radar/RadarNodeMap.d.ts +51 -0
- package/radar/RadarNodeMap.js +50 -0
- package/radar/RadarNodeMap.js.map +1 -0
- package/radar/index.js +20 -0
- package/radar/index.js.map +1 -0
- package/rain/MergeStrategy.d.ts +13 -0
- package/rain/MergeStrategy.js +11 -0
- package/rain/MergeStrategy.js.map +1 -0
- package/rain/RainComputation.d.ts +59 -0
- package/rain/RainComputation.js +68 -0
- package/rain/RainComputation.js.map +1 -0
- package/rain/RainComputationAbstract.d.ts +89 -0
- package/rain/RainComputationAbstract.js +207 -0
- package/rain/RainComputationAbstract.js.map +1 -0
- package/rain/RainComputationMap.d.ts +113 -0
- package/{src/rain/RainComputationMap.ts → rain/RainComputationMap.js} +26 -60
- package/rain/RainComputationMap.js.map +1 -0
- package/rain/RainComputationQuality.d.ts +58 -0
- package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +52 -89
- package/rain/RainComputationQuality.js.map +1 -0
- package/rain/RainMeasure.d.ts +17 -0
- package/rain/RainMeasure.js +18 -0
- package/rain/RainMeasure.js.map +1 -0
- package/rain/RainNode.d.ts +60 -0
- package/rain/RainNode.js +198 -0
- package/rain/RainNode.js.map +1 -0
- package/{src/rain/index.ts → rain/index.d.ts} +1 -0
- package/rain/index.js +24 -0
- package/rain/index.js.map +1 -0
- package/.cursorignore +0 -10
- package/.github/workflows/ci.yml +0 -29
- package/LICENSE +0 -21
- package/RELEASE.md +0 -19
- package/specs/REQUIREMENTS.md +0 -42
- package/specs/TECHNICAL.md +0 -57
- package/specs/cartesian/Cartesian.spec.ts +0 -82
- package/specs/cartesian/CartesianTools.spec.ts +0 -121
- package/specs/gauge/Gauge.spec.ts +0 -39
- package/specs/organization/Organization.spec.ts +0 -38
- package/specs/polar/Polar.spec.ts +0 -267
- package/specs/quality/Position.spec.ts +0 -18
- package/specs/quality/QualityPointEdgeCases.spec.ts +0 -215
- package/specs/quality/QualityTools.spec.ts +0 -67
- package/specs/quality/SpeedMatrix.spec.ts +0 -214
- package/specs/radar/Radar.spec.ts +0 -129
- package/specs/rain/Rain.spec.ts +0 -334
- package/specs/tsconfig.json +0 -12
- package/src/cartesian/CartesianValue.ts +0 -26
- package/src/cartesian/EarthMap.ts +0 -5
- package/src/cartesian/ICartesianMeasureValue.ts +0 -22
- package/src/cartesian/LatLng.ts +0 -43
- package/src/cartesian/RadarCartesianMeasureValue.ts +0 -32
- package/src/cartesian/RainCartesianMeasureValue.ts +0 -32
- package/src/gauge/GaugeMeasure.ts +0 -42
- package/src/gauge/GaugeNodeMap.ts +0 -55
- package/src/organization/EventNode.ts +0 -43
- package/src/organization/Measure.ts +0 -61
- package/src/organization/TeamNode.ts +0 -91
- package/src/polar/IPolarMeasureValue.ts +0 -21
- package/src/polar/PolarFilter.ts +0 -46
- package/src/polar/PolarValue.ts +0 -16
- package/src/polar/RainPolarMeasureValue.ts +0 -57
- package/src/quality/history/CartesianGaugeHistory.ts +0 -23
- package/src/quality/history/CartesianRainHistory.ts +0 -15
- package/src/quality/history/PositionHistory.ts +0 -31
- package/src/quality/position/Position.ts +0 -59
- package/src/quality/position/PositionValue.ts +0 -15
- package/src/radar/RadarMeasure.ts +0 -41
- package/src/radar/RadarNode.ts +0 -78
- package/src/radar/RadarNodeMap.ts +0 -61
- package/src/rain/MergeStrategy.ts +0 -15
- package/src/rain/RainComputation.ts +0 -96
- package/src/rain/RainComputationAbstract.ts +0 -262
- package/src/rain/RainMeasure.ts +0 -25
- package/src/rain/RainNode.ts +0 -235
- package/tsconfig.json +0 -17
- package/tslint.json +0 -79
- package/typedoc.json +0 -31
- /package/{src/cartesian/index.ts → cartesian/index.d.ts} +0 -0
- /package/{src/gauge/index.ts → gauge/index.d.ts} +0 -0
- /package/{src/index.ts → index.d.ts} +0 -0
- /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
- /package/{src/organization/index.ts → organization/index.d.ts} +0 -0
- /package/{src/polar/index.ts → polar/index.d.ts} +0 -0
- /package/{src/radar/index.ts → radar/index.d.ts} +0 -0
|
@@ -1,57 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
public roundScale: Position = new Position({x: CartesianTools.DEFAULT_SCALE, y: CartesianTools.DEFAULT_SCALE})
|
|
29
|
-
) {
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix {
|
|
33
|
-
const created = new SpeedMatrix(
|
|
34
|
-
json.name,
|
|
35
|
-
json.remarks,
|
|
36
|
-
json.qualityPoints,
|
|
37
|
-
json.speed,
|
|
38
|
-
json.trustedTechnicalIndicator,
|
|
39
|
-
json.flattenPositionRange,
|
|
40
|
-
json.roundScale);
|
|
41
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpeedMatrix = void 0;
|
|
4
|
+
const PositionHistory_1 = require("./history/PositionHistory");
|
|
5
|
+
const PositionValue_1 = require("./position/PositionValue");
|
|
6
|
+
const QualityTools_1 = require("./tools/QualityTools");
|
|
7
|
+
const Position_1 = require("./position/Position");
|
|
8
|
+
const QualityPoint_1 = require("./QualityPoint");
|
|
9
|
+
const CartesianValue_1 = require("../cartesian/CartesianValue");
|
|
10
|
+
const CartesianTools_1 = require("../cartesian/CartesianTools");
|
|
11
|
+
class SpeedMatrix {
|
|
12
|
+
constructor(name, remarks, qualityPoints, speed = { angleInDegrees: 0, pixelsPerPeriod: 0 }, trustedTechnicalIndicator = SpeedMatrix.DEFAULT_TRUSTED_INDICATOR, flattenPositionRange = {
|
|
13
|
+
xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
14
|
+
xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
15
|
+
yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
16
|
+
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
17
|
+
}, roundScale = new Position_1.Position({ x: CartesianTools_1.CartesianTools.DEFAULT_SCALE, y: CartesianTools_1.CartesianTools.DEFAULT_SCALE })) {
|
|
18
|
+
this.name = name;
|
|
19
|
+
this.remarks = remarks;
|
|
20
|
+
this.qualityPoints = qualityPoints;
|
|
21
|
+
this.speed = speed;
|
|
22
|
+
this.trustedTechnicalIndicator = trustedTechnicalIndicator;
|
|
23
|
+
this.flattenPositionRange = flattenPositionRange;
|
|
24
|
+
this.roundScale = roundScale;
|
|
25
|
+
}
|
|
26
|
+
static CreateFromJson(json) {
|
|
27
|
+
const created = new SpeedMatrix(json.name, json.remarks, json.qualityPoints, json.speed, json.trustedTechnicalIndicator, json.flattenPositionRange, json.roundScale);
|
|
42
28
|
if (json.flattenPositionHistory) {
|
|
43
29
|
created.flattenPositionHistory = json.flattenPositionHistory;
|
|
44
30
|
}
|
|
45
|
-
|
|
46
31
|
return created;
|
|
47
32
|
}
|
|
48
|
-
|
|
49
33
|
/**
|
|
50
34
|
* Get quality indicator based on delta from computed vs reality
|
|
51
35
|
* 0 is ideal
|
|
52
36
|
* 2.56 (for example) is not ideal => can be improved :)
|
|
53
37
|
*/
|
|
54
|
-
|
|
38
|
+
static ComputeQualityIndicator(points) {
|
|
55
39
|
let indicator = 0;
|
|
56
40
|
for (const point of points) {
|
|
57
41
|
indicator += point.getDelta();
|
|
@@ -59,40 +43,34 @@ export class SpeedMatrix {
|
|
|
59
43
|
if (points.length > 0) {
|
|
60
44
|
indicator = indicator / points.length;
|
|
61
45
|
}
|
|
62
|
-
|
|
63
46
|
return indicator;
|
|
64
47
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
73
|
-
},
|
|
74
|
-
logger = console) {
|
|
75
|
-
|
|
76
|
-
const labelWithSign = (val: number) => {
|
|
48
|
+
static LogPositionValues(positionValues, valueDisplayFn, flattenPositionRange = {
|
|
49
|
+
xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
50
|
+
xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
51
|
+
yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
52
|
+
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
53
|
+
}, logger = console) {
|
|
54
|
+
const labelWithSign = (val) => {
|
|
77
55
|
if (val < 0) {
|
|
78
56
|
return '' + val;
|
|
79
|
-
}
|
|
57
|
+
}
|
|
58
|
+
else if (val === 0) {
|
|
80
59
|
return ' ' + 0;
|
|
81
60
|
}
|
|
82
61
|
return '+' + val;
|
|
83
|
-
}
|
|
84
|
-
const labelX = (x
|
|
62
|
+
};
|
|
63
|
+
const labelX = (x) => {
|
|
85
64
|
return 'x' + labelWithSign(x - flattenPositionRange.xMax);
|
|
86
65
|
};
|
|
87
|
-
const labelY = (y
|
|
66
|
+
const labelY = (y) => {
|
|
88
67
|
return 'y' + labelWithSign(y - flattenPositionRange.yMax);
|
|
89
68
|
};
|
|
90
|
-
|
|
91
69
|
const matrixToRender = {};
|
|
92
70
|
for (let y = flattenPositionRange.yMax - flattenPositionRange.yMin; y >= 0; y--) {
|
|
93
71
|
const xObject = {};
|
|
94
72
|
for (let x = 0; x <= flattenPositionRange.xMax - flattenPositionRange.xMin; x++) {
|
|
95
|
-
xObject[labelX(x)] = valueDisplayFn(new PositionHistory({
|
|
73
|
+
xObject[labelX(x)] = valueDisplayFn(new PositionHistory_1.PositionHistory({
|
|
96
74
|
id: 'id',
|
|
97
75
|
label: 'label',
|
|
98
76
|
date: new Date(),
|
|
@@ -113,65 +91,54 @@ export class SpeedMatrix {
|
|
|
113
91
|
matrixToRender[labelY(yOfMatrix)][labelX(xOfMatrix)] = valueDisplayFn(value);
|
|
114
92
|
}
|
|
115
93
|
}
|
|
116
|
-
|
|
117
|
-
logger?.table(matrixToRender);
|
|
94
|
+
logger === null || logger === void 0 ? void 0 : logger.table(matrixToRender);
|
|
118
95
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
public static Normalize(values: PositionValue[]): PositionValue[] {
|
|
122
|
-
const built: PositionValue[] = [];
|
|
96
|
+
static Normalize(values) {
|
|
97
|
+
const built = [];
|
|
123
98
|
let maxValue = Number.EPSILON;
|
|
124
99
|
for (const pos of values) {
|
|
125
100
|
maxValue = Math.max(maxValue, pos.value);
|
|
126
101
|
}
|
|
127
102
|
for (const pos of values) {
|
|
128
103
|
const normalizedValue = pos.value / maxValue;
|
|
129
|
-
built.push(new PositionValue({x: pos.x, y: pos.y, value: normalizedValue}));
|
|
104
|
+
built.push(new PositionValue_1.PositionValue({ x: pos.x, y: pos.y, value: normalizedValue }));
|
|
130
105
|
}
|
|
131
106
|
return built;
|
|
132
107
|
}
|
|
133
|
-
|
|
134
|
-
renderFlatten(options: { normalize: boolean }): PositionValue[] {
|
|
135
|
-
|
|
108
|
+
renderFlatten(options) {
|
|
136
109
|
const positionMatrix = this.getFlatten();
|
|
137
110
|
if (positionMatrix.length === 0) {
|
|
138
111
|
return [];
|
|
139
112
|
}
|
|
140
|
-
|
|
141
|
-
const positionHistories: PositionValue[] = [];
|
|
113
|
+
const positionHistories = [];
|
|
142
114
|
let maxValue = 0;
|
|
143
115
|
for (const [iX, posX] of positionMatrix.entries()) {
|
|
144
116
|
for (const [iY, value] of posX.entries()) {
|
|
145
117
|
const x = iX + this.flattenPositionRange.xMin;
|
|
146
118
|
const y = iY + this.flattenPositionRange.yMin;
|
|
147
119
|
maxValue = Math.max(maxValue, value);
|
|
148
|
-
positionHistories.push(new PositionValue({x, y, value}));
|
|
120
|
+
positionHistories.push(new PositionValue_1.PositionValue({ x, y, value }));
|
|
149
121
|
}
|
|
150
122
|
}
|
|
151
|
-
|
|
152
123
|
// Normalize
|
|
153
124
|
if (maxValue && options.normalize) {
|
|
154
125
|
positionHistories.forEach(p => {
|
|
155
126
|
p.value = p.value / maxValue;
|
|
156
127
|
});
|
|
157
128
|
}
|
|
158
|
-
|
|
159
129
|
return positionHistories;
|
|
160
130
|
}
|
|
161
|
-
|
|
162
|
-
getGaugeIdRelatedValues(id: string): QualityPoint {
|
|
131
|
+
getGaugeIdRelatedValues(id) {
|
|
163
132
|
const points = this.qualityPoints.filter(p => p.gaugeId === id);
|
|
164
133
|
if (points.length === 1) {
|
|
165
134
|
return points[0];
|
|
166
135
|
}
|
|
167
136
|
return null;
|
|
168
137
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return this.qualityPoints.map(p => new QualityPoint(p));
|
|
138
|
+
getQualityPoints() {
|
|
139
|
+
return this.qualityPoints.map(p => new QualityPoint_1.QualityPoint(p));
|
|
172
140
|
}
|
|
173
|
-
|
|
174
|
-
getMaxRain(): number {
|
|
141
|
+
getMaxRain() {
|
|
175
142
|
const qualityPoints = this.getQualityPoints();
|
|
176
143
|
let max = -1;
|
|
177
144
|
for (const p of qualityPoints) {
|
|
@@ -179,8 +146,7 @@ export class SpeedMatrix {
|
|
|
179
146
|
}
|
|
180
147
|
return max;
|
|
181
148
|
}
|
|
182
|
-
|
|
183
|
-
getMaxGauge(): number {
|
|
149
|
+
getMaxGauge() {
|
|
184
150
|
const qualityPoints = this.getQualityPoints();
|
|
185
151
|
let max = -1;
|
|
186
152
|
for (const p of qualityPoints) {
|
|
@@ -188,15 +154,12 @@ export class SpeedMatrix {
|
|
|
188
154
|
}
|
|
189
155
|
return max;
|
|
190
156
|
}
|
|
191
|
-
|
|
192
|
-
getTrustedTechnicalIndicator(): number {
|
|
157
|
+
getTrustedTechnicalIndicator() {
|
|
193
158
|
return this.trustedTechnicalIndicator;
|
|
194
159
|
}
|
|
195
|
-
|
|
196
|
-
isConsistent(): boolean {
|
|
160
|
+
isConsistent() {
|
|
197
161
|
return this.trustedTechnicalIndicator > SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2;
|
|
198
162
|
}
|
|
199
|
-
|
|
200
163
|
toJSON() {
|
|
201
164
|
return {
|
|
202
165
|
name: this.name,
|
|
@@ -209,13 +172,10 @@ export class SpeedMatrix {
|
|
|
209
172
|
roundScale: this.roundScale,
|
|
210
173
|
};
|
|
211
174
|
}
|
|
212
|
-
|
|
213
|
-
logFlatten(options: { logger: any, simplify: boolean }
|
|
214
|
-
= {logger: console, simplify: false}) {
|
|
175
|
+
logFlatten(options = { logger: console, simplify: false }) {
|
|
215
176
|
const logger = options.logger;
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
const positionHistories = flatten.map(pv => new PositionHistory({
|
|
177
|
+
const flatten = this.renderFlatten({ normalize: false });
|
|
178
|
+
const positionHistories = flatten.map(pv => new PositionHistory_1.PositionHistory({
|
|
219
179
|
id: '-',
|
|
220
180
|
label: '-',
|
|
221
181
|
date: null,
|
|
@@ -225,64 +185,63 @@ export class SpeedMatrix {
|
|
|
225
185
|
valueFromGauge: -1,
|
|
226
186
|
valueFromRain: -1
|
|
227
187
|
}));
|
|
228
|
-
|
|
229
|
-
const valueDisplay = (pv: PositionValue): string => {
|
|
188
|
+
const valueDisplay = (pv) => {
|
|
230
189
|
const v = pv.value;
|
|
231
190
|
if (options.simplify) {
|
|
232
191
|
if (v === 1) {
|
|
233
192
|
return '##';
|
|
234
|
-
}
|
|
193
|
+
}
|
|
194
|
+
else if (v >= 0.8) {
|
|
235
195
|
return '#';
|
|
236
|
-
}
|
|
196
|
+
}
|
|
197
|
+
else if (v >= 0.5) {
|
|
237
198
|
return '=';
|
|
238
|
-
}
|
|
199
|
+
}
|
|
200
|
+
else if (v >= 0.2) {
|
|
239
201
|
return '_';
|
|
240
202
|
}
|
|
241
203
|
return ' ';
|
|
242
204
|
}
|
|
243
205
|
return '' + Math.round(v * 1000) / 1000;
|
|
244
|
-
}
|
|
245
|
-
|
|
206
|
+
};
|
|
246
207
|
SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, this.flattenPositionRange, logger);
|
|
247
208
|
}
|
|
248
|
-
|
|
249
209
|
getSpeed() {
|
|
250
210
|
if (!this.speed) {
|
|
251
|
-
return {angleInDegrees: 0, pixelsPerPeriod: 0};
|
|
211
|
+
return { angleInDegrees: 0, pixelsPerPeriod: 0 };
|
|
252
212
|
}
|
|
253
213
|
return this.speed;
|
|
254
214
|
}
|
|
255
|
-
|
|
256
|
-
protected getFlatten(): number[][] {
|
|
215
|
+
getFlatten() {
|
|
257
216
|
if (this.flattenPositionHistory) {
|
|
258
217
|
return this.flattenPositionHistory;
|
|
259
218
|
}
|
|
260
|
-
|
|
261
219
|
this.flattenPositionHistory = [];
|
|
262
220
|
const yWidth = this.flattenPositionRange.yMax - this.flattenPositionRange.yMin + 1;
|
|
263
221
|
const xWidth = this.flattenPositionRange.xMax - this.flattenPositionRange.xMin + 1;
|
|
264
222
|
for (let y = 0; y < yWidth; y++) {
|
|
265
223
|
this.flattenPositionHistory.push(new Array(xWidth).fill(0));
|
|
266
224
|
}
|
|
267
|
-
|
|
268
225
|
// same position => add value
|
|
269
226
|
for (const qualityPoint of this.qualityPoints) {
|
|
270
227
|
const value = qualityPoint.getRatio();
|
|
271
228
|
const lat = qualityPoint.getRainLat() - qualityPoint.gaugeCartesianValue.lat;
|
|
272
229
|
const lng = qualityPoint.getRainLng() - qualityPoint.gaugeCartesianValue.lng;
|
|
273
|
-
const cartesianValue = new CartesianValue({value, lat, lng});
|
|
274
|
-
const position = QualityTools.MapLatLngToPosition(cartesianValue);
|
|
275
|
-
|
|
230
|
+
const cartesianValue = new CartesianValue_1.CartesianValue({ value, lat, lng });
|
|
231
|
+
const position = QualityTools_1.QualityTools.MapLatLngToPosition(cartesianValue);
|
|
276
232
|
const positionX = Math.round((position.x / this.roundScale.x) - this.flattenPositionRange.xMin);
|
|
277
233
|
const positionY = Math.round((position.y / this.roundScale.y) - this.flattenPositionRange.yMin);
|
|
278
|
-
|
|
279
234
|
if (0 <= positionX && positionX < xWidth && 0 <= positionY && positionY < yWidth) {
|
|
280
235
|
this.flattenPositionHistory[positionX][positionY] += cartesianValue.value;
|
|
281
|
-
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
282
238
|
throw new Error('Matrix ranges and positions are not consistent.');
|
|
283
239
|
}
|
|
284
240
|
}
|
|
285
|
-
|
|
286
241
|
return this.flattenPositionHistory;
|
|
287
242
|
}
|
|
288
243
|
}
|
|
244
|
+
exports.SpeedMatrix = SpeedMatrix;
|
|
245
|
+
SpeedMatrix.DEFAULT_MATRIX_RANGE = 16;
|
|
246
|
+
SpeedMatrix.DEFAULT_TRUSTED_INDICATOR = 1;
|
|
247
|
+
//# sourceMappingURL=SpeedMatrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpeedMatrix.js","sourceRoot":"","sources":["../../src/quality/SpeedMatrix.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,4DAAuD;AACvD,uDAAkD;AAClD,kDAA6C;AAC7C,iDAA4C;AAC5C,gEAA2D;AAC3D,gEAA2D;AAE3D,MAAa,WAAW;IAOpB,YACW,IAAY,EACZ,OAAe,EACZ,aAA6B,EAC7B,QAA6D,EAAC,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAC,EACpG,4BAA4B,WAAW,CAAC,yBAAyB,EACjE,uBAAmF;QACzF,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB;QACvC,IAAI,EAAE,WAAW,CAAC,oBAAoB;QACtC,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB;QACvC,IAAI,EAAE,WAAW,CAAC,oBAAoB;KACzC,EACM,aAAuB,IAAI,mBAAQ,CAAC,EAAC,CAAC,EAAE,+BAAc,CAAC,aAAa,EAAE,CAAC,EAAE,+BAAc,CAAC,aAAa,EAAC,CAAC;QAXvG,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAgB;QAC7B,UAAK,GAAL,KAAK,CAA+F;QACpG,8BAAyB,GAAzB,yBAAyB,CAAwC;QACjE,yBAAoB,GAApB,oBAAoB,CAK7B;QACM,eAAU,GAAV,UAAU,CAA6F;IAElH,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,IAAuB;QAChD,MAAM,OAAO,GAAG,IAAI,WAAW,CAC3B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,UAAU,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACjE,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,uBAAuB,CAAC,MAAsB;QACxD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,cAAiC,EACjC,cAA8C,EAC9C,uBAAmF;QAC/E,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB;QACvC,IAAI,EAAE,WAAW,CAAC,oBAAoB;QACtC,IAAI,EAAE,CAAC,WAAW,CAAC,oBAAoB;QACvC,IAAI,EAAE,WAAW,CAAC,oBAAoB;KACzC,EACD,MAAM,GAAG,OAAO;QAErC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;YAClC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG,GAAG,CAAC;YACpB,CAAC;iBAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,GAAG,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,GAAG,GAAG,GAAG,CAAC;QACrB,CAAC,CAAA;QACD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE;YACzB,OAAO,GAAG,GAAG,aAAa,CAAC,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE;YACzB,OAAO,GAAG,GAAG,aAAa,CAAC,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9E,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9E,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,iCAAe,CAAC;oBACpD,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,IAAI,IAAI,EAAE;oBAChB,CAAC;oBACD,CAAC;oBACD,KAAK,EAAE,CAAC;oBACR,cAAc,EAAE,CAAC;oBACjB,aAAa,EAAE,CAAC;iBACnB,CAAC,CAAC,CAAC;YACR,CAAC;YACD,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACxC,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1E,KAAK,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1E,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC;gBAChD,MAAM,SAAS,GAAG,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC;gBAChD,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;QAED,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAGM,MAAM,CAAC,SAAS,CAAC,MAAuB;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,6BAAa,CAAC,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,OAA+B;QAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAoB,EAAE,CAAC;QAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC9C,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC9C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACrC,iBAAiB,CAAC,IAAI,CAAC,IAAI,6BAAa,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;QAED,YAAY;QACZ,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAChC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC1B,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,EAAU;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,2BAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW;QACP,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,4BAA4B;QACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC;IAC1C,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,yBAAyB,GAAG,WAAW,CAAC,yBAAyB,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,MAAM;QACF,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC;IACN,CAAC;IAED,UAAU,CAAC,UACM,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,iCAAe,CAAC;YAC5D,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,IAAI;YACV,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,cAAc,EAAE,CAAC,CAAC;YAClB,aAAa,EAAE,CAAC,CAAC;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,YAAY,GAAG,CAAC,EAAiB,EAAU,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACV,OAAO,IAAI,CAAC;gBAChB,CAAC;qBAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBAClB,OAAO,GAAG,CAAC;gBACf,CAAC;qBAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBAClB,OAAO,GAAG,CAAC;gBACf,CAAC;qBAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBAClB,OAAO,GAAG,CAAC;gBACf,CAAC;gBACD,OAAO,GAAG,CAAC;YACf,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5C,CAAC,CAAA;QAED,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACtG,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,EAAC,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAES,UAAU;QAChB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC;QACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAC7E,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAC7E,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,2BAAY,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAElE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEhG,IAAI,CAAC,IAAI,SAAS,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,SAAS,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;gBAC/E,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;;AAtRL,kCAuRC;AArRiB,gCAAoB,GAAG,EAAE,CAAC;AAC1B,qCAAyB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { SpeedMatrix } from './SpeedMatrix';
|
|
2
|
+
import { PositionValue } from './position/PositionValue';
|
|
3
|
+
import { QualityPoint } from './QualityPoint';
|
|
4
|
+
import { RainComputationQuality } from '../rain/RainComputationQuality';
|
|
5
|
+
export interface ICompares {
|
|
6
|
+
comparesPerDate: IComparePerDate[];
|
|
7
|
+
compareCumulative: ICompare;
|
|
8
|
+
}
|
|
9
|
+
export interface IComparePerDate {
|
|
10
|
+
date: Date;
|
|
11
|
+
rainComputationQuality: RainComputationQuality;
|
|
12
|
+
compareTimeline: ICompare[];
|
|
13
|
+
}
|
|
14
|
+
export interface ICompare {
|
|
15
|
+
name: string;
|
|
16
|
+
date: Date;
|
|
17
|
+
qualityPointsLegacy: QualityPoint[];
|
|
18
|
+
qualityPoints: QualityPoint[];
|
|
19
|
+
maxValue: number;
|
|
20
|
+
remarks: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class SpeedMatrixContainer {
|
|
23
|
+
protected qualityPoints: any;
|
|
24
|
+
protected trustedIndicators: number[];
|
|
25
|
+
protected flattenMatrices: PositionValue[][];
|
|
26
|
+
protected matrices: SpeedMatrix[];
|
|
27
|
+
constructor(json: {
|
|
28
|
+
matrices: SpeedMatrix[];
|
|
29
|
+
});
|
|
30
|
+
static CreateFromJson(json: any): SpeedMatrixContainer;
|
|
31
|
+
static BuildCompares(qualities: RainComputationQuality[], removeDuplicates?: boolean): ICompares;
|
|
32
|
+
static BuildCompareTimeline(currentQuality: RainComputationQuality, dateMin: Date, dateMax: Date): ICompare[];
|
|
33
|
+
protected static mergeStillComputed(v1: any, v2: any): any;
|
|
34
|
+
protected static mergeDateMin(d1: Date, d2: Date): Date;
|
|
35
|
+
protected static mergeDateMax(d1: Date, d2: Date): Date;
|
|
36
|
+
protected static mergeAvg(v1: number, v2: number): number;
|
|
37
|
+
protected static mergeMin(v1: number, v2: number): number;
|
|
38
|
+
protected static mergeConcat(a1: Array<any>, a2: Array<any>): Array<any>;
|
|
39
|
+
protected static mergeReduce(a1: Array<QualityPoint>, a2: Array<QualityPoint>): Array<QualityPoint>;
|
|
40
|
+
getMatrix(index?: number): SpeedMatrix;
|
|
41
|
+
getMatrixByName(name: string): SpeedMatrix;
|
|
42
|
+
getMatrices(): SpeedMatrix[];
|
|
43
|
+
getQualityPoints(matrixName?: string): QualityPoint[];
|
|
44
|
+
getQualityPointsByHistoricalPosition(position?: number): QualityPoint[];
|
|
45
|
+
getMaxGauge(matrixName?: string): number;
|
|
46
|
+
getMaxRain(matrixName?: string): number;
|
|
47
|
+
/**
|
|
48
|
+
* Get summed quality indicator (0 ideally)
|
|
49
|
+
* @link SpeedMatrix.ComputeQualityIndicator
|
|
50
|
+
*/
|
|
51
|
+
getQuality(matrixName?: string): number;
|
|
52
|
+
getTrustedIndicators(): number[];
|
|
53
|
+
getSpeed(): {
|
|
54
|
+
angleInDegrees: number;
|
|
55
|
+
pixelsPerPeriod: number;
|
|
56
|
+
};
|
|
57
|
+
isConsistent(): boolean;
|
|
58
|
+
getFlattenMatrixCount(): number;
|
|
59
|
+
renderFlattenMatrix(index?: number, options?: {
|
|
60
|
+
normalize?: boolean;
|
|
61
|
+
}): PositionValue[];
|
|
62
|
+
renderMergedMatrix(options?: {
|
|
63
|
+
normalize?: boolean;
|
|
64
|
+
}): PositionValue[];
|
|
65
|
+
toJSON(options?: {
|
|
66
|
+
removeFlatten?: boolean;
|
|
67
|
+
removeMatrices?: boolean;
|
|
68
|
+
removeIndicators?: boolean;
|
|
69
|
+
}): {
|
|
70
|
+
qualityPoints: QualityPoint[];
|
|
71
|
+
trustedIndicators: number[];
|
|
72
|
+
flattenMatrices: PositionValue[][];
|
|
73
|
+
speed: {
|
|
74
|
+
angleInDegrees: number;
|
|
75
|
+
pixelsPerPeriod: number;
|
|
76
|
+
};
|
|
77
|
+
matrices: {
|
|
78
|
+
name: string;
|
|
79
|
+
remarks: string;
|
|
80
|
+
flattenPositionHistory: number[][];
|
|
81
|
+
flattenPositionRange: {
|
|
82
|
+
xMin: number;
|
|
83
|
+
xMax: number;
|
|
84
|
+
yMin: number;
|
|
85
|
+
yMax: number;
|
|
86
|
+
};
|
|
87
|
+
speed: {
|
|
88
|
+
angleInDegrees: number;
|
|
89
|
+
pixelsPerPeriod: number;
|
|
90
|
+
};
|
|
91
|
+
qualityPoints: QualityPoint[];
|
|
92
|
+
trustedTechnicalIndicator: number;
|
|
93
|
+
roundScale: import(".").Position;
|
|
94
|
+
}[];
|
|
95
|
+
};
|
|
96
|
+
merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer): this;
|
|
97
|
+
logMergedMatrix(options?: {
|
|
98
|
+
normalize: boolean;
|
|
99
|
+
logger: any;
|
|
100
|
+
}): void;
|
|
101
|
+
protected storeFlattenMatrices(): PositionValue[][];
|
|
102
|
+
}
|