openskidata-format 5.1.0 → 5.3.0

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/dist/Run.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import * as GeoJSON from 'geojson';
2
2
  import { ElevationData, ElevationProfile } from './ElevationProfile';
3
3
  import { FeatureType } from './FeatureType';
4
+ import { RunDifficultyConvention } from './RunDifficultyConvention';
4
5
  import { SkiAreaSummaryFeature } from './SkiArea';
6
+ import { SnowCoverHistory } from './SnowCoverHistory';
5
7
  import { Source } from './Source';
6
8
  import { Status } from './Status';
7
9
  export type RunGeometry = GeoJSON.LineString | GeoJSON.Polygon;
@@ -45,6 +47,7 @@ export type RunFeature = GeoJSON.Feature<RunGeometry, RunProperties>;
45
47
  * @property {Source[]} sources - Data sources for this run's information
46
48
  * @property {string[]} websites - Websites associated with this run, derived from the OpenStreetMap website tag
47
49
  * @property {string | null} wikidata_id - Wikidata identifier, if available, derived from the OpenStreetMap wikidata tag
50
+ * @property {SnowCoverHistory} [snowCoverHistory] - Historical snow cover data for this run, if available
48
51
  */
49
52
  export type RunProperties = {
50
53
  type: FeatureType.Run;
@@ -66,6 +69,7 @@ export type RunProperties = {
66
69
  sources: Source[];
67
70
  websites: string[];
68
71
  wikidata_id: string | null;
72
+ snowCoverHistory?: SnowCoverHistory;
69
73
  };
70
74
  export declare enum RunUse {
71
75
  Downhill = "downhill",
@@ -113,37 +117,6 @@ export declare enum RunColorValue {
113
117
  ORANGE = "hsl(34, 100%, 50%)",
114
118
  GREY = "hsl(0, 0%, 35%)"
115
119
  }
116
- /**
117
- * Run difficulty colors vary by region. This enum defines the color convention used for runs at a ski area.
118
- * @enum {string}
119
- */
120
- export declare enum RunDifficultyConvention {
121
- /**
122
- * European color convention:
123
- * - Green: Novice
124
- * - Blue: Easy
125
- * - Red: Intermediate
126
- * - Black: Advanced/Expert
127
- * - Orange: Freeride/Extreme
128
- */
129
- EUROPE = "europe",
130
- /**
131
- * Japanese color convention:
132
- * - Green: Novice/Easy
133
- * - Red: Intermediate
134
- * - Black: Advanced/Expert
135
- * - Orange: Freeride/Extreme
136
- */
137
- JAPAN = "japan",
138
- /**
139
- * North American color convention:
140
- * - Green: Novice/Easy
141
- * - Blue: Intermediate
142
- * - Black: Advanced/Expert
143
- * - Orange: Freeride/Extreme
144
- */
145
- NORTH_AMERICA = "north_america"
146
- }
147
120
  export declare function getRunElevationData(feature: RunFeature): ElevationData | null;
148
121
  export declare function getRunColor(convention: RunDifficultyConvention, difficulty: RunDifficulty | null): RunColorValue;
149
122
  export declare function runColorNameToValue(color: RunColorName): RunColorValue;
package/dist/Run.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RunDifficultyConvention = exports.RunColorValue = exports.RunColorName = exports.RunDifficulty = exports.RunGrooming = exports.RunUse = void 0;
3
+ exports.RunColorValue = exports.RunColorName = exports.RunDifficulty = exports.RunGrooming = exports.RunUse = void 0;
4
4
  exports.getRunElevationData = getRunElevationData;
5
5
  exports.getRunColor = getRunColor;
6
6
  exports.runColorNameToValue = runColorNameToValue;
7
7
  exports.getRunColorName = getRunColorName;
8
8
  const ElevationProfile_1 = require("./ElevationProfile");
9
+ const RunDifficultyConvention_1 = require("./RunDifficultyConvention");
9
10
  const exhaustiveMatchingGuard_1 = require("./util/exhaustiveMatchingGuard");
10
11
  var RunUse;
11
12
  (function (RunUse) {
@@ -58,38 +59,6 @@ var RunColorValue;
58
59
  RunColorValue["ORANGE"] = "hsl(34, 100%, 50%)";
59
60
  RunColorValue["GREY"] = "hsl(0, 0%, 35%)";
60
61
  })(RunColorValue || (exports.RunColorValue = RunColorValue = {}));
61
- /**
62
- * Run difficulty colors vary by region. This enum defines the color convention used for runs at a ski area.
63
- * @enum {string}
64
- */
65
- var RunDifficultyConvention;
66
- (function (RunDifficultyConvention) {
67
- /**
68
- * European color convention:
69
- * - Green: Novice
70
- * - Blue: Easy
71
- * - Red: Intermediate
72
- * - Black: Advanced/Expert
73
- * - Orange: Freeride/Extreme
74
- */
75
- RunDifficultyConvention["EUROPE"] = "europe";
76
- /**
77
- * Japanese color convention:
78
- * - Green: Novice/Easy
79
- * - Red: Intermediate
80
- * - Black: Advanced/Expert
81
- * - Orange: Freeride/Extreme
82
- */
83
- RunDifficultyConvention["JAPAN"] = "japan";
84
- /**
85
- * North American color convention:
86
- * - Green: Novice/Easy
87
- * - Blue: Intermediate
88
- * - Black: Advanced/Expert
89
- * - Orange: Freeride/Extreme
90
- */
91
- RunDifficultyConvention["NORTH_AMERICA"] = "north_america";
92
- })(RunDifficultyConvention || (exports.RunDifficultyConvention = RunDifficultyConvention = {}));
93
62
  function getRunElevationData(feature) {
94
63
  const geometry = feature.geometry;
95
64
  const profile = feature.properties.elevationProfile;
@@ -123,7 +92,7 @@ function runColorNameToValue(color) {
123
92
  }
124
93
  function getRunColorName(convention, difficulty) {
125
94
  switch (convention) {
126
- case RunDifficultyConvention.EUROPE:
95
+ case RunDifficultyConvention_1.RunDifficultyConvention.EUROPE:
127
96
  switch (difficulty) {
128
97
  case RunDifficulty.NOVICE:
129
98
  return RunColorName.GREEN;
@@ -140,7 +109,7 @@ function getRunColorName(convention, difficulty) {
140
109
  default:
141
110
  return RunColorName.GREY;
142
111
  }
143
- case RunDifficultyConvention.JAPAN:
112
+ case RunDifficultyConvention_1.RunDifficultyConvention.JAPAN:
144
113
  switch (difficulty) {
145
114
  case RunDifficulty.NOVICE:
146
115
  case RunDifficulty.EASY:
@@ -156,7 +125,7 @@ function getRunColorName(convention, difficulty) {
156
125
  default:
157
126
  return RunColorName.GREY;
158
127
  }
159
- case RunDifficultyConvention.NORTH_AMERICA:
128
+ case RunDifficultyConvention_1.RunDifficultyConvention.NORTH_AMERICA:
160
129
  switch (difficulty) {
161
130
  case RunDifficulty.NOVICE:
162
131
  case RunDifficulty.EASY:
package/dist/Run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Run.js","sourceRoot":"","sources":["../src/Run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Run.js","sourceRoot":"","sources":["../src/Run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { AllGeoJSON } from "@turf/helpers";
2
+ /**
3
+ * Run difficulty colors vary by region. This enum defines the color convention used for runs at a ski area.
4
+ * @enum {string}
5
+ */
6
+ export declare enum RunDifficultyConvention {
7
+ /**
8
+ * European color convention:
9
+ * - Green: Novice
10
+ * - Blue: Easy
11
+ * - Red: Intermediate
12
+ * - Black: Advanced/Expert
13
+ * - Orange: Freeride/Extreme
14
+ */
15
+ EUROPE = "europe",
16
+ /**
17
+ * Japanese color convention:
18
+ * - Green: Novice/Easy
19
+ * - Red: Intermediate
20
+ * - Black: Advanced/Expert
21
+ * - Orange: Freeride/Extreme
22
+ */
23
+ JAPAN = "japan",
24
+ /**
25
+ * North American color convention:
26
+ * - Green: Novice/Easy
27
+ * - Blue: Intermediate
28
+ * - Black: Advanced/Expert
29
+ * - Orange: Freeride/Extreme
30
+ */
31
+ NORTH_AMERICA = "north_america"
32
+ }
33
+ /**
34
+ * Determines the run difficulty convention for a given geographic location.
35
+ * Based on the center point of the geometry, returns the appropriate regional
36
+ * convention for ski run difficulty ratings.
37
+ *
38
+ * @param geojson - GeoJSON geometry to determine the center location from
39
+ * @returns The appropriate run difficulty convention for the location
40
+ * @throws Error if the center of geometry cannot be determined
41
+ */
42
+ export declare function getRunDifficultyConvention(geojson: AllGeoJSON): RunDifficultyConvention;
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunDifficultyConvention = void 0;
4
+ exports.getRunDifficultyConvention = getRunDifficultyConvention;
5
+ const tslib_1 = require("tslib");
6
+ const boolean_point_in_polygon_1 = tslib_1.__importDefault(require("@turf/boolean-point-in-polygon"));
7
+ const center_1 = tslib_1.__importDefault(require("@turf/center"));
8
+ const turf = tslib_1.__importStar(require("@turf/helpers"));
9
+ /**
10
+ * Run difficulty colors vary by region. This enum defines the color convention used for runs at a ski area.
11
+ * @enum {string}
12
+ */
13
+ var RunDifficultyConvention;
14
+ (function (RunDifficultyConvention) {
15
+ /**
16
+ * European color convention:
17
+ * - Green: Novice
18
+ * - Blue: Easy
19
+ * - Red: Intermediate
20
+ * - Black: Advanced/Expert
21
+ * - Orange: Freeride/Extreme
22
+ */
23
+ RunDifficultyConvention["EUROPE"] = "europe";
24
+ /**
25
+ * Japanese color convention:
26
+ * - Green: Novice/Easy
27
+ * - Red: Intermediate
28
+ * - Black: Advanced/Expert
29
+ * - Orange: Freeride/Extreme
30
+ */
31
+ RunDifficultyConvention["JAPAN"] = "japan";
32
+ /**
33
+ * North American color convention:
34
+ * - Green: Novice/Easy
35
+ * - Blue: Intermediate
36
+ * - Black: Advanced/Expert
37
+ * - Orange: Freeride/Extreme
38
+ */
39
+ RunDifficultyConvention["NORTH_AMERICA"] = "north_america";
40
+ })(RunDifficultyConvention || (exports.RunDifficultyConvention = RunDifficultyConvention = {}));
41
+ const northAmericanConventionGeometry = turf.multiPolygon([
42
+ [
43
+ [
44
+ [66.89889168301036, 22.98946421817959],
45
+ [76.79011657384558, 4.2607118936878265],
46
+ [112.5459757578734, -40.008871147786486],
47
+ [166.64372809287335, -58.19200446079054],
48
+ [191.91699393212554, -33.377687858720755],
49
+ [192.65370948033006, -8.971607939355977],
50
+ [140.68354997294796, 5.451024881476499],
51
+ [123.38582294700518, 21.801329456101513],
52
+ [122.25942048875993, 24.243081370534554],
53
+ [123.02414890399393, 26.354744126525432],
54
+ [129.68307711216244, 35.3374262814546],
55
+ [131.36509887116028, 39.1827837685222],
56
+ [130.5715844381864, 42.515964349309684],
57
+ [130.62108313985783, 42.63370843853855],
58
+ [130.39263902117034, 42.73714858581644],
59
+ [130.8150956808529, 42.87954610777132],
60
+ [131.04334909066392, 42.88226217082041],
61
+ [131.33954328617205, 43.445079879213296],
62
+ [131.191137752773, 43.53879786242706],
63
+ [131.2860140618261, 44.06115319070142],
64
+ [131.1086866768622, 44.71097030226514],
65
+ [130.95332209785204, 44.84377389211244],
66
+ [131.56223386930952, 45.01998391706314],
67
+ [131.87876159757576, 45.342467064732745],
68
+ [131.9445424786545, 45.26381674117374],
69
+ [132.89886314033083, 45.04768363738535],
70
+ [132.9409663928247, 45.020634782943716],
71
+ [133.12560828825156, 45.14828761444474],
72
+ [133.11406817721956, 45.23774574998686],
73
+ [133.1686920707706, 45.49559658174417],
74
+ [133.4044528436404, 45.59600211321589],
75
+ [133.49367119277423, 45.87840483196845],
76
+ [133.57649823904808, 45.88061866181769],
77
+ [133.7230811284722, 46.06662995573109],
78
+ [133.68166349871666, 46.137321119014274],
79
+ [133.9014556853037, 46.24315756590036],
80
+ [134.29060710292293, 47.44981009549741],
81
+ [134.53603145724082, 47.47580868032259],
82
+ [134.80050117570937, 47.73143995381383],
83
+ [134.54808493637842, 48.00270638588145],
84
+ [134.7902354911858, 48.38077517538687],
85
+ [134.53852703049813, 48.414602674179406],
86
+ [134.05426284432252, 48.33207866806839],
87
+ [133.44255382292891, 48.11130941788082],
88
+ [133.06661598961256, 48.102793716410616],
89
+ [132.65561957214425, 47.92377254119751],
90
+ [132.57597035647728, 47.73126763647102],
91
+ [131.5872859174675, 47.669086096155525],
92
+ [130.978760673039, 47.70552624852317],
93
+ [130.8927298265839, 47.92147467660291],
94
+ [130.69208001471225, 48.07898424194457],
95
+ [130.8424973965307, 48.32747681044523],
96
+ [130.53333624266037, 48.638203333369944],
97
+ [130.69902773150022, 48.86294984494779],
98
+ [130.4313260036679, 48.91144552665949],
99
+ [130.2336273608912, 48.877796693265594],
100
+ [129.49472335519903, 49.445146325369194],
101
+ [128.6404925727599, 49.6395594299683],
102
+ [127.95892224407356, 49.62425806475295],
103
+ [127.56973394676123, 49.842755131278835],
104
+ [127.6749910879272, 50.240140628289964],
105
+ [127.45368458653832, 50.26847480259133],
106
+ [127.37394005798404, 50.29288471184299],
107
+ [127.32612719828853, 50.34379944487219],
108
+ [127.37997900840315, 50.60653687131031],
109
+ [127.16325020595207, 50.933036917572906],
110
+ [126.99177818739395, 51.326954509452236],
111
+ [126.33131963313707, 52.493153867333206],
112
+ [126.09655832692533, 52.86710580508279],
113
+ [125.18461572471739, 53.21778527809076],
114
+ [123.62905555865535, 53.56957077991163],
115
+ [122.14662682326076, 53.507610554797225],
116
+ [120.81940759451805, 53.31174251524433],
117
+ [119.95478692741125, 52.77983494498105],
118
+ [120.02183577608542, 52.55624852160162],
119
+ [120.59821023820314, 52.5562523256705],
120
+ [120.65182146309388, 52.027454302929755],
121
+ [120.00845804883363, 51.63400833664596],
122
+ [119.10923570584242, 50.3653464992334],
123
+ [119.33042992474253, 50.30545934524457],
124
+ [119.21648675850292, 50.099528593865784],
125
+ [118.93783039700338, 49.98458223887849],
126
+ [118.54626899510839, 49.94616013995508],
127
+ [117.80663959739081, 49.53647108800752],
128
+ [117.484738258086, 49.624317990557614],
129
+ [117.26607476489426, 49.63477188589076],
130
+ [116.96468681768641, 49.73160402967815],
131
+ [116.62825050755794, 49.944503706705376],
132
+ [116.2287910451044, 50.03623236447976],
133
+ [115.97912115005505, 49.97893073129566],
134
+ [115.72585372832015, 49.87560524136032],
135
+ [115.38340104847777, 49.935338883138456],
136
+ [115.15157871232401, 50.03624558574222],
137
+ [114.96972180858182, 50.18262812854161],
138
+ [114.32823723216535, 50.27374466694857],
139
+ [113.21615782676918, 49.84014337192383],
140
+ [113.06279976594055, 49.60262851502978],
141
+ [112.75961978011298, 49.50544853175836],
142
+ [112.4528903096238, 49.51941937053812],
143
+ [111.93911320274538, 49.37324774723086],
144
+ [111.69083700584588, 49.38804243172055],
145
+ [110.68965090965844, 49.16705432804406],
146
+ [108.61062678042163, 49.33457873762259],
147
+ [107.90316280555385, 49.97532248790398],
148
+ [106.49948671672877, 50.3809827302172],
149
+ [105.51746011619525, 50.48702476586922],
150
+ [103.97795584841299, 50.133831277984996],
151
+ [102.69196601175406, 50.37681484681099],
152
+ [102.27144249887641, 50.87948727040293],
153
+ [102.17444849785716, 51.35640391793228],
154
+ [100.63003834780625, 51.738599556839574],
155
+ [98.92412930445079, 52.152271807237554],
156
+ [98.0263146497278, 51.38702212297895],
157
+ [97.83223938583137, 50.91503753447586],
158
+ [98.30141292582249, 50.51549014567553],
159
+ [98.03452228766315, 50.01401927081076],
160
+ [97.21087912958029, 49.75344974439781],
161
+ [96.59617521697089, 49.92558626439808],
162
+ [94.58073504473032, 50.071206832869876],
163
+ [94.44884921665886, 50.25288523325358],
164
+ [94.28227879098631, 50.59029357818193],
165
+ [93.06055432240078, 50.6108167038102],
166
+ [92.95500531764452, 50.764378755264715],
167
+ [92.38044935493656, 50.81536176617482],
168
+ [89.61447548394369, 49.896510834163024],
169
+ [89.41209157088667, 49.593951299041436],
170
+ [87.21941106111126, 49.136371106937105],
171
+ [86.47691458036888, 48.52706996107682],
172
+ [85.66792655187515, 48.41217050021373],
173
+ [85.61001315938637, 47.097608820611185],
174
+ [83.06577876367635, 47.1684932958469],
175
+ [82.19603900970611, 45.39598594758252],
176
+ [79.94680702146206, 44.995940936938524],
177
+ [80.74758671786947, 43.25101970631087],
178
+ [80.16296382083789, 42.42004311892032],
179
+ [79.08808560905646, 42.80565581050615],
180
+ [77.46543003728954, 42.93866114713731],
181
+ [77.30266016034727, 42.91577009179525],
182
+ [77.06944317811468, 42.98941184436538],
183
+ [76.83954492079482, 42.95784584611252],
184
+ [76.66706605000616, 42.91054018927406],
185
+ [76.35054751194656, 42.86314251596045],
186
+ [76.22106905960021, 42.92109675548289],
187
+ [75.8499512176796, 42.944841027684475],
188
+ [75.69647619703395, 42.79434701877443],
189
+ [75.20518050373951, 42.86058166470994],
190
+ [74.86716288299183, 42.99486162795807],
191
+ [74.21214208437436, 43.26799034589942],
192
+ [73.54918053004673, 43.03445951036437],
193
+ [73.43569691290458, 42.59058989745361],
194
+ [73.50713573720739, 42.42885549027292],
195
+ [73.32430827244477, 42.43964242187812],
196
+ [73.28138720704561, 42.524654623049486],
197
+ [72.89688006931604, 42.53825798475941],
198
+ [72.7028920768594, 42.65445195418786],
199
+ [71.8205490156389, 42.84297257066001],
200
+ [71.24172502287257, 42.76218198674192],
201
+ [70.96542642702568, 42.45295945325228],
202
+ [70.87574064610243, 42.288978943546994],
203
+ [70.93667564676599, 42.25956939262474],
204
+ [71.0522698554054, 42.28801700409892],
205
+ [71.26892670629547, 42.19664779423837],
206
+ [70.22467025584973, 41.6109136918285],
207
+ [70.1871419707528, 41.52357559397731],
208
+ [70.29521282660394, 41.5196557335768],
209
+ [70.4885172051716, 41.39563567019803],
210
+ [70.6908234400903, 41.47973822440426],
211
+ [70.78334977579652, 41.37596799777336],
212
+ [70.7936135992125, 41.23200478517444],
213
+ [71.40193377758987, 41.189890843929476],
214
+ [71.72132931443616, 41.463007098837124],
215
+ [72.25976659039807, 41.036213505586716],
216
+ [73.12473655458163, 40.821214468109844],
217
+ [71.8274169831183, 40.219535506292345],
218
+ [71.2093915709481, 40.35194316359275],
219
+ [70.70839519610914, 40.047767583705706],
220
+ [70.00814064760502, 40.19597188360018],
221
+ [69.3238929275289, 39.96163997362652],
222
+ [69.25288425833449, 39.8365015771121],
223
+ [69.36807176732333, 39.53622995828479],
224
+ [70.5656905159378, 39.611522993563625],
225
+ [70.81017094805003, 39.40296443017286],
226
+ [71.05478901580443, 39.42623263483682],
227
+ [71.09537841230028, 39.521081174175976],
228
+ [71.48723105871241, 39.61179598590786],
229
+ [71.80293870931277, 39.289369010362776],
230
+ [72.03176071465103, 39.344791211184486],
231
+ [72.22037536907436, 39.19478948035075],
232
+ [72.34794908849406, 39.34434407454637],
233
+ [73.15397827282933, 39.35800161267082],
234
+ [73.41580743762637, 39.46694232025965],
235
+ [73.60494023346439, 39.469004217709056],
236
+ [73.53306087489301, 39.24817612724672],
237
+ [73.8401473956308, 38.955283153545196],
238
+ [73.7178756559239, 38.88418224181672],
239
+ [73.84575285445322, 38.5733588129749],
240
+ [74.19825648155071, 38.625225936216],
241
+ [74.73465165940527, 38.39729684471283],
242
+ [74.94429646804616, 37.74563365375093],
243
+ [75.09730124153691, 37.34874288728962],
244
+ [74.47556092367677, 37.22736548435755],
245
+ [74.52571774786139, 37.04804932382365],
246
+ [72.64281263069017, 36.9965169904729],
247
+ [71.27151437563325, 36.14385342653641],
248
+ [71.70051938813555, 35.31553980310994],
249
+ [70.91367870839377, 34.02947262017156],
250
+ [69.8657881549984, 33.97753268150575],
251
+ [70.19479291508452, 33.38872790844742],
252
+ [69.48427263502771, 32.94309627730759],
253
+ [69.17043362955638, 31.802649394624297],
254
+ [66.5660130962763, 31.1468844695182],
255
+ [66.39058495939196, 29.902900359253024],
256
+ [64.20728972399988, 29.470320322411112],
257
+ [62.39830055544061, 29.433474533828033],
258
+ [60.82809795436239, 29.876493049104326],
259
+ [61.819412883544715, 28.5413645023537],
260
+ [62.838210084807116, 28.1758941784838],
261
+ [62.87712480493187, 26.710220153319582],
262
+ [61.95649723937791, 26.202543172995433],
263
+ [61.64164473778666, 25.062349569223997],
264
+ [66.89889168301036, 22.98946421817959],
265
+ ],
266
+ ],
267
+ [
268
+ [
269
+ [-79.49790751939359, 8.895517276865164],
270
+ [-80.09116426661198, 9.489400626216977],
271
+ [-71.5226805789838, 14.570830502555324],
272
+ [-64.296660455746, 16.87497218957077],
273
+ [-63.50670575144407, 19.468079078229948],
274
+ [-46.04319359052067, 49.81687541607755],
275
+ [-57.24573007399778, 67.81957009723368],
276
+ [-74.74198803509906, 76.55978940288878],
277
+ [-73.60375960527375, 78.39636019182609],
278
+ [-67.92218140574312, 80.61698801540712],
279
+ [-59.076220860081435, 82.41962573871615],
280
+ [-68.9778162806643, 85.05112877980659],
281
+ [-169.10721706859002, 69.87119013352208],
282
+ [-168.82669211383998, 64.59846733544799],
283
+ [-172.31141325730604, 63.991833108168834],
284
+ [-192.1254235906623, 52.646873605362146],
285
+ [-166.3003429543922, 12.967564352770154],
286
+ [-79.6692367415715, 4.562414945897046],
287
+ [-79.49790751939359, 8.895517276865164],
288
+ ],
289
+ ],
290
+ ]);
291
+ const japanConventionGeometry = turf.polygon([
292
+ [
293
+ [122.40443764161375, 24.25555191895947],
294
+ [123.22422482046358, 22.664415921202675],
295
+ [131.6668409404955, 27.1734104531445],
296
+ [141.6724497786463, 33.41882632781292],
297
+ [152.21247459573226, 45.19087135255526],
298
+ [154.7040665173107, 48.05238412051253],
299
+ [149.47388354609916, 49.86405083649407],
300
+ [144.62198341555745, 55.122855332829886],
301
+ [141.85000003174838, 54.453056889632535],
302
+ [141.56865023975553, 53.237305271866575],
303
+ [141.5658284519161, 52.12730212591498],
304
+ [140.86177532698593, 47.83608043534858],
305
+ [129.38176008175282, 34.88162789041118],
306
+ [122.40443764161375, 24.25555191895947],
307
+ ],
308
+ ]);
309
+ /**
310
+ * Determines the run difficulty convention for a given geographic location.
311
+ * Based on the center point of the geometry, returns the appropriate regional
312
+ * convention for ski run difficulty ratings.
313
+ *
314
+ * @param geojson - GeoJSON geometry to determine the center location from
315
+ * @returns The appropriate run difficulty convention for the location
316
+ * @throws Error if the center of geometry cannot be determined
317
+ */
318
+ function getRunDifficultyConvention(geojson) {
319
+ const point = (0, center_1.default)(geojson).geometry;
320
+ if (!point) {
321
+ throw "Cannot determine center of geometry";
322
+ }
323
+ if ((0, boolean_point_in_polygon_1.default)(point, japanConventionGeometry)) {
324
+ return RunDifficultyConvention.JAPAN;
325
+ }
326
+ else if ((0, boolean_point_in_polygon_1.default)(point, northAmericanConventionGeometry)) {
327
+ return RunDifficultyConvention.NORTH_AMERICA;
328
+ }
329
+ else {
330
+ return RunDifficultyConvention.EUROPE;
331
+ }
332
+ }
333
+ //# sourceMappingURL=RunDifficultyConvention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunDifficultyConvention.js","sourceRoot":"","sources":["../src/RunDifficultyConvention.ts"],"names":[],"mappings":";;;AA8TA,gEAeC;;AA7UD,sGAAmE;AACnE,kEAAsC;AACtC,4DAAsC;AAGtC;;;GAGG;AACH,IAAY,uBA4BX;AA5BD,WAAY,uBAAuB;IACjC;;;;;;;OAOG;IACH,4CAAiB,CAAA;IAEjB;;;;;;OAMG;IACH,0CAAe,CAAA;IAEf;;;;;;OAMG;IACH,0DAA+B,CAAA;AACjC,CAAC,EA5BW,uBAAuB,uCAAvB,uBAAuB,QA4BlC;AAED,MAAM,+BAA+B,GAAG,IAAI,CAAC,YAAY,CAAC;IACxD;QACE;YACE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;YACxC,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC;YACzC,CAAC,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YACtC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YACtC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YACtC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YACxC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,iBAAiB,EAAE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"}
package/dist/SkiArea.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { FeatureType } from './FeatureType';
2
2
  import { LiftType } from './Lift';
3
3
  import { Location } from './Location';
4
- import { RunDifficulty, RunDifficultyConvention } from './Run';
4
+ import { RunDifficulty } from './Run';
5
+ import { RunDifficultyConvention } from './RunDifficultyConvention';
5
6
  import { SnowCoverHistory } from './SnowCoverHistory';
6
7
  import { Source } from './Source';
7
8
  import { Status } from './Status';
@@ -1 +1 @@
1
- {"version":3,"file":"SkiArea.js","sourceRoot":"","sources":["../src/SkiArea.ts"],"names":[],"mappings":";;;AAqEA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
1
+ {"version":3,"file":"SkiArea.js","sourceRoot":"","sources":["../src/SkiArea.ts"],"names":[],"mappings":";;;AAsEA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
@@ -0,0 +1,32 @@
1
+ import { RunDifficulty, RunFeature } from "./Run";
2
+ /**
3
+ * Represents a slope grading scale with steepness thresholds for different run types.
4
+ * Used to estimate run difficulty based on slope steepness. Each scale defines
5
+ * threshold points where the difficulty classification changes based on gradient.
6
+ */
7
+ export type SlopeGradingScale = {
8
+ /** Stops must be ordered ascending by steepness */
9
+ stops: {
10
+ maxSteepness: number;
11
+ difficulty: RunDifficulty | null;
12
+ }[];
13
+ };
14
+ /**
15
+ * Gets the appropriate slope grading scale for a run based on its use types.
16
+ * Different run uses (downhill, nordic, etc.) have different steepness thresholds
17
+ * for difficulty classification due to the nature of the activity and equipment used.
18
+ *
19
+ * @param feature - The run feature to get the grading scale for
20
+ * @returns The appropriate slope grading scale with steepness thresholds
21
+ */
22
+ export declare function getSlopeGradingScale(feature: RunFeature): SlopeGradingScale;
23
+ /**
24
+ * Estimates the run difficulty based on steepness and the provided slope grading scale.
25
+ * Uses the absolute value of steepness to handle both uphill and downhill slopes.
26
+ * Finds the first threshold that the steepness falls under.
27
+ *
28
+ * @param steepness - The steepness value (slope gradient as a decimal, e.g., 0.1 = 10%)
29
+ * @param scale - The slope grading scale with steepness thresholds
30
+ * @returns The estimated difficulty based on steepness, or null if no match or below minimum threshold
31
+ */
32
+ export declare function getEstimatedRunDifficulty(steepness: number, scale: SlopeGradingScale): RunDifficulty | null;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSlopeGradingScale = getSlopeGradingScale;
4
+ exports.getEstimatedRunDifficulty = getEstimatedRunDifficulty;
5
+ const Run_1 = require("./Run");
6
+ /**
7
+ * Gets the appropriate slope grading scale for a run based on its use types.
8
+ * Different run uses (downhill, nordic, etc.) have different steepness thresholds
9
+ * for difficulty classification due to the nature of the activity and equipment used.
10
+ *
11
+ * @param feature - The run feature to get the grading scale for
12
+ * @returns The appropriate slope grading scale with steepness thresholds
13
+ */
14
+ function getSlopeGradingScale(feature) {
15
+ if (feature.properties.uses.includes(Run_1.RunUse.Downhill) ||
16
+ feature.properties.uses.includes(Run_1.RunUse.Skitour)) {
17
+ return {
18
+ stops: [
19
+ { maxSteepness: 0.05, difficulty: null }, // No difficulty below 5%
20
+ { maxSteepness: 0.25, difficulty: Run_1.RunDifficulty.EASY },
21
+ { maxSteepness: 0.4, difficulty: Run_1.RunDifficulty.INTERMEDIATE },
22
+ { maxSteepness: 0.8, difficulty: Run_1.RunDifficulty.ADVANCED }, // Advanced up to 80%
23
+ { maxSteepness: 1.2, difficulty: Run_1.RunDifficulty.EXPERT }, // Expert up to 120%
24
+ ],
25
+ };
26
+ }
27
+ else if (feature.properties.uses.includes(Run_1.RunUse.Nordic)) {
28
+ return {
29
+ stops: [
30
+ { maxSteepness: 0.1, difficulty: Run_1.RunDifficulty.EASY },
31
+ { maxSteepness: 0.15, difficulty: Run_1.RunDifficulty.INTERMEDIATE },
32
+ { maxSteepness: 0.3, difficulty: Run_1.RunDifficulty.ADVANCED },
33
+ ],
34
+ };
35
+ }
36
+ else {
37
+ return { stops: [] };
38
+ }
39
+ }
40
+ /**
41
+ * Estimates the run difficulty based on steepness and the provided slope grading scale.
42
+ * Uses the absolute value of steepness to handle both uphill and downhill slopes.
43
+ * Finds the first threshold that the steepness falls under.
44
+ *
45
+ * @param steepness - The steepness value (slope gradient as a decimal, e.g., 0.1 = 10%)
46
+ * @param scale - The slope grading scale with steepness thresholds
47
+ * @returns The estimated difficulty based on steepness, or null if no match or below minimum threshold
48
+ */
49
+ function getEstimatedRunDifficulty(steepness, scale) {
50
+ const absoluteSteepness = Math.abs(steepness);
51
+ return (scale.stops.find((stop) => stop.maxSteepness > absoluteSteepness)
52
+ ?.difficulty || null);
53
+ }
54
+ //# sourceMappingURL=SlopeGradingScale.js.map