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.
Files changed (215) hide show
  1. package/CHANGELOG.md +94 -7
  2. package/README.md +14 -13
  3. package/RELEASE_PROCESS.md +91 -4
  4. package/cartesian/CartesianMeasureValue.d.ts +46 -0
  5. package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +41 -73
  6. package/cartesian/CartesianMeasureValue.js.map +1 -0
  7. package/cartesian/CartesianTools.d.ts +32 -0
  8. package/{src/cartesian/CartesianTools.ts → cartesian/CartesianTools.js} +69 -130
  9. package/cartesian/CartesianTools.js.map +1 -0
  10. package/cartesian/CartesianValue.d.ts +14 -0
  11. package/cartesian/CartesianValue.js +17 -0
  12. package/cartesian/CartesianValue.js.map +1 -0
  13. package/cartesian/EarthMap.d.ts +5 -0
  14. package/cartesian/EarthMap.js +3 -0
  15. package/cartesian/EarthMap.js.map +1 -0
  16. package/cartesian/ICartesianMeasureValue.d.ts +23 -0
  17. package/cartesian/ICartesianMeasureValue.js +3 -0
  18. package/cartesian/ICartesianMeasureValue.js.map +1 -0
  19. package/cartesian/LatLng.d.ts +16 -0
  20. package/cartesian/LatLng.js +34 -0
  21. package/cartesian/LatLng.js.map +1 -0
  22. package/cartesian/RadarCartesianMeasureValue.d.ts +27 -0
  23. package/cartesian/RadarCartesianMeasureValue.js +24 -0
  24. package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
  25. package/cartesian/RainCartesianMeasureValue.d.ts +25 -0
  26. package/cartesian/RainCartesianMeasureValue.js +25 -0
  27. package/cartesian/RainCartesianMeasureValue.js.map +1 -0
  28. package/cartesian/index.js +25 -0
  29. package/cartesian/index.js.map +1 -0
  30. package/gauge/GaugeMeasure.d.ts +30 -0
  31. package/gauge/GaugeMeasure.js +30 -0
  32. package/gauge/GaugeMeasure.js.map +1 -0
  33. package/gauge/GaugeNode.d.ts +95 -0
  34. package/{src/gauge/GaugeNode.ts → gauge/GaugeNode.js} +28 -54
  35. package/gauge/GaugeNode.js.map +1 -0
  36. package/gauge/GaugeNodeMap.d.ts +35 -0
  37. package/gauge/GaugeNodeMap.js +42 -0
  38. package/gauge/GaugeNodeMap.js.map +1 -0
  39. package/gauge/index.js +20 -0
  40. package/gauge/index.js.map +1 -0
  41. package/index.js +24 -0
  42. package/index.js.map +1 -0
  43. package/organization/EventNode.d.ts +30 -0
  44. package/organization/EventNode.js +30 -0
  45. package/organization/EventNode.js.map +1 -0
  46. package/organization/IVersion.js +3 -0
  47. package/organization/IVersion.js.map +1 -0
  48. package/organization/Link.d.ts +16 -0
  49. package/{src/organization/Link.ts → organization/Link.js} +15 -15
  50. package/organization/Link.js.map +1 -0
  51. package/organization/Measure.d.ts +30 -0
  52. package/organization/Measure.js +51 -0
  53. package/organization/Measure.js.map +1 -0
  54. package/organization/PeopleNode.d.ts +23 -0
  55. package/{src/organization/PeopleNode.ts → organization/PeopleNode.js} +10 -20
  56. package/organization/PeopleNode.js.map +1 -0
  57. package/organization/RaainNode.d.ts +95 -0
  58. package/{src/organization/RaainNode.ts → organization/RaainNode.js} +38 -63
  59. package/organization/RaainNode.js.map +1 -0
  60. package/organization/TeamNode.d.ts +51 -0
  61. package/organization/TeamNode.js +52 -0
  62. package/organization/TeamNode.js.map +1 -0
  63. package/organization/index.js +24 -0
  64. package/organization/index.js.map +1 -0
  65. package/package.json +4 -2
  66. package/polar/AbstractPolarMeasureValue.d.ts +31 -0
  67. package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +34 -62
  68. package/polar/AbstractPolarMeasureValue.js.map +1 -0
  69. package/polar/IPolarMeasureValue.d.ts +19 -0
  70. package/polar/IPolarMeasureValue.js +3 -0
  71. package/polar/IPolarMeasureValue.js.map +1 -0
  72. package/polar/MeasureValuePolarContainer.d.ts +24 -0
  73. package/{src/polar/MeasureValuePolarContainer.ts → polar/MeasureValuePolarContainer.js} +13 -29
  74. package/polar/MeasureValuePolarContainer.js.map +1 -0
  75. package/polar/PolarFilter.d.ts +16 -0
  76. package/polar/PolarFilter.js +45 -0
  77. package/polar/PolarFilter.js.map +1 -0
  78. package/polar/PolarMeasureValue.d.ts +51 -0
  79. package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +62 -125
  80. package/polar/PolarMeasureValue.js.map +1 -0
  81. package/polar/PolarMeasureValueMap.d.ts +45 -0
  82. package/{src/polar/PolarMeasureValueMap.ts → polar/PolarMeasureValueMap.js} +88 -165
  83. package/polar/PolarMeasureValueMap.js.map +1 -0
  84. package/polar/PolarValue.d.ts +10 -0
  85. package/polar/PolarValue.js +12 -0
  86. package/polar/PolarValue.js.map +1 -0
  87. package/polar/RadarPolarMeasureValue.d.ts +33 -0
  88. package/{src/polar/RadarPolarMeasureValue.ts → polar/RadarPolarMeasureValue.js} +31 -39
  89. package/polar/RadarPolarMeasureValue.js.map +1 -0
  90. package/polar/RainPolarMeasureValue.d.ts +24 -0
  91. package/polar/RainPolarMeasureValue.js +46 -0
  92. package/polar/RainPolarMeasureValue.js.map +1 -0
  93. package/polar/index.js +25 -0
  94. package/polar/index.js.map +1 -0
  95. package/quality/QualityPoint.d.ts +37 -0
  96. package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +33 -56
  97. package/quality/QualityPoint.js.map +1 -0
  98. package/quality/SpeedMatrix.d.ts +83 -0
  99. package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -117
  100. package/quality/SpeedMatrix.js.map +1 -0
  101. package/quality/SpeedMatrixContainer.d.ts +102 -0
  102. package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +103 -210
  103. package/quality/SpeedMatrixContainer.js.map +1 -0
  104. package/quality/history/CartesianGaugeHistory.d.ts +15 -0
  105. package/quality/history/CartesianGaugeHistory.js +14 -0
  106. package/quality/history/CartesianGaugeHistory.js.map +1 -0
  107. package/quality/history/CartesianRainHistory.d.ts +9 -0
  108. package/quality/history/CartesianRainHistory.js +11 -0
  109. package/quality/history/CartesianRainHistory.js.map +1 -0
  110. package/quality/history/PositionHistory.d.ts +20 -0
  111. package/quality/history/PositionHistory.js +17 -0
  112. package/quality/history/PositionHistory.js.map +1 -0
  113. package/{src/quality/index.ts → quality/index.d.ts} +0 -3
  114. package/quality/index.js +26 -0
  115. package/quality/index.js.map +1 -0
  116. package/quality/position/Position.d.ts +22 -0
  117. package/quality/position/Position.js +50 -0
  118. package/quality/position/Position.js.map +1 -0
  119. package/quality/position/PositionValue.d.ts +9 -0
  120. package/quality/position/PositionValue.js +12 -0
  121. package/quality/position/PositionValue.js.map +1 -0
  122. package/quality/tools/QualityTools.d.ts +9 -0
  123. package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +17 -18
  124. package/quality/tools/QualityTools.js.map +1 -0
  125. package/radar/RadarMeasure.d.ts +38 -0
  126. package/radar/RadarMeasure.js +33 -0
  127. package/radar/RadarMeasure.js.map +1 -0
  128. package/radar/RadarNode.d.ts +41 -0
  129. package/radar/RadarNode.js +58 -0
  130. package/radar/RadarNode.js.map +1 -0
  131. package/radar/RadarNodeMap.d.ts +51 -0
  132. package/radar/RadarNodeMap.js +50 -0
  133. package/radar/RadarNodeMap.js.map +1 -0
  134. package/radar/index.js +20 -0
  135. package/radar/index.js.map +1 -0
  136. package/rain/MergeStrategy.d.ts +13 -0
  137. package/rain/MergeStrategy.js +11 -0
  138. package/rain/MergeStrategy.js.map +1 -0
  139. package/rain/RainComputation.d.ts +59 -0
  140. package/rain/RainComputation.js +68 -0
  141. package/rain/RainComputation.js.map +1 -0
  142. package/rain/RainComputationAbstract.d.ts +89 -0
  143. package/rain/RainComputationAbstract.js +207 -0
  144. package/rain/RainComputationAbstract.js.map +1 -0
  145. package/rain/RainComputationMap.d.ts +113 -0
  146. package/{src/rain/RainComputationMap.ts → rain/RainComputationMap.js} +26 -60
  147. package/rain/RainComputationMap.js.map +1 -0
  148. package/rain/RainComputationQuality.d.ts +58 -0
  149. package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +52 -89
  150. package/rain/RainComputationQuality.js.map +1 -0
  151. package/rain/RainMeasure.d.ts +17 -0
  152. package/rain/RainMeasure.js +18 -0
  153. package/rain/RainMeasure.js.map +1 -0
  154. package/rain/RainNode.d.ts +60 -0
  155. package/rain/RainNode.js +198 -0
  156. package/rain/RainNode.js.map +1 -0
  157. package/{src/rain/index.ts → rain/index.d.ts} +1 -0
  158. package/rain/index.js +24 -0
  159. package/rain/index.js.map +1 -0
  160. package/.cursorignore +0 -10
  161. package/.github/workflows/ci.yml +0 -29
  162. package/LICENSE +0 -21
  163. package/RELEASE.md +0 -19
  164. package/specs/REQUIREMENTS.md +0 -42
  165. package/specs/TECHNICAL.md +0 -57
  166. package/specs/cartesian/Cartesian.spec.ts +0 -82
  167. package/specs/cartesian/CartesianTools.spec.ts +0 -121
  168. package/specs/gauge/Gauge.spec.ts +0 -39
  169. package/specs/organization/Organization.spec.ts +0 -38
  170. package/specs/polar/Polar.spec.ts +0 -267
  171. package/specs/quality/Position.spec.ts +0 -18
  172. package/specs/quality/QualityPointEdgeCases.spec.ts +0 -215
  173. package/specs/quality/QualityTools.spec.ts +0 -67
  174. package/specs/quality/SpeedMatrix.spec.ts +0 -214
  175. package/specs/radar/Radar.spec.ts +0 -129
  176. package/specs/rain/Rain.spec.ts +0 -334
  177. package/specs/tsconfig.json +0 -12
  178. package/src/cartesian/CartesianValue.ts +0 -26
  179. package/src/cartesian/EarthMap.ts +0 -5
  180. package/src/cartesian/ICartesianMeasureValue.ts +0 -22
  181. package/src/cartesian/LatLng.ts +0 -43
  182. package/src/cartesian/RadarCartesianMeasureValue.ts +0 -32
  183. package/src/cartesian/RainCartesianMeasureValue.ts +0 -32
  184. package/src/gauge/GaugeMeasure.ts +0 -42
  185. package/src/gauge/GaugeNodeMap.ts +0 -55
  186. package/src/organization/EventNode.ts +0 -43
  187. package/src/organization/Measure.ts +0 -61
  188. package/src/organization/TeamNode.ts +0 -91
  189. package/src/polar/IPolarMeasureValue.ts +0 -21
  190. package/src/polar/PolarFilter.ts +0 -46
  191. package/src/polar/PolarValue.ts +0 -16
  192. package/src/polar/RainPolarMeasureValue.ts +0 -57
  193. package/src/quality/history/CartesianGaugeHistory.ts +0 -23
  194. package/src/quality/history/CartesianRainHistory.ts +0 -15
  195. package/src/quality/history/PositionHistory.ts +0 -31
  196. package/src/quality/position/Position.ts +0 -59
  197. package/src/quality/position/PositionValue.ts +0 -15
  198. package/src/radar/RadarMeasure.ts +0 -41
  199. package/src/radar/RadarNode.ts +0 -78
  200. package/src/radar/RadarNodeMap.ts +0 -61
  201. package/src/rain/MergeStrategy.ts +0 -15
  202. package/src/rain/RainComputation.ts +0 -96
  203. package/src/rain/RainComputationAbstract.ts +0 -262
  204. package/src/rain/RainMeasure.ts +0 -25
  205. package/src/rain/RainNode.ts +0 -235
  206. package/tsconfig.json +0 -17
  207. package/tslint.json +0 -79
  208. package/typedoc.json +0 -31
  209. /package/{src/cartesian/index.ts → cartesian/index.d.ts} +0 -0
  210. /package/{src/gauge/index.ts → gauge/index.d.ts} +0 -0
  211. /package/{src/index.ts → index.d.ts} +0 -0
  212. /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
  213. /package/{src/organization/index.ts → organization/index.d.ts} +0 -0
  214. /package/{src/polar/index.ts → polar/index.d.ts} +0 -0
  215. /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":"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"}
@@ -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
+ }