raain-model 1.11.4 → 1.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cartesian/CartesianMeasureValue.d.ts +41 -0
- package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +34 -64
- package/cartesian/CartesianMeasureValue.js.map +1 -0
- package/cartesian/CartesianValue.d.ts +9 -0
- package/cartesian/CartesianValue.js +12 -0
- package/cartesian/CartesianValue.js.map +1 -0
- package/cartesian/ICartesianMeasureValue.d.ts +29 -0
- package/cartesian/ICartesianMeasureValue.js +3 -0
- package/cartesian/ICartesianMeasureValue.js.map +1 -0
- package/cartesian/LatLng.d.ts +12 -0
- package/cartesian/LatLng.js +31 -0
- package/cartesian/LatLng.js.map +1 -0
- package/cartesian/RadarCartesianMeasureValue.d.ts +15 -0
- package/cartesian/RadarCartesianMeasureValue.js +22 -0
- package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
- package/cartesian/RainCartesianMeasureValue.d.ts +17 -0
- package/cartesian/RainCartesianMeasureValue.js +25 -0
- package/cartesian/RainCartesianMeasureValue.js.map +1 -0
- package/gauge/GaugeMeasure.d.ts +20 -0
- package/gauge/GaugeMeasure.js +24 -0
- package/gauge/GaugeMeasure.js.map +1 -0
- package/gauge/GaugeNode.d.ts +24 -0
- package/gauge/GaugeNode.js +31 -0
- package/gauge/GaugeNode.js.map +1 -0
- package/gauge/GaugeNodeMap.d.ts +22 -0
- package/gauge/GaugeNodeMap.js +42 -0
- package/gauge/GaugeNodeMap.js.map +1 -0
- package/{src/index.ts → index.d.ts} +0 -6
- package/index.js +56 -0
- package/index.js.map +1 -0
- package/organization/EventNode.d.ts +22 -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} +13 -13
- package/organization/Link.js.map +1 -0
- package/organization/Measure.d.ts +20 -0
- package/organization/Measure.js +35 -0
- package/organization/Measure.js.map +1 -0
- package/organization/PeopleNode.d.ts +18 -0
- package/organization/PeopleNode.js +26 -0
- package/organization/PeopleNode.js.map +1 -0
- package/organization/RaainNode.d.ts +23 -0
- package/{src/organization/RaainNode.ts → organization/RaainNode.js} +29 -53
- package/organization/RaainNode.js.map +1 -0
- package/organization/TeamNode.d.ts +22 -0
- package/organization/TeamNode.js +32 -0
- package/organization/TeamNode.js.map +1 -0
- package/package.json +1 -1
- package/polar/AbstractPolarMeasureValue.d.ts +29 -0
- package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +29 -53
- package/polar/AbstractPolarMeasureValue.js.map +1 -0
- package/polar/GaugePolarMeasureValue.d.ts +11 -0
- package/polar/GaugePolarMeasureValue.js +14 -0
- package/polar/GaugePolarMeasureValue.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 +11 -0
- package/polar/MeasureValuePolarContainer.js +22 -0
- package/polar/MeasureValuePolarContainer.js.map +1 -0
- package/polar/PolarMeasureValue.d.ts +26 -0
- package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +27 -46
- package/polar/PolarMeasureValue.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 +15 -0
- package/polar/RadarPolarMeasureValue.js +34 -0
- package/polar/RadarPolarMeasureValue.js.map +1 -0
- package/polar/RainPolarMeasureValue.d.ts +18 -0
- package/polar/RainPolarMeasureValue.js +42 -0
- package/polar/RainPolarMeasureValue.js.map +1 -0
- package/quality/QualityPoint.d.ts +35 -0
- package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +23 -48
- package/quality/QualityPoint.js.map +1 -0
- package/quality/SpeedMatrix.d.ts +81 -0
- package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -116
- package/quality/SpeedMatrix.js.map +1 -0
- package/quality/SpeedMatrixContainer.d.ts +79 -0
- package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +76 -141
- 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 +11 -0
- package/quality/history/CartesianRainHistory.js +12 -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/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 +24 -0
- package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +49 -82
- package/quality/tools/QualityTools.js.map +1 -0
- package/radar/RadarMeasure.d.ts +17 -0
- package/radar/RadarMeasure.js +18 -0
- package/radar/RadarMeasure.js.map +1 -0
- package/radar/RadarNode.d.ts +24 -0
- package/radar/RadarNode.js +31 -0
- package/radar/RadarNode.js.map +1 -0
- package/radar/RadarNodeMap.d.ts +28 -0
- package/radar/RadarNodeMap.js +46 -0
- package/radar/RadarNodeMap.js.map +1 -0
- package/rain/RainComputation.d.ts +34 -0
- package/rain/RainComputation.js +55 -0
- package/rain/RainComputation.js.map +1 -0
- package/rain/RainComputationAbstract.d.ts +41 -0
- package/rain/RainComputationAbstract.js +102 -0
- package/rain/RainComputationAbstract.js.map +1 -0
- package/rain/RainComputationMap.d.ts +32 -0
- package/rain/RainComputationMap.js +45 -0
- package/rain/RainComputationMap.js.map +1 -0
- package/rain/RainComputationQuality.d.ts +37 -0
- package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +20 -56
- package/rain/RainComputationQuality.js.map +1 -0
- package/rain/RainMeasure.d.ts +18 -0
- package/rain/RainMeasure.js +19 -0
- package/rain/RainMeasure.js.map +1 -0
- package/rain/RainNode.d.ts +38 -0
- package/{src/rain/RainNode.ts → rain/RainNode.js} +48 -76
- package/rain/RainNode.js.map +1 -0
- package/.travis.deploy.sh +0 -41
- package/.travis.yml +0 -22
- package/specs/cartesian/Cartesian.spec.ts +0 -56
- package/specs/gauge/Gauge.spec.ts +0 -19
- package/specs/organization/Organization.spec.ts +0 -32
- package/specs/polar/Polar.spec.ts +0 -25
- package/specs/quality/Position.spec.ts +0 -18
- package/specs/quality/QualityTools.spec.ts +0 -120
- package/specs/quality/SpeedMatrix.spec.ts +0 -125
- package/specs/radar/Radar.spec.ts +0 -18
- package/specs/rain/Rain.spec.ts +0 -71
- package/specs/tsconfig.json +0 -12
- package/src/cartesian/CartesianValue.ts +0 -17
- package/src/cartesian/ICartesianMeasureValue.ts +0 -27
- package/src/cartesian/LatLng.ts +0 -39
- package/src/cartesian/RadarCartesianMeasureValue.ts +0 -29
- package/src/cartesian/RainCartesianMeasureValue.ts +0 -33
- package/src/gauge/GaugeMeasure.ts +0 -36
- package/src/gauge/GaugeNode.ts +0 -46
- package/src/gauge/GaugeNodeMap.ts +0 -55
- package/src/organization/EventNode.ts +0 -44
- package/src/organization/Measure.ts +0 -49
- package/src/organization/PeopleNode.ts +0 -36
- package/src/organization/TeamNode.ts +0 -46
- package/src/polar/GaugePolarMeasureValue.ts +0 -15
- package/src/polar/IPolarMeasureValue.ts +0 -21
- package/src/polar/MeasureValuePolarContainer.ts +0 -28
- package/src/polar/PolarValue.ts +0 -16
- package/src/polar/RadarPolarMeasureValue.ts +0 -43
- package/src/polar/RainPolarMeasureValue.ts +0 -57
- package/src/quality/history/CartesianGaugeHistory.ts +0 -23
- package/src/quality/history/CartesianRainHistory.ts +0 -18
- package/src/quality/history/PositionHistory.ts +0 -31
- package/src/quality/position/Position.ts +0 -60
- package/src/quality/position/PositionValue.ts +0 -15
- package/src/radar/RadarMeasure.ts +0 -27
- package/src/radar/RadarNode.ts +0 -46
- package/src/radar/RadarNodeMap.ts +0 -65
- package/src/rain/RainComputation.ts +0 -82
- package/src/rain/RainComputationAbstract.ts +0 -137
- package/src/rain/RainComputationMap.ts +0 -68
- package/src/rain/RainMeasure.ts +0 -27
- package/tsconfig.json +0 -17
- package/tslint.json +0 -79
- /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
|
@@ -1,26 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
public gaugeLabel: string;
|
|
7
|
-
public gaugeDate: Date;
|
|
8
|
-
public rainDate: Date;
|
|
9
|
-
public gaugeCartesianValue: CartesianValue;
|
|
10
|
-
public rainCartesianValues: CartesianValue[];
|
|
11
|
-
public speed: { x: number, y: number };
|
|
12
|
-
public remark: string;
|
|
13
|
-
|
|
14
|
-
constructor(json: {
|
|
15
|
-
gaugeId: string,
|
|
16
|
-
gaugeLabel: string,
|
|
17
|
-
gaugeDate: Date,
|
|
18
|
-
rainDate: Date,
|
|
19
|
-
gaugeCartesianValue: CartesianValue,
|
|
20
|
-
rainCartesianValues: CartesianValue[],
|
|
21
|
-
speed: { x: number, y: number },
|
|
22
|
-
remark: string,
|
|
23
|
-
}) {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QualityPoint = void 0;
|
|
4
|
+
class QualityPoint {
|
|
5
|
+
constructor(json) {
|
|
24
6
|
this.gaugeId = json.gaugeId;
|
|
25
7
|
this.gaugeLabel = json.gaugeLabel;
|
|
26
8
|
this.gaugeDate = new Date(json.gaugeDate);
|
|
@@ -30,59 +12,52 @@ export class QualityPoint {
|
|
|
30
12
|
this.speed = json.speed;
|
|
31
13
|
this.remark = json.remark;
|
|
32
14
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return this.gaugeCartesianValue
|
|
15
|
+
getGaugeValue() {
|
|
16
|
+
var _a;
|
|
17
|
+
return (_a = this.gaugeCartesianValue) === null || _a === void 0 ? void 0 : _a.value;
|
|
36
18
|
}
|
|
37
|
-
|
|
38
|
-
getRainValue(): number {
|
|
19
|
+
getRainValue() {
|
|
39
20
|
const sum = this.rainCartesianValues.reduce((prev, rcv) => prev + rcv.value, 0);
|
|
40
21
|
return this.rainCartesianValues.length ? sum / this.rainCartesianValues.length : 0;
|
|
41
22
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return this.getMiddleValue()
|
|
23
|
+
getRainLat() {
|
|
24
|
+
var _a;
|
|
25
|
+
return (_a = this.getMiddleValue()) === null || _a === void 0 ? void 0 : _a.lat;
|
|
45
26
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return this.getMiddleValue()
|
|
27
|
+
getRainLng() {
|
|
28
|
+
var _a;
|
|
29
|
+
return (_a = this.getMiddleValue()) === null || _a === void 0 ? void 0 : _a.lng;
|
|
49
30
|
}
|
|
50
|
-
|
|
51
|
-
getDelta(): number {
|
|
31
|
+
getDelta() {
|
|
52
32
|
return Math.abs(this.getRainValue() - this.getGaugeValue());
|
|
53
33
|
}
|
|
54
|
-
|
|
55
|
-
getRatio(): number {
|
|
56
|
-
|
|
34
|
+
getRatio() {
|
|
57
35
|
let ratio = 0;
|
|
58
36
|
if (this.getRainValue() === 0) {
|
|
59
37
|
return ratio;
|
|
60
38
|
}
|
|
61
|
-
|
|
62
39
|
if (this.getGaugeValue() > this.getRainValue()) {
|
|
63
40
|
ratio = this.getRainValue() / this.getGaugeValue();
|
|
64
|
-
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
65
43
|
ratio = this.getGaugeValue() / this.getRainValue();
|
|
66
44
|
}
|
|
67
|
-
|
|
68
45
|
return ratio;
|
|
69
46
|
}
|
|
70
|
-
|
|
71
|
-
getTimeDeltaInMinutes(): number {
|
|
47
|
+
getTimeDeltaInMinutes() {
|
|
72
48
|
const delta = this.rainDate.getTime() - this.gaugeDate.getTime();
|
|
73
49
|
return Math.round(delta / 60000);
|
|
74
50
|
}
|
|
75
|
-
|
|
76
|
-
private getMiddleValue(): CartesianValue {
|
|
51
|
+
getMiddleValue() {
|
|
77
52
|
if (!this.rainCartesianValues || this.rainCartesianValues.length === 0) {
|
|
78
53
|
return null;
|
|
79
54
|
}
|
|
80
|
-
|
|
81
55
|
const sortedValues = this.rainCartesianValues.sort((a, b) => {
|
|
82
56
|
return (a.lat - b.lat) * (a.lng - b.lng);
|
|
83
57
|
});
|
|
84
58
|
const middlePos = Math.floor(sortedValues.length / 2);
|
|
85
59
|
return sortedValues[middlePos];
|
|
86
60
|
}
|
|
87
|
-
|
|
88
61
|
}
|
|
62
|
+
exports.QualityPoint = QualityPoint;
|
|
63
|
+
//# sourceMappingURL=QualityPoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QualityPoint.js","sourceRoot":"","sources":["../../src/quality/QualityPoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { PositionHistory } from './history/PositionHistory';
|
|
2
|
+
import { PositionValue } from './position/PositionValue';
|
|
3
|
+
import { Position } from './position/Position';
|
|
4
|
+
import { QualityPoint } from './QualityPoint';
|
|
5
|
+
export declare class SpeedMatrix {
|
|
6
|
+
name: string;
|
|
7
|
+
protected qualityPoints: QualityPoint[];
|
|
8
|
+
protected speed: {
|
|
9
|
+
angleInDegrees: number;
|
|
10
|
+
pixelsPerPeriod: number;
|
|
11
|
+
};
|
|
12
|
+
protected trustedTechnicalIndicator: number;
|
|
13
|
+
protected flattenPositionRange: {
|
|
14
|
+
xMin: number;
|
|
15
|
+
xMax: number;
|
|
16
|
+
yMin: number;
|
|
17
|
+
yMax: number;
|
|
18
|
+
};
|
|
19
|
+
protected roundScale: Position;
|
|
20
|
+
static DEFAULT_MATRIX_RANGE: number;
|
|
21
|
+
static DEFAULT_TRUSTED_INDICATOR: number;
|
|
22
|
+
protected flattenPositionHistory: number[][];
|
|
23
|
+
constructor(name: string, qualityPoints: QualityPoint[], speed?: {
|
|
24
|
+
angleInDegrees: number;
|
|
25
|
+
pixelsPerPeriod: number;
|
|
26
|
+
}, trustedTechnicalIndicator?: number, flattenPositionRange?: {
|
|
27
|
+
xMin: number;
|
|
28
|
+
xMax: number;
|
|
29
|
+
yMin: number;
|
|
30
|
+
yMax: number;
|
|
31
|
+
}, roundScale?: Position);
|
|
32
|
+
static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix;
|
|
33
|
+
/**
|
|
34
|
+
* Get quality indicator based on delta from computed vs reality
|
|
35
|
+
* 0 is ideal
|
|
36
|
+
* 2.56 (for example) is not ideal => can be improved :)
|
|
37
|
+
*/
|
|
38
|
+
static ComputeQualityIndicator(points: QualityPoint[]): number;
|
|
39
|
+
static LogPositionValues(positionValues: PositionHistory[], valueDisplayFn: (v: PositionHistory) => string, flattenPositionRange?: {
|
|
40
|
+
xMin: number;
|
|
41
|
+
xMax: number;
|
|
42
|
+
yMin: number;
|
|
43
|
+
yMax: number;
|
|
44
|
+
}, logger?: Console): void;
|
|
45
|
+
static Normalize(values: PositionValue[]): PositionValue[];
|
|
46
|
+
renderFlatten(options: {
|
|
47
|
+
normalize: boolean;
|
|
48
|
+
}): PositionValue[];
|
|
49
|
+
getGaugeIdRelatedValues(id: string): QualityPoint;
|
|
50
|
+
getQualityPoints(): QualityPoint[];
|
|
51
|
+
getMaxRain(): number;
|
|
52
|
+
getMaxGauge(): number;
|
|
53
|
+
getTrustedTechnicalIndicator(): number;
|
|
54
|
+
isConsistent(): boolean;
|
|
55
|
+
toJSON(): {
|
|
56
|
+
name: string;
|
|
57
|
+
flattenPositionHistory: number[][];
|
|
58
|
+
flattenPositionRange: {
|
|
59
|
+
xMin: number;
|
|
60
|
+
xMax: number;
|
|
61
|
+
yMin: number;
|
|
62
|
+
yMax: number;
|
|
63
|
+
};
|
|
64
|
+
speed: {
|
|
65
|
+
angleInDegrees: number;
|
|
66
|
+
pixelsPerPeriod: number;
|
|
67
|
+
};
|
|
68
|
+
qualityPoints: QualityPoint[];
|
|
69
|
+
trustedTechnicalIndicator: number;
|
|
70
|
+
roundScale: Position;
|
|
71
|
+
};
|
|
72
|
+
logFlatten(options?: {
|
|
73
|
+
overridingLogger?: any;
|
|
74
|
+
simplify?: boolean;
|
|
75
|
+
}): void;
|
|
76
|
+
getSpeed(): {
|
|
77
|
+
angleInDegrees: number;
|
|
78
|
+
pixelsPerPeriod: number;
|
|
79
|
+
};
|
|
80
|
+
protected getFlatten(): number[][];
|
|
81
|
+
}
|
|
@@ -1,55 +1,40 @@
|
|
|
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
|
-
protected roundScale: Position = new Position({x: QualityTools.DEFAULT_SCALE, y: QualityTools.DEFAULT_SCALE})
|
|
28
|
-
) {
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix {
|
|
32
|
-
const created = new SpeedMatrix(
|
|
33
|
-
json.name,
|
|
34
|
-
json.qualityPoints,
|
|
35
|
-
json.speed,
|
|
36
|
-
json.trustedTechnicalIndicator,
|
|
37
|
-
json.flattenPositionRange,
|
|
38
|
-
json.roundScale);
|
|
39
|
-
|
|
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 LatLng_1 = require("../cartesian/LatLng");
|
|
11
|
+
class SpeedMatrix {
|
|
12
|
+
constructor(name, 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: QualityTools_1.QualityTools.DEFAULT_SCALE, y: QualityTools_1.QualityTools.DEFAULT_SCALE })) {
|
|
18
|
+
this.name = name;
|
|
19
|
+
this.qualityPoints = qualityPoints;
|
|
20
|
+
this.speed = speed;
|
|
21
|
+
this.trustedTechnicalIndicator = trustedTechnicalIndicator;
|
|
22
|
+
this.flattenPositionRange = flattenPositionRange;
|
|
23
|
+
this.roundScale = roundScale;
|
|
24
|
+
}
|
|
25
|
+
static CreateFromJson(json) {
|
|
26
|
+
const created = new SpeedMatrix(json.name, json.qualityPoints, json.speed, json.trustedTechnicalIndicator, json.flattenPositionRange, json.roundScale);
|
|
40
27
|
if (json.flattenPositionHistory) {
|
|
41
28
|
created.flattenPositionHistory = json.flattenPositionHistory;
|
|
42
29
|
}
|
|
43
|
-
|
|
44
30
|
return created;
|
|
45
31
|
}
|
|
46
|
-
|
|
47
32
|
/**
|
|
48
33
|
* Get quality indicator based on delta from computed vs reality
|
|
49
34
|
* 0 is ideal
|
|
50
35
|
* 2.56 (for example) is not ideal => can be improved :)
|
|
51
36
|
*/
|
|
52
|
-
|
|
37
|
+
static ComputeQualityIndicator(points) {
|
|
53
38
|
let indicator = 0;
|
|
54
39
|
for (const point of points) {
|
|
55
40
|
indicator += point.getDelta();
|
|
@@ -57,40 +42,34 @@ export class SpeedMatrix {
|
|
|
57
42
|
if (points.length > 0) {
|
|
58
43
|
indicator = indicator / points.length;
|
|
59
44
|
}
|
|
60
|
-
|
|
61
45
|
return indicator;
|
|
62
46
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
71
|
-
},
|
|
72
|
-
logger = console) {
|
|
73
|
-
|
|
74
|
-
const labelWithSign = (val: number) => {
|
|
47
|
+
static LogPositionValues(positionValues, valueDisplayFn, flattenPositionRange = {
|
|
48
|
+
xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
49
|
+
xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
50
|
+
yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
|
|
51
|
+
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
52
|
+
}, logger = console) {
|
|
53
|
+
const labelWithSign = (val) => {
|
|
75
54
|
if (val < 0) {
|
|
76
55
|
return '' + val;
|
|
77
|
-
}
|
|
56
|
+
}
|
|
57
|
+
else if (val === 0) {
|
|
78
58
|
return ' ' + 0;
|
|
79
59
|
}
|
|
80
60
|
return '+' + val;
|
|
81
|
-
}
|
|
82
|
-
const labelX = (x
|
|
61
|
+
};
|
|
62
|
+
const labelX = (x) => {
|
|
83
63
|
return 'x' + labelWithSign(x - flattenPositionRange.xMax);
|
|
84
64
|
};
|
|
85
|
-
const labelY = (y
|
|
65
|
+
const labelY = (y) => {
|
|
86
66
|
return 'y' + labelWithSign(y - flattenPositionRange.yMax);
|
|
87
67
|
};
|
|
88
|
-
|
|
89
68
|
const matrixToRender = {};
|
|
90
69
|
for (let y = flattenPositionRange.yMax - flattenPositionRange.yMin; y >= 0; y--) {
|
|
91
70
|
const xObject = {};
|
|
92
71
|
for (let x = 0; x <= flattenPositionRange.xMax - flattenPositionRange.xMin; x++) {
|
|
93
|
-
xObject[labelX(x)] = valueDisplayFn(new PositionHistory({
|
|
72
|
+
xObject[labelX(x)] = valueDisplayFn(new PositionHistory_1.PositionHistory({
|
|
94
73
|
id: 'id',
|
|
95
74
|
label: 'label',
|
|
96
75
|
date: new Date(),
|
|
@@ -111,65 +90,54 @@ export class SpeedMatrix {
|
|
|
111
90
|
matrixToRender[labelY(yOfMatrix)][labelX(xOfMatrix)] = valueDisplayFn(value);
|
|
112
91
|
}
|
|
113
92
|
}
|
|
114
|
-
|
|
115
93
|
logger.table(matrixToRender);
|
|
116
94
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
public static Normalize(values: PositionValue[]): PositionValue[] {
|
|
120
|
-
const built: PositionValue[] = [];
|
|
95
|
+
static Normalize(values) {
|
|
96
|
+
const built = [];
|
|
121
97
|
let maxValue = Number.EPSILON;
|
|
122
98
|
for (const pos of values) {
|
|
123
99
|
maxValue = Math.max(maxValue, pos.value);
|
|
124
100
|
}
|
|
125
101
|
for (const pos of values) {
|
|
126
102
|
const normalizedValue = pos.value / maxValue;
|
|
127
|
-
built.push(new PositionValue({x: pos.x, y: pos.y, value: normalizedValue}));
|
|
103
|
+
built.push(new PositionValue_1.PositionValue({ x: pos.x, y: pos.y, value: normalizedValue }));
|
|
128
104
|
}
|
|
129
105
|
return built;
|
|
130
106
|
}
|
|
131
|
-
|
|
132
|
-
renderFlatten(options: { normalize: boolean }): PositionValue[] {
|
|
133
|
-
|
|
107
|
+
renderFlatten(options) {
|
|
134
108
|
const positionMatrix = this.getFlatten();
|
|
135
109
|
if (positionMatrix.length === 0) {
|
|
136
110
|
return [];
|
|
137
111
|
}
|
|
138
|
-
|
|
139
|
-
const positionHistories: PositionValue[] = [];
|
|
112
|
+
const positionHistories = [];
|
|
140
113
|
let maxValue = 0;
|
|
141
114
|
for (const [iX, posX] of positionMatrix.entries()) {
|
|
142
115
|
for (const [iY, value] of posX.entries()) {
|
|
143
116
|
const x = iX + this.flattenPositionRange.xMin;
|
|
144
117
|
const y = iY + this.flattenPositionRange.yMin;
|
|
145
118
|
maxValue = Math.max(maxValue, value);
|
|
146
|
-
positionHistories.push(new PositionValue({x, y, value}));
|
|
119
|
+
positionHistories.push(new PositionValue_1.PositionValue({ x, y, value }));
|
|
147
120
|
}
|
|
148
121
|
}
|
|
149
|
-
|
|
150
122
|
// Normalize
|
|
151
123
|
if (maxValue && options.normalize) {
|
|
152
124
|
positionHistories.forEach(p => {
|
|
153
125
|
p.value = p.value / maxValue;
|
|
154
126
|
});
|
|
155
127
|
}
|
|
156
|
-
|
|
157
128
|
return positionHistories;
|
|
158
129
|
}
|
|
159
|
-
|
|
160
|
-
getGaugeIdRelatedValues(id: string): QualityPoint {
|
|
130
|
+
getGaugeIdRelatedValues(id) {
|
|
161
131
|
const points = this.qualityPoints.filter(p => p.gaugeId === id);
|
|
162
132
|
if (points.length === 1) {
|
|
163
133
|
return points[0];
|
|
164
134
|
}
|
|
165
135
|
return null;
|
|
166
136
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return this.qualityPoints.map(p => new QualityPoint(p));
|
|
137
|
+
getQualityPoints() {
|
|
138
|
+
return this.qualityPoints.map(p => new QualityPoint_1.QualityPoint(p));
|
|
170
139
|
}
|
|
171
|
-
|
|
172
|
-
getMaxRain(): number {
|
|
140
|
+
getMaxRain() {
|
|
173
141
|
const qualityPoints = this.getQualityPoints();
|
|
174
142
|
let max = -1;
|
|
175
143
|
for (const p of qualityPoints) {
|
|
@@ -177,8 +145,7 @@ export class SpeedMatrix {
|
|
|
177
145
|
}
|
|
178
146
|
return max;
|
|
179
147
|
}
|
|
180
|
-
|
|
181
|
-
getMaxGauge(): number {
|
|
148
|
+
getMaxGauge() {
|
|
182
149
|
const qualityPoints = this.getQualityPoints();
|
|
183
150
|
let max = -1;
|
|
184
151
|
for (const p of qualityPoints) {
|
|
@@ -186,15 +153,12 @@ export class SpeedMatrix {
|
|
|
186
153
|
}
|
|
187
154
|
return max;
|
|
188
155
|
}
|
|
189
|
-
|
|
190
|
-
getTrustedTechnicalIndicator(): number {
|
|
156
|
+
getTrustedTechnicalIndicator() {
|
|
191
157
|
return this.trustedTechnicalIndicator;
|
|
192
158
|
}
|
|
193
|
-
|
|
194
|
-
isConsistent(): boolean {
|
|
159
|
+
isConsistent() {
|
|
195
160
|
return this.trustedTechnicalIndicator > SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2;
|
|
196
161
|
}
|
|
197
|
-
|
|
198
162
|
toJSON() {
|
|
199
163
|
return {
|
|
200
164
|
name: this.name,
|
|
@@ -206,16 +170,13 @@ export class SpeedMatrix {
|
|
|
206
170
|
roundScale: this.roundScale,
|
|
207
171
|
};
|
|
208
172
|
}
|
|
209
|
-
|
|
210
|
-
logFlatten(options: { overridingLogger?: any, simplify?: boolean }
|
|
211
|
-
= {overridingLogger: null, simplify: false}) {
|
|
173
|
+
logFlatten(options = { overridingLogger: null, simplify: false }) {
|
|
212
174
|
let logger = options.overridingLogger;
|
|
213
175
|
if (!logger) {
|
|
214
176
|
logger = console;
|
|
215
177
|
}
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
const positionHistories = flatten.map(pv => new PositionHistory({
|
|
178
|
+
const flatten = this.renderFlatten({ normalize: false });
|
|
179
|
+
const positionHistories = flatten.map(pv => new PositionHistory_1.PositionHistory({
|
|
219
180
|
id: '-',
|
|
220
181
|
label: '-',
|
|
221
182
|
date: null,
|
|
@@ -225,69 +186,68 @@ export class SpeedMatrix {
|
|
|
225
186
|
valueFromGauge: -1,
|
|
226
187
|
valueFromRain: -1
|
|
227
188
|
}));
|
|
228
|
-
|
|
229
|
-
const valueDisplay = (pv: PositionValue): string => {
|
|
189
|
+
const valueDisplay = (pv) => {
|
|
230
190
|
const v = pv.value;
|
|
231
191
|
if (options.simplify) {
|
|
232
192
|
if (v === 1) {
|
|
233
193
|
return '##';
|
|
234
|
-
}
|
|
194
|
+
}
|
|
195
|
+
else if (v >= 0.8) {
|
|
235
196
|
return '#';
|
|
236
|
-
}
|
|
197
|
+
}
|
|
198
|
+
else if (v >= 0.5) {
|
|
237
199
|
return '=';
|
|
238
|
-
}
|
|
200
|
+
}
|
|
201
|
+
else if (v >= 0.2) {
|
|
239
202
|
return '_';
|
|
240
203
|
}
|
|
241
204
|
return ' ';
|
|
242
205
|
}
|
|
243
206
|
return '' + Math.round(v * 1000) / 1000;
|
|
244
|
-
}
|
|
245
|
-
|
|
207
|
+
};
|
|
246
208
|
SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, this.flattenPositionRange, logger);
|
|
247
209
|
}
|
|
248
|
-
|
|
249
210
|
getSpeed() {
|
|
250
211
|
if (!this.speed) {
|
|
251
|
-
return {angleInDegrees: 0, pixelsPerPeriod: 0};
|
|
212
|
+
return { angleInDegrees: 0, pixelsPerPeriod: 0 };
|
|
252
213
|
}
|
|
253
214
|
return this.speed;
|
|
254
215
|
}
|
|
255
|
-
|
|
256
|
-
protected getFlatten(): number[][] {
|
|
216
|
+
getFlatten() {
|
|
257
217
|
if (this.flattenPositionHistory) {
|
|
258
218
|
return this.flattenPositionHistory;
|
|
259
219
|
}
|
|
260
|
-
|
|
261
220
|
this.flattenPositionHistory = [];
|
|
262
221
|
const yWidth = this.flattenPositionRange.yMax - this.flattenPositionRange.yMin + 1;
|
|
263
222
|
const xWidth = this.flattenPositionRange.xMax - this.flattenPositionRange.xMin + 1;
|
|
264
223
|
for (let y = 0; y < yWidth; y++) {
|
|
265
224
|
this.flattenPositionHistory.push(new Array(xWidth).fill(0));
|
|
266
225
|
}
|
|
267
|
-
|
|
268
226
|
// same position => add value
|
|
269
227
|
for (const qualityPoint of this.qualityPoints) {
|
|
270
228
|
const ratio = qualityPoint.getRatio();
|
|
271
|
-
const cartesianValue = new CartesianValue({
|
|
229
|
+
const cartesianValue = new CartesianValue_1.CartesianValue({
|
|
272
230
|
value: ratio,
|
|
273
231
|
lat: qualityPoint.getRainLat() - qualityPoint.gaugeCartesianValue.lat,
|
|
274
232
|
lng: qualityPoint.getRainLng() - qualityPoint.gaugeCartesianValue.lng,
|
|
275
233
|
});
|
|
276
|
-
const position = QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng({
|
|
277
|
-
lat: QualityTools.DEFAULT_SCALE,
|
|
278
|
-
lng: QualityTools.DEFAULT_SCALE
|
|
234
|
+
const position = QualityTools_1.QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng_1.LatLng({
|
|
235
|
+
lat: QualityTools_1.QualityTools.DEFAULT_SCALE,
|
|
236
|
+
lng: QualityTools_1.QualityTools.DEFAULT_SCALE
|
|
279
237
|
}));
|
|
280
|
-
|
|
281
238
|
const positionX = Math.round((position.x / this.roundScale.x) - this.flattenPositionRange.xMin);
|
|
282
239
|
const positionY = Math.round((position.y / this.roundScale.y) - this.flattenPositionRange.yMin);
|
|
283
|
-
|
|
284
240
|
if (0 <= positionX && positionX < xWidth && 0 <= positionY && positionY < yWidth) {
|
|
285
241
|
this.flattenPositionHistory[positionX][positionY] += cartesianValue.value;
|
|
286
|
-
}
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
287
244
|
throw new Error('Matrix ranges and positions are not consistent.');
|
|
288
245
|
}
|
|
289
246
|
}
|
|
290
|
-
|
|
291
247
|
return this.flattenPositionHistory;
|
|
292
248
|
}
|
|
293
249
|
}
|
|
250
|
+
SpeedMatrix.DEFAULT_MATRIX_RANGE = 8;
|
|
251
|
+
SpeedMatrix.DEFAULT_TRUSTED_INDICATOR = 1;
|
|
252
|
+
exports.SpeedMatrix = SpeedMatrix;
|
|
253
|
+
//# sourceMappingURL=SpeedMatrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpeedMatrix.js","sourceRoot":"","sources":["../../src/quality/SpeedMatrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { SpeedMatrix } from './SpeedMatrix';
|
|
2
|
+
import { PositionValue } from './position/PositionValue';
|
|
3
|
+
import { QualityPoint } from './QualityPoint';
|
|
4
|
+
export declare class SpeedMatrixContainer {
|
|
5
|
+
protected qualityPoints: any;
|
|
6
|
+
protected trustedIndicators: number[];
|
|
7
|
+
protected flattenMatrices: PositionValue[][];
|
|
8
|
+
protected matrices: SpeedMatrix[];
|
|
9
|
+
constructor(json: {
|
|
10
|
+
matrices: SpeedMatrix[];
|
|
11
|
+
});
|
|
12
|
+
static CreateFromJson(json: any): SpeedMatrixContainer;
|
|
13
|
+
protected static mergeStillComputed(v1: any, v2: any): any;
|
|
14
|
+
protected static mergeDateMin(d1: Date, d2: Date): Date;
|
|
15
|
+
protected static mergeDateMax(d1: Date, d2: Date): Date;
|
|
16
|
+
protected static mergeAvg(v1: number, v2: number): number;
|
|
17
|
+
protected static mergeMin(v1: number, v2: number): number;
|
|
18
|
+
protected static mergeConcat(a1: Array<any>, a2: Array<any>): Array<any>;
|
|
19
|
+
protected static mergeReduce(a1: Array<QualityPoint>, a2: Array<QualityPoint>): Array<QualityPoint>;
|
|
20
|
+
getMatrix(index?: number): SpeedMatrix;
|
|
21
|
+
getMatrixByName(name: string): SpeedMatrix;
|
|
22
|
+
getMatrices(): SpeedMatrix[];
|
|
23
|
+
getQualityPoints(matrixName?: string): QualityPoint[];
|
|
24
|
+
getMaxGauge(): number;
|
|
25
|
+
getMaxRain(): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get summed quality indicator (0 ideally)
|
|
28
|
+
* @link SpeedMatrix.ComputeQualityIndicator
|
|
29
|
+
*/
|
|
30
|
+
getQuality(): number;
|
|
31
|
+
getTrustedIndicators(): number[];
|
|
32
|
+
getSpeed(): {
|
|
33
|
+
angleInDegrees: number;
|
|
34
|
+
pixelsPerPeriod: number;
|
|
35
|
+
};
|
|
36
|
+
isConsistent(): boolean;
|
|
37
|
+
getFlattenMatrixCount(): number;
|
|
38
|
+
renderFlattenMatrix(index?: number, options?: {
|
|
39
|
+
normalize?: boolean;
|
|
40
|
+
}): PositionValue[];
|
|
41
|
+
renderMergedMatrix(options?: {
|
|
42
|
+
normalize?: boolean;
|
|
43
|
+
}): PositionValue[];
|
|
44
|
+
toJSON(options?: {
|
|
45
|
+
removeFlatten?: boolean;
|
|
46
|
+
removeMatrices?: boolean;
|
|
47
|
+
removeIndicators?: boolean;
|
|
48
|
+
}): {
|
|
49
|
+
qualityPoints: QualityPoint[];
|
|
50
|
+
trustedIndicators: number[];
|
|
51
|
+
flattenMatrices: PositionValue[][];
|
|
52
|
+
speed: {
|
|
53
|
+
angleInDegrees: number;
|
|
54
|
+
pixelsPerPeriod: number;
|
|
55
|
+
};
|
|
56
|
+
matrices: {
|
|
57
|
+
name: string;
|
|
58
|
+
flattenPositionHistory: number[][];
|
|
59
|
+
flattenPositionRange: {
|
|
60
|
+
xMin: number;
|
|
61
|
+
xMax: number;
|
|
62
|
+
yMin: number;
|
|
63
|
+
yMax: number;
|
|
64
|
+
};
|
|
65
|
+
speed: {
|
|
66
|
+
angleInDegrees: number;
|
|
67
|
+
pixelsPerPeriod: number;
|
|
68
|
+
};
|
|
69
|
+
qualityPoints: QualityPoint[];
|
|
70
|
+
trustedTechnicalIndicator: number;
|
|
71
|
+
roundScale: import("..").Position;
|
|
72
|
+
}[];
|
|
73
|
+
};
|
|
74
|
+
merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer): this;
|
|
75
|
+
logMergedMatrix(options?: {
|
|
76
|
+
normalize?: boolean;
|
|
77
|
+
}): void;
|
|
78
|
+
protected storeFlattenMatrices(): PositionValue[][];
|
|
79
|
+
}
|