sxandie commited on
Commit
65c9b46
·
1 Parent(s): 4a8eec7

Fix elevation, POIs, and alerts by bundling pre-compiled track cache and adding Gradio allowed_paths

Browse files
Routes/cache/track_5-14724236830.gpx.cache.json ADDED
@@ -0,0 +1,1599 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "file_name": "track_5-14724236830.gpx",
3
+ "total_distance_km": 3.49,
4
+ "elevation_gain_m": 380.1,
5
+ "elevation_loss_m": 378.4,
6
+ "min_elevation_m": 569.0,
7
+ "max_elevation_m": 897.2,
8
+ "estimated_days": 1.0,
9
+ "naismith_hours": 1.3,
10
+ "points": [
11
+ {
12
+ "lat": 46.0734974,
13
+ "lon": 11.1717214,
14
+ "ele": 624.3333333333334,
15
+ "cum_dist": 0.0
16
+ },
17
+ {
18
+ "lat": 46.0737836,
19
+ "lon": 11.1727025,
20
+ "ele": 626.0,
21
+ "cum_dist": 82.10044327864533
22
+ },
23
+ {
24
+ "lat": 46.0740203,
25
+ "lon": 11.1731432,
26
+ "ele": 629.6,
27
+ "cum_dist": 125.09360808777896
28
+ },
29
+ {
30
+ "lat": 46.0740168,
31
+ "lon": 11.173328,
32
+ "ele": 636.2,
33
+ "cum_dist": 139.3542233644628
34
+ },
35
+ {
36
+ "lat": 46.0737622,
37
+ "lon": 11.173827,
38
+ "ele": 641.8,
39
+ "cum_dist": 187.13645075858514
40
+ },
41
+ {
42
+ "lat": 46.0734375,
43
+ "lon": 11.1738863,
44
+ "ele": 647.4,
45
+ "cum_dist": 223.53006934464912
46
+ },
47
+ {
48
+ "lat": 46.0731624,
49
+ "lon": 11.1743486,
50
+ "ele": 652.8,
51
+ "cum_dist": 270.51410794320856
52
+ },
53
+ {
54
+ "lat": 46.0730316,
55
+ "lon": 11.1748916,
56
+ "ele": 655.6,
57
+ "cum_dist": 314.8545655904556
58
+ },
59
+ {
60
+ "lat": 46.0728944,
61
+ "lon": 11.175002,
62
+ "ele": 658.4,
63
+ "cum_dist": 332.32658619660646
64
+ },
65
+ {
66
+ "lat": 46.0728165,
67
+ "lon": 11.1750598,
68
+ "ele": 661.0,
69
+ "cum_dist": 342.06886600637546
70
+ },
71
+ {
72
+ "lat": 46.0725141,
73
+ "lon": 11.1752516,
74
+ "ele": 663.6,
75
+ "cum_dist": 378.8054261292464
76
+ },
77
+ {
78
+ "lat": 46.0724562,
79
+ "lon": 11.1752923,
80
+ "ele": 666.4,
81
+ "cum_dist": 385.9683607877623
82
+ },
83
+ {
84
+ "lat": 46.072404,
85
+ "lon": 11.1755511,
86
+ "ele": 669.2,
87
+ "cum_dist": 406.759197582334
88
+ },
89
+ {
90
+ "lat": 46.0723352,
91
+ "lon": 11.1757355,
92
+ "ele": 677.0,
93
+ "cum_dist": 422.910753027447
94
+ },
95
+ {
96
+ "lat": 46.072069,
97
+ "lon": 11.1762407,
98
+ "ele": 682.0,
99
+ "cum_dist": 471.84926793842413
100
+ },
101
+ {
102
+ "lat": 46.0717648,
103
+ "lon": 11.1767315,
104
+ "ele": 687.0,
105
+ "cum_dist": 522.6197592643105
106
+ },
107
+ {
108
+ "lat": 46.0719912,
109
+ "lon": 11.1768785,
110
+ "ele": 704.8,
111
+ "cum_dist": 550.2304464177064
112
+ },
113
+ {
114
+ "lat": 46.0720172,
115
+ "lon": 11.1772164,
116
+ "ele": 730.6,
117
+ "cum_dist": 576.4565336406259
118
+ },
119
+ {
120
+ "lat": 46.0720284,
121
+ "lon": 11.1788472,
122
+ "ele": 751.4,
123
+ "cum_dist": 702.2656743525126
124
+ },
125
+ {
126
+ "lat": 46.0720172,
127
+ "lon": 11.1800435,
128
+ "ele": 772.2,
129
+ "cum_dist": 794.5589072362544
130
+ },
131
+ {
132
+ "lat": 46.0721118,
133
+ "lon": 11.1805194,
134
+ "ele": 790.4,
135
+ "cum_dist": 832.7479883539206
136
+ },
137
+ {
138
+ "lat": 46.0722225,
139
+ "lon": 11.1802648,
140
+ "ele": 795.8,
141
+ "cum_dist": 855.926827449633
142
+ },
143
+ {
144
+ "lat": 46.0722136,
145
+ "lon": 11.1799061,
146
+ "ele": 795.8,
147
+ "cum_dist": 883.6152129702618
148
+ },
149
+ {
150
+ "lat": 46.0722908,
151
+ "lon": 11.1798927,
152
+ "ele": 793.2,
153
+ "cum_dist": 892.2614750966826
154
+ },
155
+ {
156
+ "lat": 46.0723185,
157
+ "lon": 11.1801444,
158
+ "ele": 803.8,
159
+ "cum_dist": 911.9207717357508
160
+ },
161
+ {
162
+ "lat": 46.0723926,
163
+ "lon": 11.1799338,
164
+ "ele": 821.2,
165
+ "cum_dist": 930.136754035533
166
+ },
167
+ {
168
+ "lat": 46.0726239,
169
+ "lon": 11.17992,
170
+ "ele": 840.4,
171
+ "cum_dist": 955.8781624527184
172
+ },
173
+ {
174
+ "lat": 46.0726283,
175
+ "lon": 11.1807755,
176
+ "ele": 855.2,
177
+ "cum_dist": 1021.8741322444209
178
+ },
179
+ {
180
+ "lat": 46.0727848,
181
+ "lon": 11.1808579,
182
+ "ele": 872.6,
183
+ "cum_dist": 1040.400702035644
184
+ },
185
+ {
186
+ "lat": 46.0728563,
187
+ "lon": 11.1806364,
188
+ "ele": 878.6,
189
+ "cum_dist": 1059.2464989261225
190
+ },
191
+ {
192
+ "lat": 46.0729224,
193
+ "lon": 11.1806719,
194
+ "ele": 883.6,
195
+ "cum_dist": 1067.0900709564446
196
+ },
197
+ {
198
+ "lat": 46.0730825,
199
+ "lon": 11.1810204,
200
+ "ele": 886.8,
201
+ "cum_dist": 1099.333566369505
202
+ },
203
+ {
204
+ "lat": 46.0734128,
205
+ "lon": 11.1811378,
206
+ "ele": 891.8,
207
+ "cum_dist": 1137.1613148856463
208
+ },
209
+ {
210
+ "lat": 46.0738276,
211
+ "lon": 11.1810573,
212
+ "ele": 895.4,
213
+ "cum_dist": 1183.7011096133072
214
+ },
215
+ {
216
+ "lat": 46.0741403,
217
+ "lon": 11.1811643,
218
+ "ele": 897.2,
219
+ "cum_dist": 1219.4379954921951
220
+ },
221
+ {
222
+ "lat": 46.0743251,
223
+ "lon": 11.1812466,
224
+ "ele": 895.8,
225
+ "cum_dist": 1240.945153393428
226
+ },
227
+ {
228
+ "lat": 46.0745456,
229
+ "lon": 11.1815105,
230
+ "ele": 894.4,
231
+ "cum_dist": 1272.812963952106
232
+ },
233
+ {
234
+ "lat": 46.0745694,
235
+ "lon": 11.1814247,
236
+ "ele": 893.0,
237
+ "cum_dist": 1279.940921300677
238
+ },
239
+ {
240
+ "lat": 46.0746536,
241
+ "lon": 11.1813296,
242
+ "ele": 893.0,
243
+ "cum_dist": 1291.8351717424503
244
+ },
245
+ {
246
+ "lat": 46.0747034,
247
+ "lon": 11.1812759,
248
+ "ele": 893.0,
249
+ "cum_dist": 1298.7505747733328
250
+ },
251
+ {
252
+ "lat": 46.0747419,
253
+ "lon": 11.1812238,
254
+ "ele": 893.0,
255
+ "cum_dist": 1304.6224160866539
256
+ },
257
+ {
258
+ "lat": 46.0747674,
259
+ "lon": 11.1811396,
260
+ "ele": 893.0,
261
+ "cum_dist": 1311.709392852473
262
+ },
263
+ {
264
+ "lat": 46.0748016,
265
+ "lon": 11.1810041,
266
+ "ele": 890.6,
267
+ "cum_dist": 1322.8319065621422
268
+ },
269
+ {
270
+ "lat": 46.0748958,
271
+ "lon": 11.180834,
272
+ "ele": 881.2,
273
+ "cum_dist": 1339.6212286736147
274
+ },
275
+ {
276
+ "lat": 46.0749676,
277
+ "lon": 11.1808063,
278
+ "ele": 871.8,
279
+ "cum_dist": 1347.8860066904472
280
+ },
281
+ {
282
+ "lat": 46.0750275,
283
+ "lon": 11.1808043,
284
+ "ele": 864.4,
285
+ "cum_dist": 1354.5483692572068
286
+ },
287
+ {
288
+ "lat": 46.0750713,
289
+ "lon": 11.1808199,
290
+ "ele": 857.0,
291
+ "cum_dist": 1359.5651645422051
292
+ },
293
+ {
294
+ "lat": 46.0751227,
295
+ "lon": 11.1808581,
296
+ "ele": 852.0,
297
+ "cum_dist": 1365.995467523088
298
+ },
299
+ {
300
+ "lat": 46.0751844,
301
+ "lon": 11.1809787,
302
+ "ele": 854.0,
303
+ "cum_dist": 1377.5545048460215
304
+ },
305
+ {
306
+ "lat": 46.075376,
307
+ "lon": 11.181141,
308
+ "ele": 856.0,
309
+ "cum_dist": 1402.2655526468225
310
+ },
311
+ {
312
+ "lat": 46.0754095,
313
+ "lon": 11.1811423,
314
+ "ele": 856.0,
315
+ "cum_dist": 1405.991932198091
316
+ },
317
+ {
318
+ "lat": 46.0753928,
319
+ "lon": 11.1810619,
320
+ "ele": 856.0,
321
+ "cum_dist": 1412.4657986077107
322
+ },
323
+ {
324
+ "lat": 46.0754012,
325
+ "lon": 11.1808969,
326
+ "ele": 854.0,
327
+ "cum_dist": 1425.227657356245
328
+ },
329
+ {
330
+ "lat": 46.0754328,
331
+ "lon": 11.1808433,
332
+ "ele": 852.0,
333
+ "cum_dist": 1430.653614815462
334
+ },
335
+ {
336
+ "lat": 46.0754784,
337
+ "lon": 11.1808151,
338
+ "ele": 850.0,
339
+ "cum_dist": 1436.1710087641775
340
+ },
341
+ {
342
+ "lat": 46.075496,
343
+ "lon": 11.1807588,
344
+ "ele": 850.0,
345
+ "cum_dist": 1440.934412251259
346
+ },
347
+ {
348
+ "lat": 46.0755334,
349
+ "lon": 11.1807545,
350
+ "ele": 850.0,
351
+ "cum_dist": 1445.1063089782258
352
+ },
353
+ {
354
+ "lat": 46.0756347,
355
+ "lon": 11.180862,
356
+ "ele": 852.0,
357
+ "cum_dist": 1459.0934314450792
358
+ },
359
+ {
360
+ "lat": 46.0756635,
361
+ "lon": 11.1809009,
362
+ "ele": 852.0,
363
+ "cum_dist": 1463.4819604290933
364
+ },
365
+ {
366
+ "lat": 46.0757185,
367
+ "lon": 11.180853,
368
+ "ele": 852.0,
369
+ "cum_dist": 1470.6271659904032
370
+ },
371
+ {
372
+ "lat": 46.0757277,
373
+ "lon": 11.1805978,
374
+ "ele": 850.0,
375
+ "cum_dist": 1490.3390168467977
376
+ },
377
+ {
378
+ "lat": 46.0757454,
379
+ "lon": 11.1805563,
380
+ "ele": 843.8,
381
+ "cum_dist": 1494.0968248480838
382
+ },
383
+ {
384
+ "lat": 46.0757621,
385
+ "lon": 11.1805402,
386
+ "ele": 837.6,
387
+ "cum_dist": 1496.3307897602535
388
+ },
389
+ {
390
+ "lat": 46.0758459,
391
+ "lon": 11.1805174,
392
+ "ele": 833.4,
393
+ "cum_dist": 1505.8134430422278
394
+ },
395
+ {
396
+ "lat": 46.0758589,
397
+ "lon": 11.1804436,
398
+ "ele": 829.2,
399
+ "cum_dist": 1511.6867831985958
400
+ },
401
+ {
402
+ "lat": 46.0758686,
403
+ "lon": 11.1803745,
404
+ "ele": 825.0,
405
+ "cum_dist": 1517.1249515003035
406
+ },
407
+ {
408
+ "lat": 46.0759105,
409
+ "lon": 11.1803893,
410
+ "ele": 825.0,
411
+ "cum_dist": 1521.9218468604986
412
+ },
413
+ {
414
+ "lat": 46.0759901,
415
+ "lon": 11.1806227,
416
+ "ele": 825.0,
417
+ "cum_dist": 1541.9835783121905
418
+ },
419
+ {
420
+ "lat": 46.0760556,
421
+ "lon": 11.1807366,
422
+ "ele": 825.2,
423
+ "cum_dist": 1553.3957068455156
424
+ },
425
+ {
426
+ "lat": 46.0761226,
427
+ "lon": 11.1808131,
428
+ "ele": 825.4,
429
+ "cum_dist": 1562.8996133947662
430
+ },
431
+ {
432
+ "lat": 46.0762064,
433
+ "lon": 11.1810364,
434
+ "ele": 825.6,
435
+ "cum_dist": 1582.4830414612302
436
+ },
437
+ {
438
+ "lat": 46.0763157,
439
+ "lon": 11.1811725,
440
+ "ele": 825.8,
441
+ "cum_dist": 1598.5430041802945
442
+ },
443
+ {
444
+ "lat": 46.0763519,
445
+ "lon": 11.1812443,
446
+ "ele": 826.0,
447
+ "cum_dist": 1605.3896133157007
448
+ },
449
+ {
450
+ "lat": 46.0763864,
451
+ "lon": 11.1813696,
452
+ "ele": 826.0,
453
+ "cum_dist": 1615.7882235012783
454
+ },
455
+ {
456
+ "lat": 46.0764278,
457
+ "lon": 11.18155,
458
+ "ele": 825.2,
459
+ "cum_dist": 1630.4452087443408
460
+ },
461
+ {
462
+ "lat": 46.0764552,
463
+ "lon": 11.1816278,
464
+ "ele": 824.4,
465
+ "cum_dist": 1637.1754779907071
466
+ },
467
+ {
468
+ "lat": 46.0764687,
469
+ "lon": 11.1817311,
470
+ "ele": 823.6,
471
+ "cum_dist": 1645.2837610879765
472
+ },
473
+ {
474
+ "lat": 46.0764668,
475
+ "lon": 11.1818739,
476
+ "ele": 822.8,
477
+ "cum_dist": 1656.3007601339175
478
+ },
479
+ {
480
+ "lat": 46.0764854,
481
+ "lon": 11.1820818,
482
+ "ele": 822.0,
483
+ "cum_dist": 1672.4700820585279
484
+ },
485
+ {
486
+ "lat": 46.0765036,
487
+ "lon": 11.1820791,
488
+ "ele": 822.0,
489
+ "cum_dist": 1674.5045179558147
490
+ },
491
+ {
492
+ "lat": 46.0765227,
493
+ "lon": 11.1820858,
494
+ "ele": 822.0,
495
+ "cum_dist": 1676.6903165783156
496
+ },
497
+ {
498
+ "lat": 46.0765534,
499
+ "lon": 11.1821227,
500
+ "ele": 810.6,
501
+ "cum_dist": 1681.1349400496854
502
+ },
503
+ {
504
+ "lat": 46.076571,
505
+ "lon": 11.1821428,
506
+ "ele": 799.2,
507
+ "cum_dist": 1683.6316948440995
508
+ },
509
+ {
510
+ "lat": 46.0766593,
511
+ "lon": 11.1821455,
512
+ "ele": 787.8,
513
+ "cum_dist": 1693.452415436962
514
+ },
515
+ {
516
+ "lat": 46.0767188,
517
+ "lon": 11.1821541,
518
+ "ele": 776.4,
519
+ "cum_dist": 1700.10168655656
520
+ },
521
+ {
522
+ "lat": 46.0767724,
523
+ "lon": 11.182137,
524
+ "ele": 765.0,
525
+ "cum_dist": 1706.2059448183463
526
+ },
527
+ {
528
+ "lat": 46.076832,
529
+ "lon": 11.182094,
530
+ "ele": 765.0,
531
+ "cum_dist": 1713.6168331285332
532
+ },
533
+ {
534
+ "lat": 46.0768736,
535
+ "lon": 11.182094,
536
+ "ele": 765.0,
537
+ "cum_dist": 1718.2425420764873
538
+ },
539
+ {
540
+ "lat": 46.076926,
541
+ "lon": 11.1820234,
542
+ "ele": 765.0,
543
+ "cum_dist": 1726.2178456099234
544
+ },
545
+ {
546
+ "lat": 46.0770264,
547
+ "lon": 11.181951,
548
+ "ele": 765.0,
549
+ "cum_dist": 1738.7007006925924
550
+ },
551
+ {
552
+ "lat": 46.0770761,
553
+ "lon": 11.1818795,
554
+ "ele": 765.0,
555
+ "cum_dist": 1746.5082452408913
556
+ },
557
+ {
558
+ "lat": 46.0771146,
559
+ "lon": 11.1818551,
560
+ "ele": 765.0,
561
+ "cum_dist": 1751.1847032451014
562
+ },
563
+ {
564
+ "lat": 46.0771341,
565
+ "lon": 11.181782,
566
+ "ele": 765.0,
567
+ "cum_dist": 1757.2257939370595
568
+ },
569
+ {
570
+ "lat": 46.0772011,
571
+ "lon": 11.181726,
572
+ "ele": 765.0,
573
+ "cum_dist": 1765.8375209903338
574
+ },
575
+ {
576
+ "lat": 46.0772602,
577
+ "lon": 11.1816238,
578
+ "ele": 765.0,
579
+ "cum_dist": 1776.1005781121669
580
+ },
581
+ {
582
+ "lat": 46.0772797,
583
+ "lon": 11.1815286,
584
+ "ele": 765.0,
585
+ "cum_dist": 1783.7572250909243
586
+ },
587
+ {
588
+ "lat": 46.0773192,
589
+ "lon": 11.1814008,
590
+ "ele": 765.0,
591
+ "cum_dist": 1794.5492328810037
592
+ },
593
+ {
594
+ "lat": 46.0773448,
595
+ "lon": 11.1813569,
596
+ "ele": 765.0,
597
+ "cum_dist": 1798.9729693215183
598
+ },
599
+ {
600
+ "lat": 46.0773667,
601
+ "lon": 11.1813566,
602
+ "ele": 765.0,
603
+ "cum_dist": 1801.408248158689
604
+ },
605
+ {
606
+ "lat": 46.0774069,
607
+ "lon": 11.1814213,
608
+ "ele": 765.0,
609
+ "cum_dist": 1808.108043344786
610
+ },
611
+ {
612
+ "lat": 46.0774299,
613
+ "lon": 11.1815192,
614
+ "ele": 748.6,
615
+ "cum_dist": 1816.0808184199652
616
+ },
617
+ {
618
+ "lat": 46.0774686,
619
+ "lon": 11.1816053,
620
+ "ele": 732.2,
621
+ "cum_dist": 1823.9943686075176
622
+ },
623
+ {
624
+ "lat": 46.0775411,
625
+ "lon": 11.1816791,
626
+ "ele": 715.8,
627
+ "cum_dist": 1833.8632352361699
628
+ },
629
+ {
630
+ "lat": 46.0775388,
631
+ "lon": 11.181726,
632
+ "ele": 699.4,
633
+ "cum_dist": 1837.4898565737967
634
+ },
635
+ {
636
+ "lat": 46.0775304,
637
+ "lon": 11.1817693,
638
+ "ele": 683.0,
639
+ "cum_dist": 1840.957914113738
640
+ },
641
+ {
642
+ "lat": 46.0775539,
643
+ "lon": 11.1818146,
644
+ "ele": 683.0,
645
+ "cum_dist": 1845.3211088751698
646
+ },
647
+ {
648
+ "lat": 46.0775432,
649
+ "lon": 11.1819547,
650
+ "ele": 683.0,
651
+ "cum_dist": 1856.1929039276636
652
+ },
653
+ {
654
+ "lat": 46.0775551,
655
+ "lon": 11.1820271,
656
+ "ele": 683.0,
657
+ "cum_dist": 1861.9320409020754
658
+ },
659
+ {
660
+ "lat": 46.0775541,
661
+ "lon": 11.1820861,
662
+ "ele": 683.0,
663
+ "cum_dist": 1866.4843138059712
664
+ },
665
+ {
666
+ "lat": 46.0775679,
667
+ "lon": 11.1820969,
668
+ "ele": 683.0,
669
+ "cum_dist": 1868.2303463487594
670
+ },
671
+ {
672
+ "lat": 46.0775997,
673
+ "lon": 11.1820389,
674
+ "ele": 683.0,
675
+ "cum_dist": 1873.9327999883105
676
+ },
677
+ {
678
+ "lat": 46.0776139,
679
+ "lon": 11.1820727,
680
+ "ele": 683.0,
681
+ "cum_dist": 1876.9807953133393
682
+ },
683
+ {
684
+ "lat": 46.0776579,
685
+ "lon": 11.1820741,
686
+ "ele": 683.0,
687
+ "cum_dist": 1881.874563677321
688
+ },
689
+ {
690
+ "lat": 46.0776969,
691
+ "lon": 11.1820305,
692
+ "ele": 683.0,
693
+ "cum_dist": 1887.3623833740314
694
+ },
695
+ {
696
+ "lat": 46.0777239,
697
+ "lon": 11.1819842,
698
+ "ele": 683.0,
699
+ "cum_dist": 1892.0279780274006
700
+ },
701
+ {
702
+ "lat": 46.0778093,
703
+ "lon": 11.18194,
704
+ "ele": 683.0,
705
+ "cum_dist": 1902.1174943930364
706
+ },
707
+ {
708
+ "lat": 46.0778486,
709
+ "lon": 11.1818819,
710
+ "ele": 683.0,
711
+ "cum_dist": 1908.3768988338868
712
+ },
713
+ {
714
+ "lat": 46.0778639,
715
+ "lon": 11.1818494,
716
+ "ele": 683.0,
717
+ "cum_dist": 1911.4065256982913
718
+ },
719
+ {
720
+ "lat": 46.0778981,
721
+ "lon": 11.181775,
722
+ "ele": 681.0,
723
+ "cum_dist": 1918.2909287849482
724
+ },
725
+ {
726
+ "lat": 46.0779265,
727
+ "lon": 11.181716,
728
+ "ele": 679.0,
729
+ "cum_dist": 1923.8301629397938
730
+ },
731
+ {
732
+ "lat": 46.077946,
733
+ "lon": 11.1816342,
734
+ "ele": 677.0,
735
+ "cum_dist": 1930.5018713383843
736
+ },
737
+ {
738
+ "lat": 46.0779177,
739
+ "lon": 11.1815296,
740
+ "ele": 675.0,
741
+ "cum_dist": 1939.162005705738
742
+ },
743
+ {
744
+ "lat": 46.0778335,
745
+ "lon": 11.1814002,
746
+ "ele": 673.0,
747
+ "cum_dist": 1952.8470664237589
748
+ },
749
+ {
750
+ "lat": 46.0778267,
751
+ "lon": 11.1813629,
752
+ "ele": 673.0,
753
+ "cum_dist": 1955.8218552712733
754
+ },
755
+ {
756
+ "lat": 46.0778358,
757
+ "lon": 11.1813422,
758
+ "ele": 673.0,
759
+ "cum_dist": 1957.7121568399903
760
+ },
761
+ {
762
+ "lat": 46.0778809,
763
+ "lon": 11.1813593,
764
+ "ele": 673.0,
765
+ "cum_dist": 1962.8976037293212
766
+ },
767
+ {
768
+ "lat": 46.0778616,
769
+ "lon": 11.181319,
770
+ "ele": 673.0,
771
+ "cum_dist": 1966.6749416617042
772
+ },
773
+ {
774
+ "lat": 46.0778525,
775
+ "lon": 11.1812818,
776
+ "ele": 673.0,
777
+ "cum_dist": 1969.71750618468
778
+ },
779
+ {
780
+ "lat": 46.0778458,
781
+ "lon": 11.1812563,
782
+ "ele": 673.0,
783
+ "cum_dist": 1971.820782169024
784
+ },
785
+ {
786
+ "lat": 46.0778409,
787
+ "lon": 11.1812158,
788
+ "ele": 673.0,
789
+ "cum_dist": 1974.9918580195297
790
+ },
791
+ {
792
+ "lat": 46.077839,
793
+ "lon": 11.1811453,
794
+ "ele": 673.0,
795
+ "cum_dist": 1980.4338897629912
796
+ },
797
+ {
798
+ "lat": 46.0778256,
799
+ "lon": 11.181094,
800
+ "ele": 673.0,
801
+ "cum_dist": 1984.66209063955
802
+ },
803
+ {
804
+ "lat": 46.0778302,
805
+ "lon": 11.1810444,
806
+ "ele": 673.0,
807
+ "cum_dist": 1988.5219663182365
808
+ },
809
+ {
810
+ "lat": 46.0778497,
811
+ "lon": 11.1810324,
812
+ "ele": 673.0,
813
+ "cum_dist": 1990.8795655419124
814
+ },
815
+ {
816
+ "lat": 46.0778711,
817
+ "lon": 11.1810431,
818
+ "ele": 673.0,
819
+ "cum_dist": 1993.3982022996413
820
+ },
821
+ {
822
+ "lat": 46.0779009,
823
+ "lon": 11.1810753,
824
+ "ele": 673.0,
825
+ "cum_dist": 1997.5393122923106
826
+ },
827
+ {
828
+ "lat": 46.077927,
829
+ "lon": 11.1811544,
830
+ "ele": 673.0,
831
+ "cum_dist": 2004.295657757188
832
+ },
833
+ {
834
+ "lat": 46.0780051,
835
+ "lon": 11.1811987,
836
+ "ele": 673.0,
837
+ "cum_dist": 2013.6280468444118
838
+ },
839
+ {
840
+ "lat": 46.0780256,
841
+ "lon": 11.1812268,
842
+ "ele": 673.0,
843
+ "cum_dist": 2016.7735114666127
844
+ },
845
+ {
846
+ "lat": 46.0780488,
847
+ "lon": 11.1813167,
848
+ "ele": 673.0,
849
+ "cum_dist": 2024.172124302912
850
+ },
851
+ {
852
+ "lat": 46.0780926,
853
+ "lon": 11.1813314,
854
+ "ele": 675.0,
855
+ "cum_dist": 2029.1727074418168
856
+ },
857
+ {
858
+ "lat": 46.0781961,
859
+ "lon": 11.1815243,
860
+ "ele": 677.0,
861
+ "cum_dist": 2047.9832037637495
862
+ },
863
+ {
864
+ "lat": 46.0782544,
865
+ "lon": 11.1816743,
866
+ "ele": 666.0,
867
+ "cum_dist": 2061.2455340703264
868
+ },
869
+ {
870
+ "lat": 46.0782983,
871
+ "lon": 11.1817455,
872
+ "ele": 655.0,
873
+ "cum_dist": 2068.5932796262287
874
+ },
875
+ {
876
+ "lat": 46.0783595,
877
+ "lon": 11.1818089,
878
+ "ele": 644.0,
879
+ "cum_dist": 2076.9732676099325
880
+ },
881
+ {
882
+ "lat": 46.0783972,
883
+ "lon": 11.1818846,
884
+ "ele": 631.0,
885
+ "cum_dist": 2084.16123094878
886
+ },
887
+ {
888
+ "lat": 46.078414,
889
+ "lon": 11.1819524,
890
+ "ele": 618.0,
891
+ "cum_dist": 2089.714479654228
892
+ },
893
+ {
894
+ "lat": 46.0785307,
895
+ "lon": 11.1819718,
896
+ "ele": 618.0,
897
+ "cum_dist": 2102.776919967097
898
+ },
899
+ {
900
+ "lat": 46.0785335,
901
+ "lon": 11.1819282,
902
+ "ele": 618.0,
903
+ "cum_dist": 2106.1542906520385
904
+ },
905
+ {
906
+ "lat": 46.0785065,
907
+ "lon": 11.181827,
908
+ "ele": 612.8,
909
+ "cum_dist": 2114.5175858852103
910
+ },
911
+ {
912
+ "lat": 46.0784665,
913
+ "lon": 11.1816969,
914
+ "ele": 607.6,
915
+ "cum_dist": 2125.494096400949
916
+ },
917
+ {
918
+ "lat": 46.0784665,
919
+ "lon": 11.1816385,
920
+ "ele": 607.6,
921
+ "cum_dist": 2129.9986561335872
922
+ },
923
+ {
924
+ "lat": 46.0784833,
925
+ "lon": 11.1816533,
926
+ "ele": 607.6,
927
+ "cum_dist": 2132.187920172912
928
+ },
929
+ {
930
+ "lat": 46.0785372,
931
+ "lon": 11.1817002,
932
+ "ele": 602.4,
933
+ "cum_dist": 2139.188451359481
934
+ },
935
+ {
936
+ "lat": 46.0785489,
937
+ "lon": 11.1816848,
938
+ "ele": 602.4,
939
+ "cum_dist": 2140.9501339029616
940
+ },
941
+ {
942
+ "lat": 46.0785493,
943
+ "lon": 11.1816446,
944
+ "ele": 602.4,
945
+ "cum_dist": 2144.051189707751
946
+ },
947
+ {
948
+ "lat": 46.0785368,
949
+ "lon": 11.1815608,
950
+ "ele": 597.2,
951
+ "cum_dist": 2150.662670166487
952
+ },
953
+ {
954
+ "lat": 46.0785516,
955
+ "lon": 11.1814865,
956
+ "ele": 592.0,
957
+ "cum_dist": 2156.6252393258587
958
+ },
959
+ {
960
+ "lat": 46.0785824,
961
+ "lon": 11.1813216,
962
+ "ele": 592.0,
963
+ "cum_dist": 2169.7974452920535
964
+ },
965
+ {
966
+ "lat": 46.0785586,
967
+ "lon": 11.1812014,
968
+ "ele": 592.0,
969
+ "cum_dist": 2179.439107036367
970
+ },
971
+ {
972
+ "lat": 46.0785149,
973
+ "lon": 11.1811034,
974
+ "ele": 592.0,
975
+ "cum_dist": 2188.4252442772304
976
+ },
977
+ {
978
+ "lat": 46.0785182,
979
+ "lon": 11.1810022,
980
+ "ele": 592.0,
981
+ "cum_dist": 2196.2397038808067
982
+ },
983
+ {
984
+ "lat": 46.0785517,
985
+ "lon": 11.1809231,
986
+ "ele": 591.0,
987
+ "cum_dist": 2203.3881668061013
988
+ },
989
+ {
990
+ "lat": 46.0785521,
991
+ "lon": 11.1808567,
992
+ "ele": 590.0,
993
+ "cum_dist": 2208.5099747168115
994
+ },
995
+ {
996
+ "lat": 46.0785265,
997
+ "lon": 11.1807474,
998
+ "ele": 589.0,
999
+ "cum_dist": 2217.4081931152746
1000
+ },
1001
+ {
1002
+ "lat": 46.0785424,
1003
+ "lon": 11.180689,
1004
+ "ele": 588.0,
1005
+ "cum_dist": 2222.2472870442966
1006
+ },
1007
+ {
1008
+ "lat": 46.0785879,
1009
+ "lon": 11.1806582,
1010
+ "ele": 587.0,
1011
+ "cum_dist": 2227.836661858264
1012
+ },
1013
+ {
1014
+ "lat": 46.0786135,
1015
+ "lon": 11.1805616,
1016
+ "ele": 587.0,
1017
+ "cum_dist": 2235.8129225436087
1018
+ },
1019
+ {
1020
+ "lat": 46.0786238,
1021
+ "lon": 11.1804657,
1022
+ "ele": 587.0,
1023
+ "cum_dist": 2243.298085528094
1024
+ },
1025
+ {
1026
+ "lat": 46.0785847,
1027
+ "lon": 11.1803544,
1028
+ "ele": 587.0,
1029
+ "cum_dist": 2252.9211115002395
1030
+ },
1031
+ {
1032
+ "lat": 46.0785461,
1033
+ "lon": 11.1802988,
1034
+ "ele": 587.0,
1035
+ "cum_dist": 2258.988586125797
1036
+ },
1037
+ {
1038
+ "lat": 46.0785382,
1039
+ "lon": 11.1801915,
1040
+ "ele": 588.2,
1041
+ "cum_dist": 2267.311419600114
1042
+ },
1043
+ {
1044
+ "lat": 46.0785558,
1045
+ "lon": 11.1800064,
1046
+ "ele": 589.4,
1047
+ "cum_dist": 2281.7221973873584
1048
+ },
1049
+ {
1050
+ "lat": 46.0785679,
1051
+ "lon": 11.1798093,
1052
+ "ele": 590.6,
1053
+ "cum_dist": 2296.984480866558
1054
+ },
1055
+ {
1056
+ "lat": 46.078553,
1057
+ "lon": 11.1796369,
1058
+ "ele": 591.8,
1059
+ "cum_dist": 2310.384981390401
1060
+ },
1061
+ {
1062
+ "lat": 46.078567,
1063
+ "lon": 11.1795799,
1064
+ "ele": 593.0,
1065
+ "cum_dist": 2315.0490139790813
1066
+ },
1067
+ {
1068
+ "lat": 46.0785819,
1069
+ "lon": 11.1793613,
1070
+ "ele": 593.0,
1071
+ "cum_dist": 2331.9914311620732
1072
+ },
1073
+ {
1074
+ "lat": 46.078587,
1075
+ "lon": 11.1793003,
1076
+ "ele": 593.8,
1077
+ "cum_dist": 2336.7305783477123
1078
+ },
1079
+ {
1080
+ "lat": 46.0785847,
1081
+ "lon": 11.179189,
1082
+ "ele": 594.6,
1083
+ "cum_dist": 2345.3192570490487
1084
+ },
1085
+ {
1086
+ "lat": 46.07862,
1087
+ "lon": 11.1790321,
1088
+ "ele": 595.4,
1089
+ "cum_dist": 2358.042004450566
1090
+ },
1091
+ {
1092
+ "lat": 46.0786242,
1093
+ "lon": 11.1787511,
1094
+ "ele": 596.2,
1095
+ "cum_dist": 2379.7213112748495
1096
+ },
1097
+ {
1098
+ "lat": 46.0786196,
1099
+ "lon": 11.1786492,
1100
+ "ele": 597.0,
1101
+ "cum_dist": 2387.5977546671015
1102
+ },
1103
+ {
1104
+ "lat": 46.0786447,
1105
+ "lon": 11.1785379,
1106
+ "ele": 598.2,
1107
+ "cum_dist": 2396.6249087568963
1108
+ },
1109
+ {
1110
+ "lat": 46.07868,
1111
+ "lon": 11.1783374,
1112
+ "ele": 599.4,
1113
+ "cum_dist": 2412.5803444847993
1114
+ },
1115
+ {
1116
+ "lat": 46.0786963,
1117
+ "lon": 11.1781503,
1118
+ "ele": 600.6,
1119
+ "cum_dist": 2427.125217658657
1120
+ },
1121
+ {
1122
+ "lat": 46.0787963,
1123
+ "lon": 11.1779109,
1124
+ "ele": 601.8,
1125
+ "cum_dist": 2448.680226276747
1126
+ },
1127
+ {
1128
+ "lat": 46.0788196,
1129
+ "lon": 11.1778526,
1130
+ "ele": 603.0,
1131
+ "cum_dist": 2453.8700084372517
1132
+ },
1133
+ {
1134
+ "lat": 46.0788233,
1135
+ "lon": 11.1777218,
1136
+ "ele": 603.0,
1137
+ "cum_dist": 2463.9673085100694
1138
+ },
1139
+ {
1140
+ "lat": 46.0790385,
1141
+ "lon": 11.1777575,
1142
+ "ele": 603.0,
1143
+ "cum_dist": 2488.054370583409
1144
+ },
1145
+ {
1146
+ "lat": 46.0788233,
1147
+ "lon": 11.1777218,
1148
+ "ele": 603.0,
1149
+ "cum_dist": 2512.1414326567483
1150
+ },
1151
+ {
1152
+ "lat": 46.0788061,
1153
+ "lon": 11.1776608,
1154
+ "ele": 600.2,
1155
+ "cum_dist": 2517.220368915615
1156
+ },
1157
+ {
1158
+ "lat": 46.0787759,
1159
+ "lon": 11.1776025,
1160
+ "ele": 597.4,
1161
+ "cum_dist": 2522.8326890210933
1162
+ },
1163
+ {
1164
+ "lat": 46.0787563,
1165
+ "lon": 11.1774925,
1166
+ "ele": 594.6,
1167
+ "cum_dist": 2531.5927004250757
1168
+ },
1169
+ {
1170
+ "lat": 46.0787438,
1171
+ "lon": 11.1773356,
1172
+ "ele": 591.8,
1173
+ "cum_dist": 2543.774342181491
1174
+ },
1175
+ {
1176
+ "lat": 46.0787307,
1177
+ "lon": 11.1772605,
1178
+ "ele": 589.0,
1179
+ "cum_dist": 2549.747334457092
1180
+ },
1181
+ {
1182
+ "lat": 46.0787326,
1183
+ "lon": 11.1771244,
1184
+ "ele": 589.0,
1185
+ "cum_dist": 2560.2471936368556
1186
+ },
1187
+ {
1188
+ "lat": 46.0787084,
1189
+ "lon": 11.177007,
1190
+ "ele": 589.0,
1191
+ "cum_dist": 2569.6939144987996
1192
+ },
1193
+ {
1194
+ "lat": 46.0787052,
1195
+ "lon": 11.1769152,
1196
+ "ele": 589.0,
1197
+ "cum_dist": 2576.78361614164
1198
+ },
1199
+ {
1200
+ "lat": 46.0787089,
1201
+ "lon": 11.1768146,
1202
+ "ele": 586.6,
1203
+ "cum_dist": 2584.554048658165
1204
+ },
1205
+ {
1206
+ "lat": 46.0787228,
1207
+ "lon": 11.1767039,
1208
+ "ele": 584.2,
1209
+ "cum_dist": 2593.2313807624464
1210
+ },
1211
+ {
1212
+ "lat": 46.0787275,
1213
+ "lon": 11.1765967,
1214
+ "ele": 581.8,
1215
+ "cum_dist": 2601.516485378284
1216
+ },
1217
+ {
1218
+ "lat": 46.07872,
1219
+ "lon": 11.1764585,
1220
+ "ele": 579.4,
1221
+ "cum_dist": 2612.2087713222527
1222
+ },
1223
+ {
1224
+ "lat": 46.0787028,
1225
+ "lon": 11.1763646,
1226
+ "ele": 577.0,
1227
+ "cum_dist": 2619.6997797027143
1228
+ },
1229
+ {
1230
+ "lat": 46.0786931,
1231
+ "lon": 11.1763016,
1232
+ "ele": 577.0,
1233
+ "cum_dist": 2624.6773941882643
1234
+ },
1235
+ {
1236
+ "lat": 46.078601,
1237
+ "lon": 11.1760743,
1238
+ "ele": 577.0,
1239
+ "cum_dist": 2644.981550349237
1240
+ },
1241
+ {
1242
+ "lat": 46.0785712,
1243
+ "lon": 11.1759757,
1244
+ "ele": 577.0,
1245
+ "cum_dist": 2653.2773540389385
1246
+ },
1247
+ {
1248
+ "lat": 46.0785512,
1249
+ "lon": 11.1758805,
1250
+ "ele": 576.2,
1251
+ "cum_dist": 2660.949766599046
1252
+ },
1253
+ {
1254
+ "lat": 46.0785484,
1255
+ "lon": 11.1758215,
1256
+ "ele": 575.4,
1257
+ "cum_dist": 2665.511237132448
1258
+ },
1259
+ {
1260
+ "lat": 46.07854,
1261
+ "lon": 11.1757893,
1262
+ "ele": 574.6,
1263
+ "cum_dist": 2668.164738077995
1264
+ },
1265
+ {
1266
+ "lat": 46.0785056,
1267
+ "lon": 11.1757209,
1268
+ "ele": 577.4,
1269
+ "cum_dist": 2674.6813609826368
1270
+ },
1271
+ {
1272
+ "lat": 46.0784298,
1273
+ "lon": 11.1755888,
1274
+ "ele": 580.2,
1275
+ "cum_dist": 2687.9048909226167
1276
+ },
1277
+ {
1278
+ "lat": 46.078254,
1279
+ "lon": 11.1753266,
1280
+ "ele": 583.8,
1281
+ "cum_dist": 2716.0322558888647
1282
+ },
1283
+ {
1284
+ "lat": 46.0781302,
1285
+ "lon": 11.175167,
1286
+ "ele": 587.4,
1287
+ "cum_dist": 2734.4997542146925
1288
+ },
1289
+ {
1290
+ "lat": 46.0780882,
1291
+ "lon": 11.1751074,
1292
+ "ele": 586.6,
1293
+ "cum_dist": 2741.0529537610046
1294
+ },
1295
+ {
1296
+ "lat": 46.0780474,
1297
+ "lon": 11.1750403,
1298
+ "ele": 582.2,
1299
+ "cum_dist": 2747.935505107603
1300
+ },
1301
+ {
1302
+ "lat": 46.0779777,
1303
+ "lon": 11.1749028,
1304
+ "ele": 577.8,
1305
+ "cum_dist": 2761.071377572853
1306
+ },
1307
+ {
1308
+ "lat": 46.0779811,
1309
+ "lon": 11.1748328,
1310
+ "ele": 573.4,
1311
+ "cum_dist": 2766.4839460910607
1312
+ },
1313
+ {
1314
+ "lat": 46.0779763,
1315
+ "lon": 11.1748002,
1316
+ "ele": 569.0,
1317
+ "cum_dist": 2769.0545209025972
1318
+ },
1319
+ {
1320
+ "lat": 46.077947,
1321
+ "lon": 11.1747473,
1322
+ "ele": 569.0,
1323
+ "cum_dist": 2774.2760175123503
1324
+ },
1325
+ {
1326
+ "lat": 46.0779046,
1327
+ "lon": 11.1746809,
1328
+ "ele": 569.0,
1329
+ "cum_dist": 2781.237310372857
1330
+ },
1331
+ {
1332
+ "lat": 46.0777967,
1333
+ "lon": 11.1744864,
1334
+ "ele": 569.0,
1335
+ "cum_dist": 2800.447352661888
1336
+ },
1337
+ {
1338
+ "lat": 46.0777428,
1339
+ "lon": 11.1744308,
1340
+ "ele": 569.0,
1341
+ "cum_dist": 2807.8171132335215
1342
+ },
1343
+ {
1344
+ "lat": 46.0776577,
1345
+ "lon": 11.1743088,
1346
+ "ele": 569.0,
1347
+ "cum_dist": 2821.162411590556
1348
+ },
1349
+ {
1350
+ "lat": 46.0776162,
1351
+ "lon": 11.1743094,
1352
+ "ele": 571.8,
1353
+ "cum_dist": 2825.7772331173487
1354
+ },
1355
+ {
1356
+ "lat": 46.0775548,
1357
+ "lon": 11.1743148,
1358
+ "ele": 574.6,
1359
+ "cum_dist": 2832.6172954675953
1360
+ },
1361
+ {
1362
+ "lat": 46.0774125,
1363
+ "lon": 11.1743456,
1364
+ "ele": 577.4,
1365
+ "cum_dist": 2848.6176907512004
1366
+ },
1367
+ {
1368
+ "lat": 46.0772981,
1369
+ "lon": 11.1743966,
1370
+ "ele": 580.2,
1371
+ "cum_dist": 2861.9327731457183
1372
+ },
1373
+ {
1374
+ "lat": 46.0769855,
1375
+ "lon": 11.1745763,
1376
+ "ele": 583.0,
1377
+ "cum_dist": 2899.354098294242
1378
+ },
1379
+ {
1380
+ "lat": 46.0768152,
1381
+ "lon": 11.1746366,
1382
+ "ele": 583.4,
1383
+ "cum_dist": 2918.8534560701974
1384
+ },
1385
+ {
1386
+ "lat": 46.0767036,
1387
+ "lon": 11.1746822,
1388
+ "ele": 583.8,
1389
+ "cum_dist": 2931.7516706051024
1390
+ },
1391
+ {
1392
+ "lat": 46.076591,
1393
+ "lon": 11.1747238,
1394
+ "ele": 584.2,
1395
+ "cum_dist": 2944.676868928818
1396
+ },
1397
+ {
1398
+ "lat": 46.0764757,
1399
+ "lon": 11.1747064,
1400
+ "ele": 584.6,
1401
+ "cum_dist": 2957.567705342335
1402
+ },
1403
+ {
1404
+ "lat": 46.0764171,
1405
+ "lon": 11.1747345,
1406
+ "ele": 585.0,
1407
+ "cum_dist": 2964.43477638439
1408
+ },
1409
+ {
1410
+ "lat": 46.0763036,
1411
+ "lon": 11.174752,
1412
+ "ele": 585.0,
1413
+ "cum_dist": 2977.1273853309667
1414
+ },
1415
+ {
1416
+ "lat": 46.076218,
1417
+ "lon": 11.1748029,
1418
+ "ele": 585.0,
1419
+ "cum_dist": 2987.4236452137866
1420
+ },
1421
+ {
1422
+ "lat": 46.0760784,
1423
+ "lon": 11.1748512,
1424
+ "ele": 585.0,
1425
+ "cum_dist": 3003.387301859737
1426
+ },
1427
+ {
1428
+ "lat": 46.0760031,
1429
+ "lon": 11.1748955,
1430
+ "ele": 586.6,
1431
+ "cum_dist": 3012.4307294016294
1432
+ },
1433
+ {
1434
+ "lat": 46.0758477,
1435
+ "lon": 11.174929,
1436
+ "ele": 588.2,
1437
+ "cum_dist": 3029.9025684771996
1438
+ },
1439
+ {
1440
+ "lat": 46.0757668,
1441
+ "lon": 11.1749732,
1442
+ "ele": 589.8,
1443
+ "cum_dist": 3039.522668959729
1444
+ },
1445
+ {
1446
+ "lat": 46.0755068,
1447
+ "lon": 11.1749063,
1448
+ "ele": 596.0,
1449
+ "cum_dist": 3068.8903000315327
1450
+ },
1451
+ {
1452
+ "lat": 46.0751974,
1453
+ "lon": 11.1749093,
1454
+ "ele": 602.2,
1455
+ "cum_dist": 3103.294788605354
1456
+ },
1457
+ {
1458
+ "lat": 46.0748717,
1459
+ "lon": 11.1743811,
1460
+ "ele": 606.8,
1461
+ "cum_dist": 3157.808046765679
1462
+ },
1463
+ {
1464
+ "lat": 46.0746653,
1465
+ "lon": 11.1743811,
1466
+ "ele": 611.4,
1467
+ "cum_dist": 3180.7586796254795
1468
+ },
1469
+ {
1470
+ "lat": 46.0746002,
1471
+ "lon": 11.1743811,
1472
+ "ele": 621.0,
1473
+ "cum_dist": 3187.997469350094
1474
+ },
1475
+ {
1476
+ "lat": 46.0742637,
1477
+ "lon": 11.1743798,
1478
+ "ele": 626.0,
1479
+ "cum_dist": 3225.4146965436094
1480
+ },
1481
+ {
1482
+ "lat": 46.07403,
1483
+ "lon": 11.174376,
1484
+ "ele": 631.6,
1485
+ "cum_dist": 3251.402604105677
1486
+ },
1487
+ {
1488
+ "lat": 46.0739346,
1489
+ "lon": 11.1741839,
1490
+ "ele": 634.6,
1491
+ "cum_dist": 3269.626638034867
1492
+ },
1493
+ {
1494
+ "lat": 46.0737622,
1495
+ "lon": 11.173827,
1496
+ "ele": 637.6,
1497
+ "cum_dist": 3303.174313002768
1498
+ },
1499
+ {
1500
+ "lat": 46.0740168,
1501
+ "lon": 11.173328,
1502
+ "ele": 635.6,
1503
+ "cum_dist": 3350.9565403968904
1504
+ },
1505
+ {
1506
+ "lat": 46.0740203,
1507
+ "lon": 11.1731432,
1508
+ "ele": 629.6,
1509
+ "cum_dist": 3365.2171556735743
1510
+ },
1511
+ {
1512
+ "lat": 46.0737836,
1513
+ "lon": 11.1727025,
1514
+ "ele": 626.0,
1515
+ "cum_dist": 3408.210320482708
1516
+ },
1517
+ {
1518
+ "lat": 46.0734974,
1519
+ "lon": 11.1717214,
1520
+ "ele": 624.3333333333334,
1521
+ "cum_dist": 3490.3107637613534
1522
+ }
1523
+ ],
1524
+ "checkpoints": [
1525
+ {
1526
+ "name": "Start",
1527
+ "lat": 46.0734974,
1528
+ "lon": 11.1717214,
1529
+ "ele": 624.3333333333334,
1530
+ "cum_dist": 0.0
1531
+ },
1532
+ {
1533
+ "name": "Km 1.0",
1534
+ "lat": 46.0726283,
1535
+ "lon": 11.1807755,
1536
+ "ele": 855.2,
1537
+ "cum_dist": 1.02
1538
+ },
1539
+ {
1540
+ "name": "Km 2.0",
1541
+ "lat": 46.0779009,
1542
+ "lon": 11.1810753,
1543
+ "ele": 673.0,
1544
+ "cum_dist": 2.0
1545
+ },
1546
+ {
1547
+ "name": "Km 3.0",
1548
+ "lat": 46.0760784,
1549
+ "lon": 11.1748512,
1550
+ "ele": 585.0,
1551
+ "cum_dist": 3.0
1552
+ },
1553
+ {
1554
+ "name": "End",
1555
+ "lat": 46.0734974,
1556
+ "lon": 11.1717214,
1557
+ "ele": 624.3333333333334,
1558
+ "cum_dist": 3.49
1559
+ }
1560
+ ],
1561
+ "pois": [
1562
+ {
1563
+ "id": 391038723,
1564
+ "lat": 46.0786528,
1565
+ "lon": 11.1822751,
1566
+ "type": "peak",
1567
+ "name": "Celvet",
1568
+ "distance": 27.0,
1569
+ "track_index": 147
1570
+ },
1571
+ {
1572
+ "id": 1305109208,
1573
+ "lat": 46.0718837,
1574
+ "lon": 11.1747494,
1575
+ "type": "drinking_water",
1576
+ "name": "Drinking Water",
1577
+ "distance": 76.2,
1578
+ "track_index": 11
1579
+ },
1580
+ {
1581
+ "id": 1305109310,
1582
+ "lat": 46.0718338,
1583
+ "lon": 11.1749382,
1584
+ "type": "drinking_water",
1585
+ "name": "Drinking Water",
1586
+ "distance": 74.4,
1587
+ "track_index": 11
1588
+ },
1589
+ {
1590
+ "id": 10830436140,
1591
+ "lat": 46.0790531,
1592
+ "lon": 11.1777587,
1593
+ "type": "viewpoint",
1594
+ "name": "Viewpoint",
1595
+ "distance": 1.6,
1596
+ "track_index": 188
1597
+ }
1598
+ ]
1599
+ }
app.py CHANGED
@@ -1457,7 +1457,14 @@ with gr.Blocks(css="assets/custom.css", title="Trailhead — Tactical Trail Comp
1457
  if __name__ == "__main__":
1458
  port = int(os.environ.get("PORT", 7860))
1459
  try:
1460
- demo.launch(server_name="0.0.0.0", server_port=port)
 
 
 
 
1461
  except OSError:
1462
  print(f"[app] Port {port} is busy. Falling back to automatic port selection...")
1463
- demo.launch(server_name="127.0.0.1")
 
 
 
 
1457
  if __name__ == "__main__":
1458
  port = int(os.environ.get("PORT", 7860))
1459
  try:
1460
+ demo.launch(
1461
+ server_name="0.0.0.0",
1462
+ server_port=port,
1463
+ allowed_paths=[os.path.abspath(".")]
1464
+ )
1465
  except OSError:
1466
  print(f"[app] Port {port} is busy. Falling back to automatic port selection...")
1467
+ demo.launch(
1468
+ server_name="127.0.0.1",
1469
+ allowed_paths=[os.path.abspath(".")]
1470
+ )
requirements.txt CHANGED
@@ -7,7 +7,4 @@ gpxpy
7
  folium
8
  plotly
9
  pydantic>=2.0.0,<2.11.0
10
- transformers
11
- torch
12
- soundfile
13
 
 
7
  folium
8
  plotly
9
  pydantic>=2.0.0,<2.11.0
 
 
 
10
 
src/gpx_parser.py CHANGED
@@ -280,8 +280,16 @@ def parse_gpx_file(file_path, cache_dir="./temp", buffer_meters=150.0):
280
 
281
  # Check cache first
282
  file_name = os.path.basename(file_path)
283
- cache_path = os.path.join(cache_dir, f"{file_name}.cache.json")
284
- if os.path.exists(cache_path):
 
 
 
 
 
 
 
 
285
  try:
286
  with open(cache_path, "r", encoding="utf-8") as f:
287
  print(f"[gpx_parser] Loading cached GPX data from {cache_path}")
 
280
 
281
  # Check cache first
282
  file_name = os.path.basename(file_path)
283
+ cache_path_temp = os.path.join(cache_dir, f"{file_name}.cache.json")
284
+ cache_path_routes = os.path.join(os.path.dirname(os.path.abspath(file_path)), "cache", f"{file_name}.cache.json")
285
+
286
+ cache_path = None
287
+ if os.path.exists(cache_path_temp):
288
+ cache_path = cache_path_temp
289
+ elif os.path.exists(cache_path_routes):
290
+ cache_path = cache_path_routes
291
+
292
+ if cache_path:
293
  try:
294
  with open(cache_path, "r", encoding="utf-8") as f:
295
  print(f"[gpx_parser] Loading cached GPX data from {cache_path}")
src/llm.py CHANGED
@@ -103,35 +103,31 @@ def _init_whisper():
103
  print(f"[llm.py] Error loading whisper.cpp ASR model: {e}")
104
  return None
105
 
106
- # --- Transformers ASR fallback ---
107
- _transformers_asr = None
108
-
109
- def _init_transformers_asr():
110
- """Lazy initialization of transformers Whisper pipeline for fallback ASR."""
111
- global _transformers_asr
112
- if _transformers_asr is not None:
113
- return _transformers_asr
114
  try:
115
- from transformers import pipeline
116
- print("[llm.py] Loading transformers Whisper-tiny model for fallback ASR...")
117
- _transformers_asr = pipeline(
118
- "automatic-speech-recognition",
119
- model="openai/whisper-tiny",
120
- device="cpu"
121
- )
122
- print("[llm.py] transformers ASR model loaded successfully!")
123
- return _transformers_asr
124
  except ImportError:
125
- print("[llm.py] transformers or torch not installed. ASR will use mock fallback.")
126
  return None
127
  except Exception as e:
128
- print(f"[llm.py] Error loading transformers ASR model: {e}")
129
  return None
130
 
131
  def transcribe_audio(audio_path, prompt=""):
132
  """
133
  Transcribe audio file to text using whisper.cpp (offline, lightweight).
134
- Falls back to transformers or mock transcription if whisper.cpp is unavailable.
135
  """
136
  if not audio_path or not os.path.exists(audio_path):
137
  print("[llm.py] Audio file not found, using mock ASR.")
@@ -171,7 +167,7 @@ def transcribe_audio(audio_path, prompt=""):
171
  except: pass
172
 
173
  if not transcription:
174
- print("[llm.py] Whisper returned empty transcription, trying transformers fallback.")
175
  else:
176
  print(f"[llm.py] ASR Transcription: \"{transcription}\"")
177
  return transcription
@@ -181,18 +177,29 @@ def transcribe_audio(audio_path, prompt=""):
181
  except: pass
182
  print(f"[llm.py] Error during whisper.cpp transcription: {e}")
183
 
184
- # Fallback to transformers ASR
185
- asr_pipe = _init_transformers_asr()
186
- if asr_pipe is not None:
187
  try:
188
- print(f"[llm.py] Transcribing audio using transformers: {audio_path}")
189
- result = asr_pipe(audio_path)
190
- transcription = result.get("text", "").strip()
 
 
 
 
 
 
 
 
 
 
 
191
  if transcription:
192
- print(f"[llm.py] ASR (transformers) Transcription: \"{transcription}\"")
193
  return transcription
194
  except Exception as e:
195
- print(f"[llm.py] Error during transformers transcription: {e}")
196
 
197
  return _mock_transcribe_audio(prompt)
198
 
 
103
  print(f"[llm.py] Error loading whisper.cpp ASR model: {e}")
104
  return None
105
 
106
+ # --- Hugging Face Inference API ASR fallback ---
107
+ _hf_client = None
108
+
109
+ def _init_hf_client():
110
+ """Lazy initialization of Hugging Face InferenceClient for fallback ASR."""
111
+ global _hf_client
112
+ if _hf_client is not None:
113
+ return _hf_client
114
  try:
115
+ from huggingface_hub import InferenceClient
116
+ # Automatically detects HF_TOKEN from Hugging Face Space environment
117
+ _hf_client = InferenceClient()
118
+ print("[llm.py] Hugging Face InferenceClient for ASR initialized successfully!")
119
+ return _hf_client
 
 
 
 
120
  except ImportError:
121
+ print("[llm.py] huggingface_hub not installed. ASR will use mock fallback.")
122
  return None
123
  except Exception as e:
124
+ print(f"[llm.py] Error loading HF InferenceClient: {e}")
125
  return None
126
 
127
  def transcribe_audio(audio_path, prompt=""):
128
  """
129
  Transcribe audio file to text using whisper.cpp (offline, lightweight).
130
+ Falls back to Hugging Face Inference API or mock transcription if whisper.cpp is unavailable.
131
  """
132
  if not audio_path or not os.path.exists(audio_path):
133
  print("[llm.py] Audio file not found, using mock ASR.")
 
167
  except: pass
168
 
169
  if not transcription:
170
+ print("[llm.py] Whisper returned empty transcription, trying HF API fallback.")
171
  else:
172
  print(f"[llm.py] ASR Transcription: \"{transcription}\"")
173
  return transcription
 
177
  except: pass
178
  print(f"[llm.py] Error during whisper.cpp transcription: {e}")
179
 
180
+ # Fallback to Hugging Face Inference API ASR
181
+ hf_client = _init_hf_client()
182
+ if hf_client is not None:
183
  try:
184
+ print(f"[llm.py] Transcribing audio using Hugging Face Inference API: {audio_path}")
185
+ with open(audio_path, "rb") as f:
186
+ audio_bytes = f.read()
187
+ result = hf_client.automatic_speech_recognition(
188
+ audio_bytes,
189
+ model="openai/whisper-large-v3-turbo"
190
+ )
191
+
192
+ # Extract transcription string
193
+ if isinstance(result, dict):
194
+ transcription = result.get("text", "").strip()
195
+ else:
196
+ transcription = getattr(result, "text", str(result)).strip()
197
+
198
  if transcription:
199
+ print(f"[llm.py] ASR (HF API) Transcription: \"{transcription}\"")
200
  return transcription
201
  except Exception as e:
202
+ print(f"[llm.py] Error during Hugging Face Inference API transcription: {e}")
203
 
204
  return _mock_transcribe_audio(prompt)
205