raain-model 3.0.35 → 3.0.36

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 CHANGED
@@ -9,9 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Changed
11
11
 
12
- - RainSpeedMap.transpose: Implemented closest RainSpeed algorithm using Haversine distance when `strictContaining` is
13
- false
14
- - RainSpeedMap: Added comprehensive tests for `strictContaining` option behavior
12
+ - RainSpeedMap.getRainSpeed and .transpose: using Haversine distance when `strictContaining`, and Earth map when
13
+ `inEarthMap`
15
14
 
16
15
  ## [3.0.34] - 2025-10-25
17
16
 
package/bpInfo.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bpInfo = void 0;
4
- exports.bpInfo = { version: 'v3.0.35' };
4
+ exports.bpInfo = { version: 'v3.0.36' };
5
5
  //# sourceMappingURL=bpInfo.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raain-model",
3
- "version": "3.0.35",
3
+ "version": "3.0.36",
4
4
  "author": "contact@radartorain.com",
5
5
  "homepage": "https://github.com/raainio/raain-model",
6
6
  "description": "radartorain.com api model",
@@ -56,4 +56,4 @@
56
56
  "typedoc": "^0.25.12",
57
57
  "typescript": "^5.0.4"
58
58
  }
59
- }
59
+ }
@@ -16,6 +16,9 @@ export declare class RainSpeedMap {
16
16
  } | {
17
17
  lat: number;
18
18
  lng: number;
19
+ }, options?: {
20
+ inEarthMap?: boolean;
21
+ strictContaining?: boolean;
19
22
  }): RainSpeed | undefined;
