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
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LatLng } from '../cartesian';
|
|
2
|
+
export declare enum MergeStrategy {
|
|
3
|
+
NONE = "none",
|
|
4
|
+
SUM = "sum",
|
|
5
|
+
AVERAGE = "average",
|
|
6
|
+
MAX = "max"
|
|
7
|
+
}
|
|
8
|
+
export interface MergeLatLng {
|
|
9
|
+
sum: number;
|
|
10
|
+
max: number;
|
|
11
|
+
count: number;
|
|
12
|
+
latLng: LatLng;
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MergeStrategy = void 0;
|
|
4
|
+
var MergeStrategy;
|
|
5
|
+
(function (MergeStrategy) {
|
|
6
|
+
MergeStrategy["NONE"] = "none";
|
|
7
|
+
MergeStrategy["SUM"] = "sum";
|
|
8
|
+
MergeStrategy["AVERAGE"] = "average";
|
|
9
|
+
MergeStrategy["MAX"] = "max";
|
|
10
|
+
})(MergeStrategy || (exports.MergeStrategy = MergeStrategy = {}));
|
|
11
|
+
//# sourceMappingURL=MergeStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MergeStrategy.js","sourceRoot":"","sources":["../../src/rain/MergeStrategy.ts"],"names":[],"mappings":";;;AAEA,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,4BAAW,CAAA;AACf,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Link, RaainNode } from '../organization';
|
|
2
|
+
import { RainPolarMeasureValue } from '../polar';
|
|
3
|
+
import { CartesianTools, LatLng, RainCartesianMeasureValue } from '../cartesian';
|
|
4
|
+
import { RainComputationAbstract } from './RainComputationAbstract';
|
|
5
|
+
import { RainMeasure } from './RainMeasure';
|
|
6
|
+
import { MergeStrategy } from './MergeStrategy';
|
|
7
|
+
/**
|
|
8
|
+
* api/rains/:rainId/computations/:computationId
|
|
9
|
+
* or as an array on
|
|
10
|
+
* api/rains/:id/computations?format=id&begin=...
|
|
11
|
+
*/
|
|
12
|
+
export declare class RainComputation extends RainComputationAbstract {
|
|
13
|
+
static TYPE: string;
|
|
14
|
+
constructor(json: {
|
|
15
|
+
id: string;
|
|
16
|
+
date: Date;
|
|
17
|
+
isReady: boolean;
|
|
18
|
+
results: string[] | RainPolarMeasureValue[] | RainCartesianMeasureValue[];
|
|
19
|
+
links?: Link[] | RaainNode[];
|
|
20
|
+
version?: string;
|
|
21
|
+
quality?: number;
|
|
22
|
+
progressIngest?: number;
|
|
23
|
+
progressComputing?: number;
|
|
24
|
+
timeSpentInMs?: number;
|
|
25
|
+
isDoneDate?: Date;
|
|
26
|
+
launchedBy?: string;
|
|
27
|
+
rain?: string | Link | RaainNode;
|
|
28
|
+
radars?: string[] | Link[] | RaainNode[];
|
|
29
|
+
});
|
|
30
|
+
protected _results: RainPolarMeasureValue[] | RainCartesianMeasureValue[];
|
|
31
|
+
get results(): string[] | RainPolarMeasureValue[] | RainCartesianMeasureValue[];
|
|
32
|
+
set results(results: string[] | RainPolarMeasureValue[] | RainCartesianMeasureValue[]);
|
|
33
|
+
toJSON(options?: {
|
|
34
|
+
stringify: boolean;
|
|
35
|
+
}): {
|
|
36
|
+
results: any[];
|
|
37
|
+
id: string;
|
|
38
|
+
links: Link[];
|
|
39
|
+
version?: string;
|
|
40
|
+
isReady: boolean;
|
|
41
|
+
name: string;
|
|
42
|
+
date: Date;
|
|
43
|
+
quality: number;
|
|
44
|
+
progressIngest: number;
|
|
45
|
+
progressComputing: number;
|
|
46
|
+
timeSpentInMs: number;
|
|
47
|
+
isDoneDate: Date;
|
|
48
|
+
launchedBy: string;
|
|
49
|
+
rain: string;
|
|
50
|
+
radars: string[];
|
|
51
|
+
};
|
|
52
|
+
mergeCartesianResults(options: {
|
|
53
|
+
mergeStrategy: MergeStrategy;
|
|
54
|
+
mergeLimitPoints: [LatLng, LatLng];
|
|
55
|
+
cartesianTools: CartesianTools;
|
|
56
|
+
removeNullValues?: boolean;
|
|
57
|
+
}): RainMeasure[];
|
|
58
|
+
protected getLinkType(): string;
|
|
59
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RainComputation = void 0;
|
|
4
|
+
const polar_1 = require("../polar");
|
|
5
|
+
const cartesian_1 = require("../cartesian");
|
|
6
|
+
const RainComputationAbstract_1 = require("./RainComputationAbstract");
|
|
7
|
+
const RainMeasure_1 = require("./RainMeasure");
|
|
8
|
+
/**
|
|
9
|
+
* api/rains/:rainId/computations/:computationId
|
|
10
|
+
* or as an array on
|
|
11
|
+
* api/rains/:id/computations?format=id&begin=...
|
|
12
|
+
*/
|
|
13
|
+
class RainComputation extends RainComputationAbstract_1.RainComputationAbstract {
|
|
14
|
+
constructor(json) {
|
|
15
|
+
super(json);
|
|
16
|
+
this.results = json.results;
|
|
17
|
+
}
|
|
18
|
+
get results() {
|
|
19
|
+
return this._results;
|
|
20
|
+
}
|
|
21
|
+
set results(results) {
|
|
22
|
+
if (typeof results === 'string') {
|
|
23
|
+
results = JSON.parse(results);
|
|
24
|
+
}
|
|
25
|
+
if (!results || results.length === 0 || !Array.isArray(results)) {
|
|
26
|
+
this._results = [];
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this._results = results.map(r => {
|
|
30
|
+
if (typeof r === 'string' && r.indexOf('polarMeasureValue') >= 0) {
|
|
31
|
+
return new polar_1.RainPolarMeasureValue(JSON.parse(r));
|
|
32
|
+
}
|
|
33
|
+
else if (r.polarMeasureValue) {
|
|
34
|
+
return new polar_1.RainPolarMeasureValue(r);
|
|
35
|
+
}
|
|
36
|
+
if (typeof r === 'string' && r.indexOf('cartesian') >= 0) {
|
|
37
|
+
return new cartesian_1.RainCartesianMeasureValue(JSON.parse(r));
|
|
38
|
+
}
|
|
39
|
+
else if (r.cartesianValues) {
|
|
40
|
+
return new cartesian_1.RainCartesianMeasureValue(r);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return r;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
toJSON(options = { stringify: false }) {
|
|
48
|
+
const json = super.toJSON();
|
|
49
|
+
return {
|
|
50
|
+
...json,
|
|
51
|
+
results: this._results.map(r => r.toJSON(options))
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
mergeCartesianResults(options) {
|
|
55
|
+
this.buildLatLngMatrix(options);
|
|
56
|
+
return this.mergeRainMeasures([new RainMeasure_1.RainMeasure({
|
|
57
|
+
id: this.id,
|
|
58
|
+
values: this._results,
|
|
59
|
+
date: this.date
|
|
60
|
+
})], options);
|
|
61
|
+
}
|
|
62
|
+
getLinkType() {
|
|
63
|
+
return RainComputation.TYPE;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.RainComputation = RainComputation;
|
|
67
|
+
RainComputation.TYPE = 'rain-computation';
|
|
68
|
+
//# sourceMappingURL=RainComputation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RainComputation.js","sourceRoot":"","sources":["../../src/rain/RainComputation.ts"],"names":[],"mappings":";;;AACA,oCAA+C;AAC/C,4CAA+E;AAC/E,uEAAkE;AAClE,+CAA0C;AAG1C;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,iDAAuB;IAIxD,YAAY,IAgBX;QACG,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAChC,CAAC;IAMD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,OAAyE;QACxF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,6BAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,OAAO,IAAI,6BAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,qCAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;gBAC3B,OAAO,IAAI,qCAAyB,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,CAAC;YACb,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,OAAO,GAAG,EAAC,SAAS,EAAE,KAAK,EAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;YACH,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACrD,CAAC;IACN,CAAC;IAED,qBAAqB,CAAC,OAKrB;QAEG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,yBAAW,CAAC;gBAC3C,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClB,CAAC;IAES,WAAW;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC;IAChC,CAAC;;AArFL,0CAuFC;AArFiB,oBAAI,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Link, RaainNode } from '../organization';
|
|
2
|
+
import { CartesianTools, CartesianValue, LatLng } from '../cartesian';
|
|
3
|
+
import { RainMeasure } from './RainMeasure';
|
|
4
|
+
import { MergeLatLng, MergeStrategy } from './MergeStrategy';
|
|
5
|
+
/**
|
|
6
|
+
* not used directly
|
|
7
|
+
*/
|
|
8
|
+
export declare class RainComputationAbstract extends RaainNode {
|
|
9
|
+
quality: number;
|
|
10
|
+
progressIngest: number;
|
|
11
|
+
progressComputing: number;
|
|
12
|
+
timeSpentInMs: number;
|
|
13
|
+
date: Date;
|
|
14
|
+
isReady: boolean;
|
|
15
|
+
isDoneDate: Date;
|
|
16
|
+
launchedBy: string;
|
|
17
|
+
name: string;
|
|
18
|
+
protected mergeTools: {
|
|
19
|
+
cartesianTools: CartesianTools;
|
|
20
|
+
latsLngs: MergeLatLng[][];
|
|
21
|
+
limitPoints: LatLng[];
|
|
22
|
+
};
|
|
23
|
+
constructor(json: {
|
|
24
|
+
id: string;
|
|
25
|
+
date: Date;
|
|
26
|
+
isReady: boolean;
|
|
27
|
+
name?: string;
|
|
28
|
+
links?: Link[] | RaainNode[];
|
|
29
|
+
version?: string;
|
|
30
|
+
quality?: number;
|
|
31
|
+
progressIngest?: number;
|
|
32
|
+
progressComputing?: number;
|
|
33
|
+
timeSpentInMs?: number;
|
|
34
|
+
isDoneDate?: Date;
|
|
35
|
+
launchedBy?: string;
|
|
36
|
+
rain?: string | Link | RaainNode;
|
|
37
|
+
radars?: string[] | Link[] | RaainNode[];
|
|
38
|
+
});
|
|
39
|
+
private static _getRadarLinks;
|
|
40
|
+
private static _getRadarMeasureLinks;
|
|
41
|
+
private static _getRainLink;
|
|
42
|
+
toJSON(): {
|
|
43
|
+
id: string;
|
|
44
|
+
links: Link[];
|
|
45
|
+
version?: string;
|
|
46
|
+
isReady: boolean;
|
|
47
|
+
name: string;
|
|
48
|
+
date: Date;
|
|
49
|
+
quality: number;
|
|
50
|
+
progressIngest: number;
|
|
51
|
+
progressComputing: number;
|
|
52
|
+
timeSpentInMs: number;
|
|
53
|
+
isDoneDate: Date;
|
|
54
|
+
launchedBy: string;
|
|
55
|
+
rain: string;
|
|
56
|
+
radars: string[];
|
|
57
|
+
};
|
|
58
|
+
addRadarLinks(linksToAdd: string[] | Link[] | RaainNode[]): void;
|
|
59
|
+
replaceRainLink(linksToAdd: string | Link | RaainNode | any): void;
|
|
60
|
+
addRadarMeasureLinks(linksToAdd: string[] | Link[] | any[]): void;
|
|
61
|
+
getBuiltMergeTools(rainMeasures: RainMeasure[], options: {
|
|
62
|
+
cartesianTools: CartesianTools;
|
|
63
|
+
mergeLimitPoints: LatLng[];
|
|
64
|
+
}): {
|
|
65
|
+
cartesianTools: CartesianTools;
|
|
66
|
+
latsLngs: MergeLatLng[][];
|
|
67
|
+
limitPoints: LatLng[];
|
|
68
|
+
};
|
|
69
|
+
getMergeLatLngIndex(cartesianValue: CartesianValue): {
|
|
70
|
+
index: number[];
|
|
71
|
+
latLng: LatLng;
|
|
72
|
+
};
|
|
73
|
+
protected buildLatLngMatrix(options: {
|
|
74
|
+
cartesianTools: CartesianTools;
|
|
75
|
+
mergeLimitPoints: LatLng[];
|
|
76
|
+
}): {
|
|
77
|
+
cartesianTools: CartesianTools;
|
|
78
|
+
latsLngs: MergeLatLng[][];
|
|
79
|
+
limitPoints: LatLng[];
|
|
80
|
+
};
|
|
81
|
+
protected buildMergeTools(rainMeasures: RainMeasure[]): void;
|
|
82
|
+
protected getLinkType(): string;
|
|
83
|
+
protected mergeRainMeasures(rainMeasures: RainMeasure[], options: {
|
|
84
|
+
mergeStrategy: MergeStrategy;
|
|
85
|
+
mergeLimitPoints: [LatLng, LatLng];
|
|
86
|
+
removeNullValues?: boolean;
|
|
87
|
+
}): RainMeasure[];
|
|
88
|
+
protected buildMergeCartesianValues(mergeStrategy: MergeStrategy, removeNullValues?: boolean): CartesianValue[];
|
|
89
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RainComputationAbstract = void 0;
|
|
4
|
+
const organization_1 = require("../organization");
|
|
5
|
+
const radar_1 = require("../radar");
|
|
6
|
+
const RainNode_1 = require("./RainNode");
|
|
7
|
+
const cartesian_1 = require("../cartesian");
|
|
8
|
+
const RainMeasure_1 = require("./RainMeasure");
|
|
9
|
+
const MergeStrategy_1 = require("./MergeStrategy");
|
|
10
|
+
/**
|
|
11
|
+
* not used directly
|
|
12
|
+
*/
|
|
13
|
+
class RainComputationAbstract extends organization_1.RaainNode {
|
|
14
|
+
constructor(json) {
|
|
15
|
+
var _a;
|
|
16
|
+
super(json);
|
|
17
|
+
this.name = (_a = json.name) !== null && _a !== void 0 ? _a : '';
|
|
18
|
+
this.date = json.date ? new Date(json.date) : null;
|
|
19
|
+
this.quality = json.quality >= 0 ? json.quality : -1;
|
|
20
|
+
this.progressIngest = json.progressIngest >= 0 ? json.progressIngest : -1;
|
|
21
|
+
this.progressComputing = json.progressComputing >= 0 ? json.progressComputing : -1;
|
|
22
|
+
this.timeSpentInMs = json.timeSpentInMs;
|
|
23
|
+
this.isReady = !!json.isReady;
|
|
24
|
+
this.isDoneDate = json.isDoneDate ? new Date(json.isDoneDate) : undefined;
|
|
25
|
+
this.launchedBy = json.launchedBy;
|
|
26
|
+
this.replaceRainLink(json.links);
|
|
27
|
+
this.replaceRainLink(json.rain);
|
|
28
|
+
this.addRadarLinks(json.links);
|
|
29
|
+
this.addRadarLinks(json.radars);
|
|
30
|
+
}
|
|
31
|
+
static _getRadarLinks(linksToPurify) {
|
|
32
|
+
if (!linksToPurify || linksToPurify.length === 0) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
return linksToPurify.map(l => {
|
|
36
|
+
if (l instanceof organization_1.Link) {
|
|
37
|
+
return l;
|
|
38
|
+
}
|
|
39
|
+
else if (l && l['_id']) {
|
|
40
|
+
return new radar_1.RadarNode({ id: l['_id'].toString(), latitude: 0, longitude: 0, name: l.name, team: l.team });
|
|
41
|
+
}
|
|
42
|
+
else if (l && l.id) {
|
|
43
|
+
return new radar_1.RadarNode({
|
|
44
|
+
id: l.id.toString(), // 'hex'
|
|
45
|
+
latitude: 0, longitude: 0, name: l.name, team: l.team
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
static _getRadarMeasureLinks(linksToPurify) {
|
|
51
|
+
if (!linksToPurify || linksToPurify.length === 0) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
return linksToPurify.map(l => {
|
|
55
|
+
if (l instanceof organization_1.Link) {
|
|
56
|
+
return l;
|
|
57
|
+
}
|
|
58
|
+
else if (l && l['_id']) {
|
|
59
|
+
return new radar_1.RadarMeasure({ id: l['_id'].toString(), values: [] });
|
|
60
|
+
}
|
|
61
|
+
else if (l && l.id) {
|
|
62
|
+
return new radar_1.RadarMeasure({ id: l.id.toString(), values: [] }); // 'hex'
|
|
63
|
+
}
|
|
64
|
+
else if (typeof l === 'string') {
|
|
65
|
+
return new radar_1.RadarMeasure({ id: l, values: [] });
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
static _getRainLink(linkToPurify) {
|
|
70
|
+
if (!(linkToPurify === null || linkToPurify === void 0 ? void 0 : linkToPurify.id)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return new RainNode_1.RainNode({
|
|
74
|
+
id: linkToPurify.id.toString(),
|
|
75
|
+
name: linkToPurify.id.toString(),
|
|
76
|
+
team: null
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
toJSON() {
|
|
80
|
+
const json = super.toJSON();
|
|
81
|
+
const rainLinks = this.links.filter(l => l.getLinkType() === RainNode_1.RainNode.TYPE).map(l => l.getId());
|
|
82
|
+
const rainLink = rainLinks.length === 1 ? rainLinks[0] : '';
|
|
83
|
+
const radarLinks = this.links.filter(l => l.getLinkType() === radar_1.RadarNode.TYPE).map(l => l.getId());
|
|
84
|
+
return {
|
|
85
|
+
...json,
|
|
86
|
+
date: this.date,
|
|
87
|
+
quality: this.quality,
|
|
88
|
+
progressIngest: this.progressIngest,
|
|
89
|
+
progressComputing: this.progressComputing,
|
|
90
|
+
timeSpentInMs: this.timeSpentInMs,
|
|
91
|
+
isReady: this.isReady,
|
|
92
|
+
isDoneDate: this.isDoneDate,
|
|
93
|
+
launchedBy: this.launchedBy,
|
|
94
|
+
name: this.name,
|
|
95
|
+
rain: rainLink,
|
|
96
|
+
radars: radarLinks,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
addRadarLinks(linksToAdd) {
|
|
100
|
+
this.addLinks(RainComputationAbstract._getRadarLinks(linksToAdd));
|
|
101
|
+
}
|
|
102
|
+
replaceRainLink(linksToAdd) {
|
|
103
|
+
this.addLinks([RainComputationAbstract._getRainLink(linksToAdd)]);
|
|
104
|
+
}
|
|
105
|
+
addRadarMeasureLinks(linksToAdd) {
|
|
106
|
+
this.addLinks(RainComputationAbstract._getRadarMeasureLinks(linksToAdd));
|
|
107
|
+
}
|
|
108
|
+
getBuiltMergeTools(rainMeasures, options) {
|
|
109
|
+
this.buildLatLngMatrix(options);
|
|
110
|
+
this.buildMergeTools(rainMeasures);
|
|
111
|
+
return this.mergeTools;
|
|
112
|
+
}
|
|
113
|
+
getMergeLatLngIndex(cartesianValue) {
|
|
114
|
+
const latLng = this.mergeTools.cartesianTools.getLatLngFromEarthMap(cartesianValue);
|
|
115
|
+
const latLngScale = this.mergeTools.cartesianTools.getScaleLatLngFromEarth(latLng);
|
|
116
|
+
const latIndex = Math.round((latLng.lat - this.mergeTools.limitPoints[0].lat) / latLngScale.lat);
|
|
117
|
+
const lngIndex = Math.round((latLng.lng - this.mergeTools.limitPoints[0].lng) / latLngScale.lng);
|
|
118
|
+
return { index: [latIndex, lngIndex], latLng };
|
|
119
|
+
}
|
|
120
|
+
buildLatLngMatrix(options) {
|
|
121
|
+
const latsLngs = [];
|
|
122
|
+
this.mergeTools = { latsLngs, cartesianTools: options.cartesianTools, limitPoints: [] };
|
|
123
|
+
if (!options.mergeLimitPoints) {
|
|
124
|
+
return this.mergeTools;
|
|
125
|
+
}
|
|
126
|
+
const downPoint = options.cartesianTools.getLatLngFromEarthMap(options.mergeLimitPoints[0]);
|
|
127
|
+
const topPoint = options.cartesianTools.getLatLngFromEarthMap(options.mergeLimitPoints[1]);
|
|
128
|
+
const scaleLat = options.cartesianTools.getScaleLatLng(downPoint);
|
|
129
|
+
for (let lat = downPoint.lat; lat <= topPoint.lat; lat += scaleLat.lat) {
|
|
130
|
+
lat = cartesian_1.CartesianTools.LimitWithPrecision(lat);
|
|
131
|
+
const latLng = new cartesian_1.LatLng({ lat, lng: downPoint.lng });
|
|
132
|
+
const scaleLng = options.cartesianTools.getScaleLatLng(latLng);
|
|
133
|
+
const lngCount = Math.round((topPoint.lng - downPoint.lng) / scaleLng.lng) + 1;
|
|
134
|
+
const lngs = [];
|
|
135
|
+
for (let i = 0; i < lngCount; i++) {
|
|
136
|
+
const initValue = { sum: 0, max: 0, count: 0, latLng: undefined };
|
|
137
|
+
lngs.push(initValue);
|
|
138
|
+
}
|
|
139
|
+
latsLngs.push(lngs);
|
|
140
|
+
}
|
|
141
|
+
this.mergeTools = { latsLngs, cartesianTools: options.cartesianTools, limitPoints: [downPoint, topPoint] };
|
|
142
|
+
return this.mergeTools;
|
|
143
|
+
}
|
|
144
|
+
buildMergeTools(rainMeasures) {
|
|
145
|
+
for (const rainMeasure of rainMeasures) {
|
|
146
|
+
for (const value of rainMeasure.values) {
|
|
147
|
+
if (typeof value['cartesianValues'] !== 'undefined') {
|
|
148
|
+
const cartesianMeasureValue = new cartesian_1.CartesianMeasureValue(value);
|
|
149
|
+
const cartesianValues = cartesianMeasureValue.getCartesianValues();
|
|
150
|
+
for (const cartesianValue of cartesianValues) {
|
|
151
|
+
const { index, latLng } = this.getMergeLatLngIndex(cartesianValue);
|
|
152
|
+
if (index[0] >= 0 && index[1] >= 0 && index[0] < this.mergeTools.latsLngs.length &&
|
|
153
|
+
index[1] < this.mergeTools.latsLngs[index[0]].length) {
|
|
154
|
+
this.mergeTools.latsLngs[index[0]][index[1]].latLng = cartesian_1.CartesianTools.CreateLatLng(latLng);
|
|
155
|
+
this.mergeTools.latsLngs[index[0]][index[1]].sum += cartesianValue.value;
|
|
156
|
+
this.mergeTools.latsLngs[index[0]][index[1]].max = Math.max(cartesianValue.value, this.mergeTools.latsLngs[index[0]][index[1]].max);
|
|
157
|
+
this.mergeTools.latsLngs[index[0]][index[1]].count++;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// throw new Error(`Wrong mergeRainMeasure ${latLngIndex[0]} ${latLngIndex[1]}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
getLinkType() {
|
|
168
|
+
throw Error('abstract');
|
|
169
|
+
}
|
|
170
|
+
mergeRainMeasures(rainMeasures, options) {
|
|
171
|
+
if (rainMeasures.length === 0) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
this.buildMergeTools(rainMeasures);
|
|
175
|
+
const firstCartesianRainMeasure = rainMeasures[0];
|
|
176
|
+
const cartesianValuesMerged = this.buildMergeCartesianValues(options.mergeStrategy, options.removeNullValues);
|
|
177
|
+
const rm = new RainMeasure_1.RainMeasure(firstCartesianRainMeasure.toJSON());
|
|
178
|
+
rm.values = [new cartesian_1.RainCartesianMeasureValue({
|
|
179
|
+
cartesianValues: cartesianValuesMerged,
|
|
180
|
+
version: firstCartesianRainMeasure.getVersion(),
|
|
181
|
+
limitPoints: options.mergeLimitPoints,
|
|
182
|
+
})];
|
|
183
|
+
return [rm];
|
|
184
|
+
}
|
|
185
|
+
buildMergeCartesianValues(mergeStrategy, removeNullValues = false) {
|
|
186
|
+
const cartesianValuesMerged = [];
|
|
187
|
+
for (const [latIndex, latValues] of this.mergeTools.latsLngs.entries()) {
|
|
188
|
+
for (const [lngIndex, mergeValue] of latValues.entries()) {
|
|
189
|
+
let value = mergeValue.sum;
|
|
190
|
+
if (mergeStrategy === MergeStrategy_1.MergeStrategy.AVERAGE) {
|
|
191
|
+
value = mergeValue.count ? value / mergeValue.count : -1;
|
|
192
|
+
}
|
|
193
|
+
else if (mergeStrategy === MergeStrategy_1.MergeStrategy.MAX) {
|
|
194
|
+
value = mergeValue.max;
|
|
195
|
+
}
|
|
196
|
+
if (mergeValue.count && !(removeNullValues && !value)) {
|
|
197
|
+
const lat = mergeValue.latLng.lat;
|
|
198
|
+
const lng = mergeValue.latLng.lng;
|
|
199
|
+
cartesianValuesMerged.push(new cartesian_1.CartesianValue({ value, lat, lng }));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return cartesianValuesMerged;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.RainComputationAbstract = RainComputationAbstract;
|
|
207
|
+
//# sourceMappingURL=RainComputationAbstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RainComputationAbstract.js","sourceRoot":"","sources":["../../src/rain/RainComputationAbstract.ts"],"names":[],"mappings":";;;AAAA,kDAAgD;AAChD,oCAAiD;AACjD,yCAAoC;AACpC,4CAAsH;AACtH,+CAA0C;AAC1C,mDAA2D;AAE3D;;GAEG;AACH,MAAa,uBAAwB,SAAQ,wBAAS;IAkBlD,YAAY,IAiBX;;QACG,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,aAAoB;QAC9C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,mBAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,IAAI,iBAAS,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC;YAC3G,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,IAAI,iBAAS,CAAC;oBACjB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,QAAQ;oBAC5B,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;iBACxD,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,aAAoB;QACrD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,mBAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,IAAI,oBAAY,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,IAAI,oBAAY,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,QAAQ;YACxE,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,IAAI,oBAAY,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,YAAuB;QAC/C,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,CAAA,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,mBAAQ,CAAC;YAChB,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;IACP,CAAC;IAEM,MAAM;QAgBT,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,mBAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,iBAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAElG,OAAO;YACH,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,UAAU;SACrB,CAAC;IACN,CAAC;IAEM,aAAa,CAAC,UAA2C;QAC5D,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;IAEM,eAAe,CAAC,UAA2C;QAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAEM,oBAAoB,CAAC,UAAqC;QAC7D,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEM,kBAAkB,CAAC,YAA2B,EAAE,OAGtD;QACG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEM,mBAAmB,CAAC,cAA8B;QAErD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjG,OAAO,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAC,CAAC;IACjD,CAAC;IAES,iBAAiB,CAAC,OAG3B;QACG,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,EAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,EAAC,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAElE,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YACrE,GAAG,GAAG,0BAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAC,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAgB,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC;gBAC7E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,EAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAC,CAAC;QACzG,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAES,eAAe,CAAC,YAA2B;QACjD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrC,IAAI,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,WAAW,EAAE,CAAC;oBAClD,MAAM,qBAAqB,GAAG,IAAI,iCAAqB,CAAC,KAAY,CAAC,CAAC;oBACtE,MAAM,eAAe,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;oBACnE,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;wBAC3C,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;wBACjE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM;4BAC5E,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4BACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,0BAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;4BAC1F,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC;4BACzE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CACvD,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC5E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACzD,CAAC;6BAAM,CAAC;4BACJ,iFAAiF;wBACrF,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,WAAW;QACjB,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAES,iBAAiB,CAAC,YAA2B,EAC3B,OAIC;QAEzB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEnC,MAAM,yBAAyB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9G,MAAM,EAAE,GAAG,IAAI,yBAAW,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,qCAAyB,CAAC;gBACvC,eAAe,EAAE,qBAAqB;gBACtC,OAAO,EAAE,yBAAyB,CAAC,UAAU,EAAE;gBAC/C,WAAW,EAAE,OAAO,CAAC,gBAAgB;aACxC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAES,yBAAyB,CAAC,aAA4B,EAAE,gBAAgB,GAAG,KAAK;QACtF,MAAM,qBAAqB,GAAqB,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACrE,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC3B,IAAI,aAAa,KAAK,6BAAa,CAAC,OAAO,EAAE,CAAC;oBAC1C,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;qBAAM,IAAI,aAAa,KAAK,6BAAa,CAAC,GAAG,EAAE,CAAC;oBAC7C,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC3B,CAAC;gBAED,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;oBAClC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;oBAClC,qBAAqB,CAAC,IAAI,CAAC,IAAI,0BAAc,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,qBAAqB,CAAC;IACjC,CAAC;CAEJ;AAtRD,0DAsRC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { RainComputationAbstract } from './RainComputationAbstract';
|
|
2
|
+
import { Link, RaainNode } from '../organization';
|
|
3
|
+
import { RainMeasure } from './RainMeasure';
|
|
4
|
+
import { CartesianTools, LatLng } from '../cartesian';
|
|
5
|
+
import { MergeStrategy } from './MergeStrategy';
|
|
6
|
+
/**
|
|
7
|
+
* Represents a map-based rain computation result.
|
|
8
|
+
* This class extends RainComputationAbstract to provide map-specific functionality for rain data processing.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const computation = new RainComputationMap({
|
|
13
|
+
* id: 'comp1',
|
|
14
|
+
* date: new Date(),
|
|
15
|
+
* isReady: true,
|
|
16
|
+
* map: [] // Your rain measurement data here
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* This class is used in the following API endpoints:
|
|
22
|
+
* - api/rains/:id/computations/:computationId?format=map
|
|
23
|
+
* - api/rains/:id/computations?format=map&begin=...
|
|
24
|
+
*/
|
|
25
|
+
export declare class RainComputationMap extends RainComputationAbstract {
|
|
26
|
+
/**
|
|
27
|
+
* The map data stored as a stringified JSON array of RainMeasure objects.
|
|
28
|
+
* This format allows for efficient storage and transmission of large datasets.
|
|
29
|
+
*/
|
|
30
|
+
protected map: string;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new RainComputationMap instance.
|
|
33
|
+
*
|
|
34
|
+
* @param json - The configuration object containing all necessary parameters
|
|
35
|
+
* @param json.id - Unique identifier for the computation
|
|
36
|
+
* @param json.date - Timestamp of the computation
|
|
37
|
+
* @param json.isReady - Whether the computation is ready
|
|
38
|
+
* @param json.map - Array of rain measurements or stringified JSON
|
|
39
|
+
* @param json.links - Optional array of related nodes or links
|
|
40
|
+
* @param json.version - Optional version string
|
|
41
|
+
* @param json.quality - Optional quality metric (0-1)
|
|
42
|
+
* @param json.progressIngest - Optional ingestion progress (0-100)
|
|
43
|
+
* @param json.progressComputing - Optional computing progress (0-100)
|
|
44
|
+
* @param json.timeSpentInMs - Optional computation time in milliseconds
|
|
45
|
+
* @param json.isDoneDate - Optional completion timestamp
|
|
46
|
+
* @param json.launchedBy - Optional user identifier
|
|
47
|
+
* @param json.rain - Optional related rain node
|
|
48
|
+
* @param json.radars - Optional array of related radar nodes
|
|
49
|
+
*/
|
|
50
|
+
constructor(json: {
|
|
51
|
+
id: string;
|
|
52
|
+
date: Date;
|
|
53
|
+
isReady: boolean;
|
|
54
|
+
map: RainMeasure[] | string;
|
|
55
|
+
links?: Link[] | RaainNode[];
|
|
56
|
+
version?: string;
|
|
57
|
+
quality?: number;
|
|
58
|
+
progressIngest?: number;
|
|
59
|
+
progressComputing?: number;
|
|
60
|
+
timeSpentInMs?: number;
|
|
61
|
+
isDoneDate?: Date;
|
|
62
|
+
launchedBy?: string;
|
|
63
|
+
rain?: string | Link | RaainNode;
|
|
64
|
+
radars?: string[] | Link[] | RaainNode[];
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Converts the computation to a JSON object.
|
|
68
|
+
*
|
|
69
|
+
* @returns A JSON object containing all relevant data
|
|
70
|
+
* @remarks
|
|
71
|
+
* This method overrides the parent class's toJSON method to handle the map property
|
|
72
|
+
* and remove the results property which is not used in this implementation.
|
|
73
|
+
*/
|
|
74
|
+
toJSON(): {
|
|
75
|
+
map: string;
|
|
76
|
+
id: string;
|
|
77
|
+
links: Link[];
|
|
78
|
+
version?: string;
|
|
79
|
+
isReady: boolean;
|
|
80
|
+
name: string;
|
|
81
|
+
date: Date;
|
|
82
|
+
quality: number;
|
|
83
|
+
progressIngest: number;
|
|
84
|
+
progressComputing: number;
|
|
85
|
+
timeSpentInMs: number;
|
|
86
|
+
isDoneDate: Date;
|
|
87
|
+
launchedBy: string;
|
|
88
|
+
rain: string;
|
|
89
|
+
radars: string[];
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Sets the map data with optional merging capabilities.
|
|
93
|
+
*
|
|
94
|
+
* @param mapData - The rain measurement data to set
|
|
95
|
+
* @param options - Configuration options for data processing
|
|
96
|
+
* @param options.mergeStrategy - Strategy to use when merging data
|
|
97
|
+
* @param options.cartesianTools - Optional tools for coordinate transformations
|
|
98
|
+
* @param options.mergeLimitPoints - Optional boundary points for merging
|
|
99
|
+
* @param options.removeNullValues - Whether to remove null values during merge
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* This method handles both string and array inputs, and can perform merging
|
|
103
|
+
* operations based on the provided options. The data is always stored internally
|
|
104
|
+
* as a stringified JSON array.
|
|
105
|
+
*/
|
|
106
|
+
setMapData(mapData: RainMeasure[] | string, options: {
|
|
107
|
+
mergeStrategy: MergeStrategy;
|
|
108
|
+
cartesianTools?: CartesianTools;
|
|
109
|
+
mergeLimitPoints?: [LatLng, LatLng];
|
|
110
|
+
removeNullValues?: boolean;
|
|
111
|
+
}): void;
|
|
112
|
+
getMapData(): RainMeasure[];
|
|
113
|
+
}
|