raain-model 3.0.28 → 3.0.30
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 +13 -0
- package/README.md +1 -1
- package/bpInfo.js +1 -1
- package/cartesian/CartesianMeasureValue.d.ts +3 -1
- package/cartesian/CartesianMeasureValue.js +25 -2
- package/cartesian/CartesianMeasureValue.js.map +1 -1
- package/cartesian/CartesianTools.d.ts +3 -0
- package/cartesian/CartesianTools.js +49 -1
- package/cartesian/CartesianTools.js.map +1 -1
- package/cartesian/LatLng.d.ts +2 -0
- package/cartesian/LatLng.js +14 -5
- package/cartesian/LatLng.js.map +1 -1
- package/organization/RaainNode.js +0 -1
- package/organization/RaainNode.js.map +1 -1
- package/package.json +12 -11
- package/polar/PolarMeasureValue.d.ts +7 -0
- package/polar/PolarMeasureValue.js +70 -29
- package/polar/PolarMeasureValue.js.map +1 -1
- package/polar/PolarMeasureValueMap.d.ts +2 -1
- package/polar/PolarMeasureValueMap.js +40 -11
- package/polar/PolarMeasureValueMap.js.map +1 -1
- package/rain/RainComputationCumulative.d.ts +64 -0
- package/rain/RainComputationCumulative.js +39 -0
- package/rain/RainComputationCumulative.js.map +1 -0
- package/rain/RainSpeed.d.ts +27 -0
- package/rain/RainSpeed.js +38 -0
- package/rain/RainSpeed.js.map +1 -0
- package/rain/RainSpeedMap.d.ts +21 -0
- package/rain/RainSpeedMap.js +115 -0
- package/rain/RainSpeedMap.js.map +1 -0
- package/rain/index.d.ts +3 -0
- package/rain/index.js +3 -0
- package/rain/index.js.map +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RainSpeedMap = void 0;
|
|
4
|
+
const cartesian_1 = require("../cartesian");
|
|
5
|
+
/**
|
|
6
|
+
* api/rains/:rainId/computations/:rainHistoryId/speeds => RainSpeedMap.map => RainSpeed[]
|
|
7
|
+
*/
|
|
8
|
+
class RainSpeedMap {
|
|
9
|
+
constructor(json) {
|
|
10
|
+
this.map = json.map;
|
|
11
|
+
this.date = json.date;
|
|
12
|
+
}
|
|
13
|
+
getRainSpeed(point) {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
// normalize input to numbers
|
|
16
|
+
let lat;
|
|
17
|
+
let lng;
|
|
18
|
+
if (point instanceof cartesian_1.LatLng) {
|
|
19
|
+
lat = point.lat;
|
|
20
|
+
lng = point.lng;
|
|
21
|
+
}
|
|
22
|
+
else if (typeof (point === null || point === void 0 ? void 0 : point.lat) === 'number' &&
|
|
23
|
+
typeof (point === null || point === void 0 ? void 0 : point.lng) === 'number') {
|
|
24
|
+
lat = point.lat;
|
|
25
|
+
lng = point.lng;
|
|
26
|
+
}
|
|
27
|
+
else if (typeof (point === null || point === void 0 ? void 0 : point.latitude) === 'number' &&
|
|
28
|
+
typeof (point === null || point === void 0 ? void 0 : point.longitude) === 'number') {
|
|
29
|
+
lat = point.latitude;
|
|
30
|
+
lng = point.longitude;
|
|
31
|
+
}
|
|
32
|
+
if (typeof lat !== 'number' || typeof lng !== 'number') {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
// retrieve the first RainSpeed whose area contains the point
|
|
36
|
+
for (const rs of (_a = this.map) !== null && _a !== void 0 ? _a : []) {
|
|
37
|
+
const rects = (_b = rs === null || rs === void 0 ? void 0 : rs.latLngs) !== null && _b !== void 0 ? _b : [];
|
|
38
|
+
for (const rect of rects) {
|
|
39
|
+
const [p1, p2] = rect || [];
|
|
40
|
+
if (!p1 || !p2) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const minLat = Math.min(p1.lat, p2.lat);
|
|
44
|
+
const maxLat = Math.max(p1.lat, p2.lat);
|
|
45
|
+
const minLng = Math.min(p1.lng, p2.lng);
|
|
46
|
+
const maxLng = Math.max(p1.lng, p2.lng);
|
|
47
|
+
if (lat >= minLat && lat <= maxLat && lng >= minLng && lng <= maxLng) {
|
|
48
|
+
return rs;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
transpose(cartesianValue, diffInMinutes) {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
const value = cartesianValue.value;
|
|
57
|
+
const lat = cartesianValue.lat;
|
|
58
|
+
const lng = cartesianValue.lng;
|
|
59
|
+
// find matching RainSpeed areas that contain the point
|
|
60
|
+
const matches = this.map.filter((rs) => {
|
|
61
|
+
var _a;
|
|
62
|
+
return ((_a = rs === null || rs === void 0 ? void 0 : rs.latLngs) !== null && _a !== void 0 ? _a : []).some(([p1, p2]) => {
|
|
63
|
+
if (!p1 || !p2) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const minLat = Math.min(p1.lat, p2.lat);
|
|
67
|
+
const maxLat = Math.max(p1.lat, p2.lat);
|
|
68
|
+
const minLng = Math.min(p1.lng, p2.lng);
|
|
69
|
+
const maxLng = Math.max(p1.lng, p2.lng);
|
|
70
|
+
return lat >= minLat && lat <= maxLat && lng >= minLng && lng <= maxLng;
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
if (matches.length === 1) {
|
|
74
|
+
const rs = matches[0];
|
|
75
|
+
const speed = (_a = rs.speedInMetersPerSec) !== null && _a !== void 0 ? _a : 0;
|
|
76
|
+
const azimuthDeg = (_b = rs.azimuthInDegrees) !== null && _b !== void 0 ? _b : 0;
|
|
77
|
+
const timeSec = (typeof diffInMinutes === 'number' ? diffInMinutes : 0) * 60;
|
|
78
|
+
const distance = speed * timeSec; // meters
|
|
79
|
+
if (distance > 0) {
|
|
80
|
+
const R = 6371000; // Earth radius in meters
|
|
81
|
+
const bearing = (azimuthDeg * Math.PI) / 180; // to radians
|
|
82
|
+
const lat1 = (lat * Math.PI) / 180;
|
|
83
|
+
const lon1 = (lng * Math.PI) / 180;
|
|
84
|
+
const angDist = distance / R; // angular distance in radians
|
|
85
|
+
const sinLat1 = Math.sin(lat1);
|
|
86
|
+
const cosLat1 = Math.cos(lat1);
|
|
87
|
+
const sinAng = Math.sin(angDist);
|
|
88
|
+
const cosAng = Math.cos(angDist);
|
|
89
|
+
const sinLat2 = sinLat1 * cosAng + cosLat1 * sinAng * Math.cos(bearing);
|
|
90
|
+
const lat2 = Math.asin(Math.min(1, Math.max(-1, sinLat2)));
|
|
91
|
+
const y = Math.sin(bearing) * sinAng * cosLat1;
|
|
92
|
+
const x = cosAng - sinLat1 * Math.sin(lat2);
|
|
93
|
+
const lon2 = lon1 + Math.atan2(y, x);
|
|
94
|
+
// normalize using CartesianTools
|
|
95
|
+
const cartesianTools = new cartesian_1.CartesianTools();
|
|
96
|
+
const newLng = cartesian_1.CartesianTools.NormalizeLongitude((lon2 * 180) / Math.PI);
|
|
97
|
+
const newLat = cartesian_1.CartesianTools.ClampLatitude((lat2 * 180) / Math.PI);
|
|
98
|
+
const newLatLng = cartesianTools.getLatLngFromEarthMap(new cartesian_1.LatLng({ lat: newLat, lng: newLng }));
|
|
99
|
+
return new cartesian_1.CartesianValue({
|
|
100
|
+
value,
|
|
101
|
+
lat: newLatLng.lat,
|
|
102
|
+
lng: newLatLng.lng,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// default: return unchanged
|
|
107
|
+
return new cartesian_1.CartesianValue({
|
|
108
|
+
value,
|
|
109
|
+
lat,
|
|
110
|
+
lng,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.RainSpeedMap = RainSpeedMap;
|
|
115
|
+
//# sourceMappingURL=RainSpeedMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RainSpeedMap.js","sourceRoot":"","sources":["../../src/rain/RainSpeedMap.ts"],"names":[],"mappings":"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"}
|
package/rain/index.d.ts
CHANGED
|
@@ -4,4 +4,7 @@ export * from './RainComputationQuality';
|
|
|
4
4
|
export * from './RainComputationAbstract';
|
|
5
5
|
export * from './RainComputation';
|
|
6
6
|
export * from './RainComputationMap';
|
|
7
|
+
export * from './RainComputationCumulative';
|
|
8
|
+
export * from './RainSpeed';
|
|
9
|
+
export * from './RainSpeedMap';
|
|
7
10
|
export * from './MergeStrategy';
|
package/rain/index.js
CHANGED
|
@@ -20,5 +20,8 @@ __exportStar(require("./RainComputationQuality"), exports);
|
|
|
20
20
|
__exportStar(require("./RainComputationAbstract"), exports);
|
|
21
21
|
__exportStar(require("./RainComputation"), exports);
|
|
22
22
|
__exportStar(require("./RainComputationMap"), exports);
|
|
23
|
+
__exportStar(require("./RainComputationCumulative"), exports);
|
|
24
|
+
__exportStar(require("./RainSpeed"), exports);
|
|
25
|
+
__exportStar(require("./RainSpeedMap"), exports);
|
|
23
26
|
__exportStar(require("./MergeStrategy"), exports);
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
package/rain/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,6CAA2B;AAC3B,2DAAyC;AACzC,4DAA0C;AAC1C,oDAAkC;AAClC,uDAAqC;AACrC,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,6CAA2B;AAC3B,2DAAyC;AACzC,4DAA0C;AAC1C,oDAAkC;AAClC,uDAAqC;AACrC,8DAA4C;AAC5C,8CAA4B;AAC5B,iDAA+B;AAC/B,kDAAgC"}
|