raain-model 1.11.4 → 1.11.6
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 +83 -0
- package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +78 -116
- package/quality/SpeedMatrix.js.map +1 -0
- package/quality/SpeedMatrixContainer.d.ts +80 -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,83 @@
|
|
|
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
|
+
remarks: string;
|
|
8
|
+
protected qualityPoints: QualityPoint[];
|
|
9
|
+
protected speed: {
|
|
10
|
+
angleInDegrees: number;
|
|
11
|
+
pixelsPerPeriod: number;
|
|
12
|
+
};
|
|
13
|
+
protected trustedTechnicalIndicator: number;
|
|
14
|
+
protected flattenPositionRange: {
|
|
15
|
+
xMin: number;
|
|
16
|
+
xMax: number;
|
|
17
|
+
yMin: number;
|
|
18
|
+
yMax: number;
|
|
19
|
+
};
|
|
20
|
+
protected roundScale: Position;
|
|
21
|
+
static DEFAULT_MATRIX_RANGE: number;
|
|
22
|
+
static DEFAULT_TRUSTED_INDICATOR: number;
|
|
23
|
+
protected flattenPositionHistory: number[][];
|
|
24
|
+
constructor(name: string, remarks: string, qualityPoints: QualityPoint[], speed?: {
|
|
25
|
+
angleInDegrees: number;
|
|
26
|
+
pixelsPerPeriod: number;
|
|
27
|
+
}, trustedTechnicalIndicator?: number, flattenPositionRange?: {
|
|
28
|
+
xMin: number;
|
|
29
|
+
xMax: number;
|
|
30
|
+
yMin: number;
|
|
31
|
+
yMax: number;
|
|
32
|
+
}, roundScale?: Position);
|
|
33
|
+
static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix;
|
|
34
|
+
/**
|
|
35
|
+
* Get quality indicator based on delta from computed vs reality
|
|
36
|
+
* 0 is ideal
|
|
37
|
+
* 2.56 (for example) is not ideal => can be improved :)
|
|
38
|
+
*/
|
|
39
|
+
static ComputeQualityIndicator(points: QualityPoint[]): number;
|
|
40
|
+
static LogPositionValues(positionValues: PositionHistory[], valueDisplayFn: (v: PositionHistory) => string, flattenPositionRange?: {
|
|
41
|
+
xMin: number;
|
|
42
|
+
xMax: number;
|
|
43
|
+
yMin: number;
|
|
44
|
+
yMax: number;
|
|
45
|
+
}, logger?: Console): void;
|
|
46
|
+
static Normalize(values: PositionValue[]): PositionValue[];
|
|
47
|
+
renderFlatten(options: {
|
|
48
|
+
normalize: boolean;
|
|
49
|
+
}): PositionValue[];
|
|
50
|
+
getGaugeIdRelatedValues(id: string): QualityPoint;
|
|
51
|
+
getQualityPoints(): QualityPoint[];
|
|
52
|
+
getMaxRain(): number;
|
|
53
|
+
getMaxGauge(): number;
|
|
54
|
+
getTrustedTechnicalIndicator(): number;
|
|
55
|
+
isConsistent(): boolean;
|
|
56
|
+
toJSON(): {
|
|
57
|
+
name: string;
|
|
58
|
+
remarks: string;
|
|
59
|
+
flattenPositionHistory: number[][];
|
|
60
|
+
flattenPositionRange: {
|
|
61
|
+
xMin: number;
|
|
62
|
+
xMax: number;
|
|
63
|
+
yMin: number;
|
|
64
|
+
yMax: number;
|
|
65
|
+
};
|
|
66
|
+
speed: {
|
|
67
|
+
angleInDegrees: number;
|
|
68
|
+
pixelsPerPeriod: number;
|
|
69
|
+
};
|
|
70
|
+
qualityPoints: QualityPoint[];
|
|
71
|
+
trustedTechnicalIndicator: number;
|
|
72
|
+
roundScale: Position;
|
|
73
|
+
};
|
|
74
|
+
logFlatten(options?: {
|
|
75
|
+
overridingLogger?: any;
|
|
76
|
+
simplify?: boolean;
|
|
77
|
+
}): void;
|
|
78
|
+
getSpeed(): {
|
|
79
|
+
angleInDegrees: number;
|
|
80
|
+
pixelsPerPeriod: number;
|
|
81
|
+
};
|
|
82
|
+
protected getFlatten(): number[][];
|
|
83
|
+
}
|
|
@@ -1,55 +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
|
-
) {
|
|
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, 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: QualityTools_1.QualityTools.DEFAULT_SCALE, y: QualityTools_1.QualityTools.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);
|
|
40
28
|
if (json.flattenPositionHistory) {
|
|
41
29
|
created.flattenPositionHistory = json.flattenPositionHistory;
|
|
42
30
|
}
|
|
43
|
-
|
|
44
31
|
return created;
|
|
45
32
|
}
|
|
46
|
-
|
|
47
33
|
/**
|
|
48
34
|
* Get quality indicator based on delta from computed vs reality
|
|
49
35
|
* 0 is ideal
|
|
50
36
|
* 2.56 (for example) is not ideal => can be improved :)
|
|
51
37
|
*/
|
|
52
|
-
|
|
38
|
+
static ComputeQualityIndicator(points) {
|
|
53
39
|
let indicator = 0;
|
|
54
40
|
for (const point of points) {
|
|
55
41
|
indicator += point.getDelta();
|
|
@@ -57,40 +43,34 @@ export class SpeedMatrix {
|
|
|
57
43
|
if (points.length > 0) {
|
|
58
44
|
indicator = indicator / points.length;
|
|
59
45
|
}
|
|
60
|
-
|
|
61
46
|
return indicator;
|
|
62
47
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
|
|
71
|
-
},
|
|
72
|
-
logger = console) {
|
|
73
|
-
|
|
74
|
-
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) => {
|
|
75
55
|
if (val < 0) {
|
|
76
56
|
return '' + val;
|
|
77
|
-
}
|
|
57
|
+
}
|
|
58
|
+
else if (val === 0) {
|
|
78
59
|
return ' ' + 0;
|
|
79
60
|
}
|
|
80
61
|
return '+' + val;
|
|
81
|
-
}
|
|
82
|
-
const labelX = (x
|
|
62
|
+
};
|
|
63
|
+
const labelX = (x) => {
|
|
83
64
|
return 'x' + labelWithSign(x - flattenPositionRange.xMax);
|
|
84
65
|
};
|
|
85
|
-
const labelY = (y
|
|
66
|
+
const labelY = (y) => {
|
|
86
67
|
return 'y' + labelWithSign(y - flattenPositionRange.yMax);
|
|
87
68
|
};
|
|
88
|
-
|
|
89
69
|
const matrixToRender = {};
|
|
90
70
|
for (let y = flattenPositionRange.yMax - flattenPositionRange.yMin; y >= 0; y--) {
|
|
91
71
|
const xObject = {};
|
|
92
72
|
for (let x = 0; x <= flattenPositionRange.xMax - flattenPositionRange.xMin; x++) {
|
|
93
|
-
xObject[labelX(x)] = valueDisplayFn(new PositionHistory({
|
|
73
|
+
xObject[labelX(x)] = valueDisplayFn(new PositionHistory_1.PositionHistory({
|
|
94
74
|
id: 'id',
|
|
95
75
|
label: 'label',
|
|
96
76
|
date: new Date(),
|
|
@@ -111,65 +91,54 @@ export class SpeedMatrix {
|
|
|
111
91
|
matrixToRender[labelY(yOfMatrix)][labelX(xOfMatrix)] = valueDisplayFn(value);
|
|
112
92
|
}
|
|
113
93
|
}
|
|
114
|
-
|
|
115
94
|
logger.table(matrixToRender);
|
|
116
95
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
public static Normalize(values: PositionValue[]): PositionValue[] {
|
|
120
|
-
const built: PositionValue[] = [];
|
|
96
|
+
static Normalize(values) {
|
|
97
|
+
const built = [];
|
|
121
98
|
let maxValue = Number.EPSILON;
|
|
122
99
|
for (const pos of values) {
|
|
123
100
|
maxValue = Math.max(maxValue, pos.value);
|
|
124
101
|
}
|
|
125
102
|
for (const pos of values) {
|
|
126
103
|
const normalizedValue = pos.value / maxValue;
|
|
127
|
-
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 }));
|
|
128
105
|
}
|
|
129
106
|
return built;
|
|
130
107
|
}
|
|
131
|
-
|
|
132
|
-
renderFlatten(options: { normalize: boolean }): PositionValue[] {
|
|
133
|
-
|
|
108
|
+
renderFlatten(options) {
|
|
134
109
|
const positionMatrix = this.getFlatten();
|
|
135
110
|
if (positionMatrix.length === 0) {
|
|
136
111
|
return [];
|
|
137
112
|
}
|
|
138
|
-
|
|
139
|
-
const positionHistories: PositionValue[] = [];
|
|
113
|
+
const positionHistories = [];
|
|
140
114
|
let maxValue = 0;
|
|
141
115
|
for (const [iX, posX] of positionMatrix.entries()) {
|
|
142
116
|
for (const [iY, value] of posX.entries()) {
|
|
143
117
|
const x = iX + this.flattenPositionRange.xMin;
|
|
144
118
|
const y = iY + this.flattenPositionRange.yMin;
|
|
145
119
|
maxValue = Math.max(maxValue, value);
|
|
146
|
-
positionHistories.push(new PositionValue({x, y, value}));
|
|
120
|
+
positionHistories.push(new PositionValue_1.PositionValue({ x, y, value }));
|
|
147
121
|
}
|
|
148
122
|
}
|
|
149
|
-
|
|
150
123
|
// Normalize
|
|
151
124
|
if (maxValue && options.normalize) {
|
|
152
125
|
positionHistories.forEach(p => {
|
|
153
126
|
p.value = p.value / maxValue;
|
|
154
127
|
});
|
|
155
128
|
}
|
|
156
|
-
|
|
157
129
|
return positionHistories;
|
|
158
130
|
}
|
|
159
|
-
|
|
160
|
-
getGaugeIdRelatedValues(id: string): QualityPoint {
|
|
131
|
+
getGaugeIdRelatedValues(id) {
|
|
161
132
|
const points = this.qualityPoints.filter(p => p.gaugeId === id);
|
|
162
133
|
if (points.length === 1) {
|
|
163
134
|
return points[0];
|
|
164
135
|
}
|
|
165
136
|
return null;
|
|
166
137
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return this.qualityPoints.map(p => new QualityPoint(p));
|
|
138
|
+
getQualityPoints() {
|
|
139
|
+
return this.qualityPoints.map(p => new QualityPoint_1.QualityPoint(p));
|
|
170
140
|
}
|
|
171
|
-
|
|
172
|
-
getMaxRain(): number {
|
|
141
|
+
getMaxRain() {
|
|
173
142
|
const qualityPoints = this.getQualityPoints();
|
|
174
143
|
let max = -1;
|
|
175
144
|
for (const p of qualityPoints) {
|
|
@@ -177,8 +146,7 @@ export class SpeedMatrix {
|
|
|
177
146
|
}
|
|
178
147
|
return max;
|
|
179
148
|
}
|
|
180
|
-
|
|
181
|
-
getMaxGauge(): number {
|
|
149
|
+
getMaxGauge() {
|
|
182
150
|
const qualityPoints = this.getQualityPoints();
|
|
183
151
|
let max = -1;
|
|
184
152
|
for (const p of qualityPoints) {
|
|
@@ -186,18 +154,16 @@ export class SpeedMatrix {
|
|
|
186
154
|
}
|
|
187
155
|
return max;
|
|
188
156
|
}
|
|
189
|
-
|
|
190
|
-
getTrustedTechnicalIndicator(): number {
|
|
157
|
+
getTrustedTechnicalIndicator() {
|
|
191
158
|
return this.trustedTechnicalIndicator;
|
|
192
159
|
}
|
|
193
|
-
|
|
194
|
-
isConsistent(): boolean {
|
|
160
|
+
isConsistent() {
|
|
195
161
|
return this.trustedTechnicalIndicator > SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2;
|
|
196
162
|
}
|
|
197
|
-
|
|
198
163
|
toJSON() {
|
|
199
164
|
return {
|
|
200
165
|
name: this.name,
|
|
166
|
+
remarks: this.remarks,
|
|
201
167
|
flattenPositionHistory: this.flattenPositionHistory,
|
|
202
168
|
flattenPositionRange: this.flattenPositionRange,
|
|
203
169
|
speed: this.speed,
|
|
@@ -206,16 +172,13 @@ export class SpeedMatrix {
|
|
|
206
172
|
roundScale: this.roundScale,
|
|
207
173
|
};
|
|
208
174
|
}
|
|
209
|
-
|
|
210
|
-
logFlatten(options: { overridingLogger?: any, simplify?: boolean }
|
|
211
|
-
= {overridingLogger: null, simplify: false}) {
|
|
175
|
+
logFlatten(options = { overridingLogger: null, simplify: false }) {
|
|
212
176
|
let logger = options.overridingLogger;
|
|
213
177
|
if (!logger) {
|
|
214
178
|
logger = console;
|
|
215
179
|
}
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
const positionHistories = flatten.map(pv => new PositionHistory({
|
|
180
|
+
const flatten = this.renderFlatten({ normalize: false });
|
|
181
|
+
const positionHistories = flatten.map(pv => new PositionHistory_1.PositionHistory({
|
|
219
182
|
id: '-',
|
|
220
183
|
label: '-',
|
|
221
184
|
date: null,
|
|
@@ -225,69 +188,68 @@ export class SpeedMatrix {
|
|
|
225
188
|
valueFromGauge: -1,
|
|
226
189
|
valueFromRain: -1
|
|
227
190
|
}));
|
|
228
|
-
|
|
229
|
-
const valueDisplay = (pv: PositionValue): string => {
|
|
191
|
+
const valueDisplay = (pv) => {
|
|
230
192
|
const v = pv.value;
|
|
231
193
|
if (options.simplify) {
|
|
232
194
|
if (v === 1) {
|
|
233
195
|
return '##';
|
|
234
|
-
}
|
|
196
|
+
}
|
|
197
|
+
else if (v >= 0.8) {
|
|
235
198
|
return '#';
|
|
236
|
-
}
|
|
199
|
+
}
|
|
200
|
+
else if (v >= 0.5) {
|
|
237
201
|
return '=';
|
|
238
|
-
}
|
|
202
|
+
}
|
|
203
|
+
else if (v >= 0.2) {
|
|
239
204
|
return '_';
|
|
240
205
|
}
|
|
241
206
|
return ' ';
|
|
242
207
|
}
|
|
243
208
|
return '' + Math.round(v * 1000) / 1000;
|
|
244
|
-
}
|
|
245
|
-
|
|
209
|
+
};
|
|
246
210
|
SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, this.flattenPositionRange, logger);
|
|
247
211
|
}
|
|
248
|
-
|
|
249
212
|
getSpeed() {
|
|
250
213
|
if (!this.speed) {
|
|
251
|
-
return {angleInDegrees: 0, pixelsPerPeriod: 0};
|
|
214
|
+
return { angleInDegrees: 0, pixelsPerPeriod: 0 };
|
|
252
215
|
}
|
|
253
216
|
return this.speed;
|
|
254
217
|
}
|
|
255
|
-
|
|
256
|
-
protected getFlatten(): number[][] {
|
|
218
|
+
getFlatten() {
|
|
257
219
|
if (this.flattenPositionHistory) {
|
|
258
220
|
return this.flattenPositionHistory;
|
|
259
221
|
}
|
|
260
|
-
|
|
261
222
|
this.flattenPositionHistory = [];
|
|
262
223
|
const yWidth = this.flattenPositionRange.yMax - this.flattenPositionRange.yMin + 1;
|
|
263
224
|
const xWidth = this.flattenPositionRange.xMax - this.flattenPositionRange.xMin + 1;
|
|
264
225
|
for (let y = 0; y < yWidth; y++) {
|
|
265
226
|
this.flattenPositionHistory.push(new Array(xWidth).fill(0));
|
|
266
227
|
}
|
|
267
|
-
|
|
268
228
|
// same position => add value
|
|
269
229
|
for (const qualityPoint of this.qualityPoints) {
|
|
270
230
|
const ratio = qualityPoint.getRatio();
|
|
271
|
-
const cartesianValue = new CartesianValue({
|
|
231
|
+
const cartesianValue = new CartesianValue_1.CartesianValue({
|
|
272
232
|
value: ratio,
|
|
273
233
|
lat: qualityPoint.getRainLat() - qualityPoint.gaugeCartesianValue.lat,
|
|
274
234
|
lng: qualityPoint.getRainLng() - qualityPoint.gaugeCartesianValue.lng,
|
|
275
235
|
});
|
|
276
|
-
const position = QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng({
|
|
277
|
-
lat: QualityTools.DEFAULT_SCALE,
|
|
278
|
-
lng: QualityTools.DEFAULT_SCALE
|
|
236
|
+
const position = QualityTools_1.QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng_1.LatLng({
|
|
237
|
+
lat: QualityTools_1.QualityTools.DEFAULT_SCALE,
|
|
238
|
+
lng: QualityTools_1.QualityTools.DEFAULT_SCALE
|
|
279
239
|
}));
|
|
280
|
-
|
|
281
240
|
const positionX = Math.round((position.x / this.roundScale.x) - this.flattenPositionRange.xMin);
|
|
282
241
|
const positionY = Math.round((position.y / this.roundScale.y) - this.flattenPositionRange.yMin);
|
|
283
|
-
|
|
284
242
|
if (0 <= positionX && positionX < xWidth && 0 <= positionY && positionY < yWidth) {
|
|
285
243
|
this.flattenPositionHistory[positionX][positionY] += cartesianValue.value;
|
|
286
|
-
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
287
246
|
throw new Error('Matrix ranges and positions are not consistent.');
|
|
288
247
|
}
|
|
289
248
|
}
|
|
290
|
-
|
|
291
249
|
return this.flattenPositionHistory;
|
|
292
250
|
}
|
|
293
251
|
}
|
|
252
|
+
SpeedMatrix.DEFAULT_MATRIX_RANGE = 8;
|
|
253
|
+
SpeedMatrix.DEFAULT_TRUSTED_INDICATOR = 1;
|
|
254
|
+
exports.SpeedMatrix = SpeedMatrix;
|
|
255
|
+
//# 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,80 @@
|
|
|
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
|
+
remarks: string;
|
|
59
|
+
flattenPositionHistory: number[][];
|
|
60
|
+
flattenPositionRange: {
|
|
61
|
+
xMin: number;
|
|
62
|
+
xMax: number;
|
|
63
|
+
yMin: number;
|
|
64
|
+
yMax: number;
|
|
65
|
+
};
|
|
66
|
+
speed: {
|
|
67
|
+
angleInDegrees: number;
|
|
68
|
+
pixelsPerPeriod: number;
|
|
69
|
+
};
|
|
70
|
+
qualityPoints: QualityPoint[];
|
|
71
|
+
trustedTechnicalIndicator: number;
|
|
72
|
+
roundScale: import("..").Position;
|
|
73
|
+
}[];
|
|
74
|
+
};
|
|
75
|
+
merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer): this;
|
|
76
|
+
logMergedMatrix(options?: {
|
|
77
|
+
normalize?: boolean;
|
|
78
|
+
}): void;
|
|
79
|
+
protected storeFlattenMatrices(): PositionValue[][];
|
|
80
|
+
}
|