20
23
  transpose(cartesianValue: CartesianValue, diffInMinutes: number, options?: {
21
24
  inEarthMap?: boolean;
@@ -13,7 +13,7 @@ class RainSpeedMap {
13
13
  this.date = new Date(json.date);
14
14
  }
15
15
  }
16
- getRainSpeed(point) {
16
+ getRainSpeed(point, options) {
17
17
  var _a, _b;
18
18
  // normalize input to numbers
19
19
  let lat;
@@ -35,13 +35,41 @@ class RainSpeedMap {
35
35
  if (typeof lat !== 'number' || typeof lng !== 'number') {
36
36
  return undefined;
37
37
  }
38
+ // Apply earth map rounding if requested
39
+ const cartesianTools = new cartesian_1.CartesianTools();
40
+ if (options === null || options === void 0 ? void 0 : options.inEarthMap) {
41
+ const roundedLatLng = cartesianTools.getLatLngFromEarthMap(new cartesian_1.LatLng({ lat, lng }));
42
+ lat = roundedLatLng.lat;
43
+ lng = roundedLatLng.lng;
44
+ }
38
45
  // retrieve the first RainSpeed whose area contains the point
39
46
  for (const rs of (_a = this.rainSpeeds) !== null && _a !== void 0 ? _a : []) {
40
47
  const rects = (_b = rs === null || rs === void 0 ? void 0 : rs.latLngs) !== null && _b !== void 0 ? _b : [];
41
- if (cartesian_1.CartesianTools.IsPointInAnyRect(lat, lng, rects)) {
48
+ let roundedRects = rects;
49
+ if (options === null || options === void 0 ? void 0 : options.inEarthMap) {
50
+ roundedRects = roundedRects.map((r) => {
51
+ const r0 = cartesianTools.getLatLngFromEarthMap(r[0]);
52
+ const r1 = cartesianTools.getLatLngFromEarthMap(r[1]);
53
+ return [r0, r1];
54
+ });
55
+ }
56
+ if (cartesian_1.CartesianTools.IsPointInAnyRect(lat, lng, roundedRects)) {
42
57
  return rs;
43
58
  }
44
59
  }
60
+ // If no containing area found and strictContaining is not true, find closest by center distance
61
+ if ((options === null || options === void 0 ? void 0 : options.strictContaining) !== true) {
62
+ return this.rainSpeeds.reduce((closest, current) => {
63
+ if (!closest) {
64
+ return current;
65
+ }
66
+ const currentCenter = current.getCenter();
67
+ const closestCenter = closest.getCenter();
68
+ const currentDistance = cartesian_1.CartesianTools.GetDistanceFromLatLngInKm(new cartesian_1.LatLng({ lat, lng }), currentCenter);
69
+ const closestDistance = cartesian_1.CartesianTools.GetDistanceFromLatLngInKm(new cartesian_1.LatLng({ lat, lng }), closestCenter);
70
+ return currentDistance < closestDistance ? current : closest;
71
+ }, undefined);
72
+ }
45
73
  return undefined;
46
74
  }
47
75
  transpose(cartesianValue, diffInMinutes, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"RainSpeedMap.js","sourceRoot":"","sources":["../../src/rain/RainSpeedMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RainSpeedMap.js","sourceRoot":"","sources":["../../src/rain/RainSpeedMap.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AACtC,4CAAoE;AAEpE;;GAEG;AACH,MAAa,YAAY;IAIrB,YAAY,IAA4C;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED,YAAY,CACR,KAAkF,EAClF,OAA4D;;QAE5D,6BAA6B;QAC7B,IAAI,GAAuB,CAAC;QAC5B,IAAI,GAAuB,CAAC;QAE5B,IAAI,KAAK,YAAY,kBAAM,EAAE,CAAC;YAC1B,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAChB,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACpB,CAAC;aAAM,IACH,OAAO,CAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,GAAG,CAAA,KAAK,QAAQ;YACvC,OAAO,CAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,GAAG,CAAA,KAAK,QAAQ,EACzC,CAAC;YACC,GAAG,GAAI,KAAa,CAAC,GAAG,CAAC;YACzB,GAAG,GAAI,KAAa,CAAC,GAAG,CAAC;QAC7B,CAAC;aAAM,IACH,OAAO,CAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,QAAQ,CAAA,KAAK,QAAQ;YAC5C,OAAO,CAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,SAAS,CAAA,KAAK,QAAQ,EAC/C,CAAC;YACC,GAAG,GAAI,KAAa,CAAC,QAAQ,CAAC;YAC9B,GAAG,GAAI,KAAa,CAAC,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,wCAAwC;QACxC,MAAM,cAAc,GAAG,IAAI,0BAAc,EAAE,CAAC;QAC5C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;YACnF,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;YACxB,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC5B,CAAC;QAED,6DAA6D;QAC7D,KAAK,MAAM,EAAE,IAAI,MAAA,IAAI,CAAC,UAAU,mCAAI,EAAE,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,mCAAI,EAAE,CAAC;YAChC,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;gBACtB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAClC,MAAM,EAAE,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,MAAM,EAAE,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,0BAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC1D,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;QAED,gGAAgG;QAChG,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,MAAK,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CACzB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBACjB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAE1C,MAAM,eAAe,GAAG,0BAAc,CAAC,yBAAyB,CAC5D,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,EACtB,aAAa,CAChB,CAAC;gBACF,MAAM,eAAe,GAAG,0BAAc,CAAC,yBAAyB,CAC5D,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,EACtB,aAAa,CAChB,CAAC;gBAEF,OAAO,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,CAAC,EACD,SAAkC,CACrC,CAAC;QACN,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CACL,cAA8B,EAC9B,aAAqB,EACrB,OAA4D;QAE5D,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,0BAAc,EAAE,CAAC;QAC5C,IAAI,SAAoB,CAAC;QAEzB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,EAAE,CAAC;YAC5B,uDAAuD;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,WAC1C,OAAA,0BAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAA,EAAA,CAC/D,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,2FAA2F;YAC3F,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAC9B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBACjB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAE1C,MAAM,eAAe,GAAG,0BAAc,CAAC,yBAAyB,CAC5D,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,EACtB,aAAa,CAChB,CAAC;gBACF,MAAM,eAAe,GAAG,0BAAc,CAAC,yBAAyB,CAC5D,IAAI,kBAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,EACtB,aAAa,CAChB,CAAC;gBAEF,OAAO,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,CAAC,EACD,SAAkC,CACrC,CAAC;QACN,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAA,EAAE,CAAC;YACvB,OAAO,cAAc,CAAC;QAC1B,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACvE,OAAO,IAAI,0BAAc,CAAC;YACtB,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,GAAG,EAAE,SAAS,CAAC,GAAG;SACrB,CAAC,CAAC;IACP,CAAC;CACJ;AAzJD,oCAyJC"}