Aller au contenu

Étude d'une trace GPS

On souhaite étudier les données à partir d'une trace GPS.

Le fichier que l'on récupère ici est issue d'une course cylciste : la pyrénéenne 2023.

Le fichier se trouve sur la plateforme kaggle qui permet le stockage de données scientifiques et qui possède une API accessible via un module Python.

Récupération du fichier⚓︎

On éxécute le code suivant pour charger le fichier.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Formule de Haversine⚓︎

On cherche la distance d entre deux points \(P_1(\text{lat}_1, \text{lon}_1)\) et \(P_2(\text{lat}_2, \text{lon}_2)\).

Cette formule ne prend pas en compte les différences d'altitudes. C'est une distance, au niveau de la mer.

\(a = \sin^2\left(\frac{\Delta \varphi}{2}\right) + \cos(\varphi_1) \cdot \cos(\varphi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right)\)

\(c = 2 \cdot \arcsin(\sqrt{a})\)

\(d = R \cdot c\)

où :

  • \(\varphi_1, \varphi_2\) = latitudes en radians
  • \(\lambda_1, \lambda_2\) = longitudes en radians
  • \(\Delta \varphi = \varphi_2 - \varphi_1\)
  • \(\Delta \lambda = \lambda_2 - \lambda_1\)
  • \(R\) = rayon de la Terre (en km, généralement \(R = 6371\))

Exemple⚓︎

Si l’on a :

  • \(P_1 = (43.3°, -0.4°)\)
  • \(P_2 = (43.4°, -0.3°)\)

alors, en convertissant en radians et en appliquant la formule ci-dessus, on obtient \(d \approx 13.75 , \text{km}\).

Complète le code de la fonction distance:

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013oPf 8lkg5:+,Fbry2a1Ch3tvwKT=u6e(*Sn9_s-c)7imR./4Dp0d050!0F0x0s0R0g0M0e0O0g0s0M0M0C010x0R0Y010406050M0D0S0S0s0p0q040I0b0g0D0^0b0J050V0 1113150}0Y04051l1e1o0V1l0}0!0R0y0-0/0;0?0/0J0i0D0s0i0F0N0Y0q0x0v1c0e0v0R0i0v0g1Q0v0x0{050(0o0g0F1x0:0=011P1R1T1R0x1Z1#1X0x0p1m1L0-180M0Y0s0J0?0r011%1z010d0*0F0J0s0S0F1X1|1~231)261#292b0{0a0e0c0p0b0Y0b0M0R1b0J0e0$1`0p0p0F0O2w1e2e0J1m0V1L2J1?1^1@1Y0!2g1A0R0J282t1X1u1w0.1(2T2V0J0b2Z1X0Y2C1m2H2J2:0~1}2x2#242)0p120g1X0s1O2C0d0?030L0L0O2*0F1T2(0b0N0Z0N0t0{0e0t1e0s2;2@0|2?2f2_1)2{2}2 310F33013537393b2W3e0N21040e0r3l3n1~3p2H2S013u0s2~1m300v323436380$3E2)3G0w3i0w3M2G3o0}3Q3s0?3T3V053X3Z3A3#3D2U3F3f0W3i0W3.1f3:3q2^1y3t0b2|3U3w3Y3y3!3C3%403)3f0j3i0j462:3;2@3R3^4g3|3B3$3a4m3d3f0E3i0E4s483=4b3@4d3v3W3x3z4A3 3c3G0Q3i0Q4J3O4u3r4M3S4O4f4Q4h4S3~4l4V3f0f3i0f4!2I4$4a2$4)4e3_3{4i3}4k4C4;0N0K3i0K4_3P4v3?4~4P3`4R4j4B3(4E3g0Z0{0t0Z5b4{4w4*505i535k4D3G0t3h045C5s495u4 4y524T4:413g3I0t3L0V3m3/4#5H5e4x4,4z4/555O0t3+5E3-5T3N4`5X4(5Z5h4-5j4U5(435E455-5V5/4L4}5=514.545l5B4p5E4r5~475W612`5v5K655z560t4G5E4I6c4t5:626h5!5L5$673f0t4X5E4Z6q4K5d5;6u5?5#665A6z4?5E4^6E6e6G6t5J6v6j5_4n3g585E5a6R606T6g6V6J6w6L560r5o046;5G6f4c6,645^5N6Z0r5D706^6*6`5g6|5y6Y5m0r3I7b734%6U765x5M5%6 5*0r5,5U6d6)7f6+7h5@786~7a5{0r5}7p6r6_4N6{7i6x6M3H690r6b7C6F7s754+6-6X7x3G0r6n7X7e4|7t7S777j6y3H6B0r6D7O6S7Q7F7u6K6k5O0r6O7`7!5I7?6.7^6 6#0r6%7/2I1p2.1e2Z2M0!1^2R5e4B2Y1v1m2-0F2/3o5 1m4B8n2f0R0!0?362H5B3w8u8w6/5(222k0F8C815m5D3.7E010h0{0$0d8p6s240z3i8T8N0J0d8Q0R0M0(0J0O0F8Y740?0`040G8-7;3S0{0/0x3k7q8s7#1)8:0m8p0e8U3t8_1c0i8|2=8N9193953@8_0s0x5S9b8.019d8}948Z971C9k8o9c0{0P0k8p0}8}5H8B018x2@7W8A8v9F8D6 8F2a8H9L8J9I2J5U8N8W3J0e9Z8?8 0?0M0!0{019+9A9#0e9E9G1~3*9J8I799?0e8G9^7V3f5*8M9m9(3i9Z0e0u0b0S0Y1a2U0i2y8%8)8+9/2x0h0S0e0o0%0z0F283K0e2s2U0x0M9-9C3Q9:0L8y429@9R9_aE9{9P9}7k5m5{3M9B9l8t9K9;0J3G695haB9S4o9O2baL7*aX5~8Na39Ya50c139P0x0F0payaR2xaBaD0N6naYaT9M5m4GaJa%aG9~a~1Xa+a29)a.9Z0Nbgbhbia_9v4va|9H3f6Bb0a(7J4Xb59Q7I56bqbb8@a-a59Z8`0t0m0e0g980t0e0kbI9i2v0D2z1~2RbJ1CbQ2z0b0d0e260p8(at0bavbk3O9Db1a}6Obrb7aM3G4?bvbs56b;bA9$01bCbD8`0rbHbV0i0rbMbO0^0xbR1$bTbI98bX1$bZ0e0M2D1c2Rau0J0xb,87aAb/bo57aFbx5O58b`b?7*6#aP9.bn9=6z6=b=cA6Z5qa$bwb25BcMb~3Rc1a50T0%0D0p1d8}aQblaS8Ca}5CczcT6z3hcDcO8K8LcW5ecYbfbic ct8~9/cwcK5Pc:a!d6c@c;d69Ud2c|bdbD0e0Xaf1~ah2U0e0A0Sd1b.c-cx5)d7aH3g3+dad8dvdd9fc0dga59+01drcvdtd50taO30aZdxdOcRb{5`ba3mbDdE0J0{0F131L0T0s1u0Dax9pdE0b0{0C9e8N0S0R0{0E0w0Q9a48azbmd4aV6zaXdQb1dB4pdAdSa*dYa5d!0{0Od@9md;04d?d/d^d`045rc)cIe35Ba e7dVcPb49|cE7J6mdX3pe1c,9Lc.bqeyeD6lbueCc^5Bbzee9!8N8P040R8Seo9m0J0o0{3U0g9.5e8:0G8=eIb d#04bFe-4(9o2:9qe%9s99e`4}e|3oe~8@e@c3f224f43Of6e?f09ub-9w040P9ydKe2dMe43gb;eNeS6NdUeO5(b}eVdhege^9i0n2qdqe$8@elene}fC0pd+0R1~d.a`3Re/fa96fD8{fW8/9xfneJaU5BcGftdb0tcCeRf-cG5-dhef9re^1cfFa8ejfJd=f~ff04fO1ufRf!9n0{e;fT5Yf0d fi9m8:0Pf%a{ev3f6;dwb8gnebgpcVfAdZf_8`0B0bg13RfKgAgcg3fPg6e=fUg9g7f89ifhcuggf$etgIcJfq70gob@gmc?f:d8gWddf@eWe f`0JgygD4(gCfIg2g4fQ0JfSc+b fVgIgEc6gOdee{gR6rgTgl3H3IcNdb7bfwfuh8eGc*gff(aCcx7ngX7*hmgrgY3Ha0f?g)fC0!bVg/4}g;fMgw1cg.g=gB0{0Nhz2`9sf|fHh5fTgU7WdPd3ez7yhdhbaOhuf@hw8`hK1)hBf5fCgxgzhG5eelhJh/5;9h0xhNgjhUeKhle6h|he7MhXg$edeHhQh77Xhn7Ji9hqhoa h!fBf_0sh(0?h*fdfC2uc(gbh38;gL8Qh%h?hA0{0Vik01d_0{h1dEghg7el0H0Hg7iD6?iBel0liBe@38g`hig|gKg~h@fYh`iZf3h4h+8NiJiSeh2tg7g}ir62h^hFi=fbi)ini+0{iLixhL04ipi:iYi_fXhx1ciPiziBiNiFfjgii%24iJi j60?jdh{hRgmeMi0hbeQaKfx6 eUbegvg+eij0h)g0jDjmeqh1fehH04jki*g+0:2Uj48;gag{4we*jSjghCeki~jNi|9m0S8#er0U6bjlg8fkjoi8fsjsg$b_g#dx7`hgeufp7Wf+j^j|f/jvi1f=fAdEeY2Cccc%i-04d%0pd)fPd-jajMkfjChP8o0V8r888m8a8j1e0x8dky2P2K0s1!kv0V8b9B0$0(0*0M04.

Création d'une liste⚓︎

On éxéxute le code suivant pour obtenir la trace de la course.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Lissage des altitudes.⚓︎

Les récepteurs GPS donnent parfois des altitudes non réelles sur certains points isolés. Pour contrer ce phénomène, on eut lisser sur plusieurs valeurs consécutives.

Le lissage d’une liste de longueur \(n\) des altitudes par moyenne glissante de pas \(p\) consiste à remplacer l’altitude au point numéroté \(i\) par la moyenne des altitudes des points numérotés \(i, i + 1,…, i + j\) où \(j = min(p − 1, n − i − 1)\).

Complète le code de la fonction lissage.

Ensuite il est possible de regarder le résultat du lissage en constatant l'évolution de trackDf[0] entre avant et après l'appel de la fonction lissage.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013oPf 8lkg5:+,bry2a1éh3tvw=u6e[(Sn9]_s-c)L7iqm./4Dp0OdG050!0C0w0r0Q0g0K0e0M0g0r0K0K0z010w0Q0X010406050K0A0S0S0r0o0p040F0b0g0A0_0b0G050U101214160~0X04051m1f1p0U1m0~0!0Q0x0.0:0=0@0:0G0i0A0r0i0C0L0X0p0w0u1d0e0u0Q0i0u0g1R0u0w0|050)0n0g0C1y0;0?011Q1S1U1S0w1!1$1Y0w0o1n1M0.190K0X0r0G0@0q011(1A010d0+0C0G0r0S0C1Y1}1 241*271$2a2c0|0a0e0c0o0b0X0b0K0Q1c0G0e0%1{0o0o0C0M2x1f2f0G1n0U1M2K1@1_1^1Z0!2h1B0Q0G292u1Y1v1x0/1)2U2W0G0b2!1Y0X2D1n2I2K2;0 1~2y2$252*0o130g1Y0r1P2D0d0@030J0J0M2+0C1U2)0b0L0s3f0|0e0s1f0r2=2^0}2@2g2`1*2|2~30320C340136383a3c2X3f0L22040e0q3l3n1 3p2I2T013u0r2 1n310u333537390%3E2*3G0v3i0v3M2H3o0~3Q3s0@3T3V053X3Z3A3#3D2V3F3g0V3i0V3.1g3:3q2_1z3t0b2}3U3w3Y3y3!3C3%403)3g0j3i0j462;3;2^3R3^4g3|3B3$3b4m3e3g0B3i0B4s483=4b3@4d3v3W3x3z4A3 3d3G0P3i0P4J3O4u3r4M3S4O4f4Q4h4S3~4l4V3g0f3i0f4!2J4$4a2%4)4e3_3{4i3}4k4C4;0L0H3i0H4_3P4v3?4~4P3`4R4j4B3(4E3f0Y0|0s0Y5b4{4w4*505i535k4D3G0s0s5p3k0U3m3/4#495u4 4y524T4:413f3I0s3L5G3N4`5K5e4x4,4z4/555R0s3+045+5s5Z4(5#5h4-5j4U5*435-455W5I5Y4L4}5=514.545l5B4p5-4r5~475J612{5v5N655z560s4G5-4I6c2?1s2/1f2!2N0!1_2S5e4B2Z1w1n2.0C2:3o5 1n4B6H2g0Q0!0@372I5B3w6O6Q665A3g5D0e2l0C6W6k5*1Y5~6f1*0h0|0%0d6J5:4}0y3i6?6-3@0d0|1U0=1G0C6{5d4(0{040E744%620|1@0r0M0h7a4|25770N0k6J0~6d2J5K6V016R2^3G3I5h7t5(673g226#2b6%7u6X567y6,756^3i0e7Q7i3R0K0!0|017X7o7S7A0J6S3g5,7z6P7I6)4n0L3+7F2c6(5_7.7)7M7b257U7P7Q0O0C0-2D1$0x0t0-0%0-3U0_0w0A880e0K1d0w0e1~0o0d0b0Q0-0Q0S2.0t0M8o810e0r0x2E0e1$0e0o8t0C0X0w0C0A0o0e0#0c0F0m8j0b8K8B8q2w0C8L1$0-0d1a8c0r2x0-2z008t0u1 0_0g0g1d720m7Z7q6M2y7#7%0L5{7*7?5Q7.437;7H7B6Y8 6+5H6|017}3J7Q0e0Z2y2D8r0:0M1%0g008a2w8d1%830C858j148B310S0b0p292W2z8w0j8R2V0w0-101w8/0K0T8_2?3Q8}7w4o6U7+98564p96925)7.693.9d9f9h2p8S8Y8w2t9M0-290e272y2A708I8Q0R1F0G2S0+6#9v818I8j1a0-9K9_0G9N8Q1O700K1%109@0-ah9N8Dab9R9U6I9W9#7$9Y0L6n917,7@5m4G9)aG93aI9b3p8`7saA8~4X4Q7#7-5m4XaK9$5RaU9.7N7|7V9g7 9p8o0K720eaba=0d0d2E8c0t8x8z0M0e0A2y3ya_8i2A0n4d0!8Q0:8U0Kaca?1v2D2F0C2cai0e9D1v270t0C8Qa:0G820(8K1e8`7p9V4v9X1 3G4?aVaAaXbF236$9*7C0LbGa(7{1*9:9h7X01ax3OaR6W8~58bHbN9958a!7J5Rb%3MbAaybCaSaC5q9!b)6l5ob,bJ6Z5o2K3m9;6@2{0|0G0n0Jas0K6J0ec51*0b0|0zcdcf3@0n6 297S5e7779aQ9d0G7d0o7f7hcua)1*7lbY7razb#b^5Db(aL9+5m5CbL7Gb{5*cK3Mc49d6/048m0ockcv0|0Qc$cC0@0b6_042Vc*bScm0|cy1D73cBc=01cscq5;c7c9cbc 4}7l7nbz7!b@bE6Z7y31aWaH5B7EbMcMbO5UaO9;cWc+3S0|9s8c887$0A9Qai81c;7jcgcidB3R770Dd4c60439b8dJcD0|dIc{dC0@0S0Q0|5}bBc|770IdF5ecYc!d%d0dL0bdN8`ce9dc-c(by2;d;dqcw047e7gdO0@dHe0drc/e377d7dZdTe4c)dS3Rch040le3dV0|6be9dG0|0Id$d8edbD0G5B7)debIdg6Z7:dja#7.5+dndo7Rc%048a0J9D0pd+4}efcjd:cl3Scn041he60|ctem5!ds0g8b9u0Kdwdy8Iccedcr0|0Ne3ef0Ue3c8cod^b=d!e!e{e(e*dv9P0x8/dAe;76e?cF8{0eet5B90excSeE95eCb-fleGeHeUd|d~cAe$fb04dRfw7ce5fad5eofze eaej04dYfHen04eqd_eUeRePdKeLeNfdb!7I8~0s9-fjdk99f#cQ7=f(6l9-5Wb;bZcHfZb^aEf%eDcOaJfnb 3faE7`ead|am72eZ78f2d}cy7g0W6=fD7kfcer6r6L1q6t0U6v1f0w6xgp2Q2L0r1#6G6u6D7p0%0)0+0K04.

Statistiques par segment⚓︎

On souhaite établir des statistiques par segment kilométrique.

Complète le code de la fonction suivante qui retourne un couple (altitude minimale, altitude maximale pour un segment kilométrique dont l'indice est donné en paramètre.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013oèP;f 8lkg5:N,bry2a1éAh3tvw=u6e[(Sn9]x_s-c)7iqmR/4Dp0Od050%0F0z0t0T0i0O0g0Q0i0t0O0O0C010z0T0!010406050O0D0V0V0t0q0r040I0b0i0D0{0b0J050X12141618100!04051o1h1r0X1o100%0T0A0:0=0@0_0=0J0k0D0t0k0F0P0!0r0z0x1f0g0x0T0k0x0i1T0x0z0~050+0p0i0F1A0?0^011S1U1W1U0z1$1(1!0z0q1p1O0:1b0O0!0t0J0_0s011*1C010f0-0F0J0t0V0F1!1 21261,291(2c2e0~0a0g0d0q0b0!0b0O0T1e0J0g0)1}0q0q0F0Q2z1h2h0J1p0X1O2M1_1{1`1#0%2j1D0T0J2b2w1!1x1z0;1+2W2Y0J0b2$1!0!2F1p2K2M2?11202A2(272,0q150i1!0t1R2F0f0_030N0N0Q2-0F1W2+0b0P0s0P0u0~0g0u1h0t2@2`0 2_2i2|1,2~3032340F3601383a3c3e2Z3h3h3l0s3o3q213s2K2V013x0t311p330x3537393b0)3H2,3J0y3l0y3N2J3r103R3v0_3U3W053Y3!3D3$3G2X3I3i0Y3l0Y3/1i3;3t2{1B3w0b2 3V3z3Z3B3#3F3(413*3i0l3l0l472?3=2`3S3_4h3}3E3%3d4n3g3i0E3l0E4t493?4c3^4e3y3X3A3C4B403f3J0S3l0S4K3P4v3u4N3T4P4g4R4i4T3 4m4W3i0h3l0h4#2L4%4b2)4*4f3`3|4j3~4l4D4=0P0K3l0K4`3Q4w3@4 4Q3{4S4k4C3)4F3j0#0~0u0#5c4|4x4+515j545l4E3J0u3k045D5t4a5v504z534U4;423j245F3M0X3p3:4$5I5f4y4-4A4:565P0u3,5F3.5U3O4{5Y4)5!5i4.5k4V5)445F465.5W5:4M4~5?524/555m5C4q5F4s5 485X622}5w5L665A570u4H5F4J6d4u5;636i5#5M5%683i0u4Y5F4!6r4L5e5=6v5@5$675B6A4@5F4_6F6f6H6u5K6w6k5`4o3j595F5b6S616U6h6W6K6x6M570s5p046=5H6g4d6-655_5O6!0s5E715c1s2;1h2$2P0%1{2U5f4C2#1y1p2:0F2=3r601p4C7k2i0T0%0_392K5C3z7r7t6:5)252n0F7z6l7B2M5V6`0_0j0~0)0f7m6t270B3l7Q7K3T0f0~0V2X150M0N0O0F0k2e0J0z7V6+1,0}040H7/4(630~7)7+2b7.6e2L7R7;0~0m7m0g823^0p0~2X7 2^7W7=0R8688010b0~0P020k0z0e8i7W0J8a040z0D0!1(7^4}277=85803s8G5I7y017u2`3J5R5i8K6y6N3K0g7D7F6Z5n8P5 7W7T040g8)878I7W0O0%0~018;7m108,4w8R7(8N3i5+8Q7s8L7A6!3,8V2d7E917G931!8#7:0_8.3l8*0W0*0b0D0q2Y0g1(0/3V0{8x0)0/7!2A0*0g7$2B0D0g7|7,0z2B0F150J0%0v8?8B0g8`7v437x908S5744952e8X6 5n5|3N8@8e8_9U8{213J6a8 9!5(6!4q9Y979V5P9:9c7_279f8(8*0d162d0c1_0F0O9N8^7q9,9R0P6o9;988Y3J4H9_9=6zag9b7J9d01a18*0g0PayazaAab9*ad7zaf6Cai9{6!4Yanaj9#4Xar7p8C1,av8*9E7~0g0m9P7-aC7l3R9Q8|0P6PaI925n4@aMaJa/aQ8jaUaw8)0n130v2t9B9D7*9F2B1f9G1Q0A0F1d9oa99D0+0{0O0{0U0Da9a$3P8Jaea*6$a-995n59a;a.3Jbq5.9)a%9+aFa*5r9Tao8TbFbvbs5C6?3/8-8/a28)9i0z9k0qbl81a(bo9.6A5Ebrakb$7C96bH6mb%9~aS9ebQawaAb^0PbXaR9Pb!0J5C8P338`bL6A24bKb)5Qa@bP9g8)0H9r0N9w0o0gcf7$0RaY0g8x8z0F0H0f0i0b0t0zcictcv0z8h8GbAbmbZbDb#3j8~c29,c4cJb+9ZaN9?5n5*caata_a`0w0i9s0D2C9w0T301)9y7$c)3V1)0%9CaWa#cD9Oa)cI0u9%cLb-5{cP9`bw6A9%b:3ScX8;01b{bncHb 6A9:c~cRap0u9^8WdibI9}3paw8j0Q5E030g0$2A2la89o331Wbg1)1_0t0Q0j0Z0f9D9lbbb17}7-0g0A9k1cdbcG91af6nbGdn6mamdma=5Cah5.dr8t7{b27~0N2v8caa8G877W8l040C8sat7=0G9O5Z0~d@c@2?d{at7M040f4ee09 3we60b8cegb;8k8%2Xem4x0~dGdIdKer5fec0T7Pd`8j0Jejelacene2e44)7!0~5seH3S7=0Lex4)d}0Cd eCd/04c?8dbBeh0_eRdWbCdYbEaHdhd*6AaLd)d33jaHd-8*8jezeBe98j0b8%2,e$3Peae(3Td:dQ0zd?ek7-d_aDeI84e+aEe-c{a,e:e^0ua:e@cNfraQa`e|7Wec2F8x9meT4~0j0Q0~0n1f0FeK4~7=0ofE27fGfIfK86f7endt0~dv0w0D0Q0D2Ae79G0%210/0Q1)e#fk2Ac`de6#d#e;f_c7aO6Aby3pcEbYe,8McI6=f`e^g7f}cS8ObNe{8)eD0~9r2yc$bkeYateVfQ8304e3ePe5040!fM8D0~gtfh3SeM045~gC5fe*gnf8eceebWgKeneEgwgq0_f28b1ggPese!d;7-fdd^gygreSc^ePf@8Ob%fpcN71d1c 70b/dqfyeb0~fB9lgXf08t8v9wg)e)0~7@gu5=gic!gk9uh6018gfPgY5Zh40t0Mhg7=h9gHhb04gj9tgmhsfN0~cC6s8I0X7o757j777g1h0z7ahK2S2N0t1%hH0X788@0)0+0-0O04.

Pente d'un segment⚓︎

On va caluler la pente moyenne de chaque segment. La différence d'altitude est obtenue par la différence entre les altitudes minimales et maximales, puis on divise par la longueur parcourue.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013.8594oèPf8gzbr1a3tv=un9s%c)7R/p0Od; lk5:Ny2éChw6e[(S]_im.4D*-050E0T0o0m0Z0H0u0G0w0H0m0u0u0q010o0Z0B010406050u0r0!0!0m0k0M040W0c0H0r0}0c0s050A1416181a120B04051q1j1t0A1q120E0Z0p0=0@0_0{0@0s0h0r0m0h0T0)0B0M0o0Q1h0G0Q0Z0h0Q0H1V0Q0o10050-0j0H0T1C0^0`011U1W1Y1W0o1(1*1$0o0k1r1Q0=1d0u0B0m0s0{0N011,1E010f0/0T0s0m0!0T1$2123281.2b1*2e2g100a0G0e0k0c0B0c0u0Z1g0s0G0+1 0k0k0T0w2B1j2j0s1r0A1Q2O1{1}1|1%0E2l1F0Z0s2d2y1$1z1B0?1-2Y2!0s0c2(1$0B2H1r2M2O2^13222C2*292.0k170H1$0m1T2H0f0{030Y0Y0w2/0T1Y2-0c0)0n0)0l100G0l1j0m2_2|112{2k2~1.303234360T38013a3c3e3g2#3j0)26040G0N3q3s233u2M2X013z0m331r350Q37393b3d0+3J2.3L0n3n0n3R2L3t123V3x0{3Y3!053$3(3F3*3I2Z3K3k0$3n0$3?1k3^3v2}1D3y0c313Z3B3%3D3)3H3,453.3k0J3n0J4b2^3_2|3W3}4l413G3+3f4r3i3k0S3n0S4x4d3`4g3|4i3A3#3C3E4F443h3L0y3n0y4O3T4z3w4R3X4T4k4V4m4X434q4!3k0g3n0g4)2N4+4f2+4.4j3~404n424p4H4_0)0t3n0t4~3U4A3{534U3 4W4o4G3-4J3l0C100l0C5g504B4/555n585p4I3L0l3m045H5x4e5z544D574Y4^463l3N0l3Q0A3r3@4*5M5j4C4;4E4@5a5T0l3:5J3=5Y3S4 5$4-5(5m4=5o4Z5-485J4a5=5!5@4Q525`564?595q5G4u5J4w634c5#662 5A5P6a5E5b0l4L5J4N6h4y5^676m5)5Q5+6c3k0l4$5J4(6v4P5i5_6z5{5*6b5F6E4{5J4}6J6j6L6y5O6A6o5~4s3l5d5J5f6W656Y6l6!6O6B6Q5b0N5t046_5L6k4h6;695}5S6(0N5I756}6/6 5l715D6%5r0N3N7g784,6Z7b5C5R5,745/0N5;5Z6i6.7k6:7m5|7d737f600N627u6w6~4S707n6C6R3M6e0N6g7H6K7x7a4:6=6$7C3L0N6s7$7j517y7X7c7o6D3M6G0N6I7T6X7V7K7z6P6p5T0N6T7 7)5N7{6?7}746*0N6,7@7w7*7W5B7A7.7O0n6`8j825%6N7-7N5b0n5I8s8m6M7L8g8q5T0n3N8B8v7l7,7M6@8A5/0n7t5?5h7_5k8G8y8I6(0n608V8E7+8f7|7e3/6e0n7S8N5y8n8x8#7!3k0n6s8=5g1u2?1j2(2R0E1}2W5j4G2%1A1r2=0T2@3t641r4G982k0Z0E0{3b2M5G3B9f9h8T5r3m0G2p0T9n869p1$637J010I100+0f9a6x290R3n9F9z0s0f100B2d0o0T0Y0u0T0h2g0s0o9K790{0 040V9!8P0s109U9W9Q9*8d9$100K9a0G9G3y0j102Z9Z7v9d9=019%0x9^a112a15M9m019i2|7#9l9gad9oag9r2f9taj9vag2O5Z9z9I3O0Gax9;3W0u0E1001aE9aa92`3Vacae233/ah9u8$8;279saP8:3j9xat9#01aB3nax0G0P3Z0w0r1*0G0@0G9P9Y1+0!0c0M2d2!2D0r0G9.9X0o0G2d0G0vaGazaK9Taf47aOapaQ0)48am2gaU7p5r603RaH99aJaiaL0s3L6e5mb8aq4taSanbj7/bv9yaZa#awax0e182f0d1{0T0ub6aabq9n9j4Kbc8z6(4LbhaobY5r6s3?9zbHa%0G0)b/b:b;bRaI4Ab8bV0)6Gbwbrak3k4$b#bC7Ob|bF8Pb,a%a 9Q0G0K0G9 b?bpb^b~b`6Tb}c35b4{c2bdaVclc6a3c8b-ax0L150O2va|a~9Vb02D1hb11S0p0T1fa.35a;9R0Ga@a_0s2!cg3Tabcjba5cbXb c$cqb%3L6*bnb7c!aM6E6`cmcrbk5G5tc*c(5vaXa2aAaCbI0G0z0,0c0r0kcX2NcZbUc#5Hc%by3l9qaTc^7/dfasd05jcwb.b;dtdad0b_de3Nc@c+6E26c|dh5Wc 9{0{drcQ9ScTcc0G0f0H0c0ma06wbSciddc;3l5/dAc}3:dEbe5.dHb+d2cxa%0e9Qa?a^a`1+0Ea}ca9Yb22C2xd80w9Q1K0Tdvdcajb`0lbm35bxd*bgdkdB3lbmcud1a$axaE01e6bTe8debvecb~dF4ud)aV0lbE3rb-dI010w5I030G0D2C0k0Oa+0B0d2Ha.bPa:0c9 0;d`cE9/9YeqdXesdZ6rdgd*b!egc}b)5=eE9L9-cF9Q0Y2xeX9_eF0c100qe~9z9%0Uaz5%9OeWe$a19`9z9B040f4if3aZ9,04e|fb2^fdaZ0cav2Zfj9+101{0m0w0I0%9EfceFff0ZfDfpeFflfndUch8Pf5f74-0!0Z105wdWfP100Xfva3f0040qf2fEe@04d|fNcYf4fZe%9ec:bt6Eb|evcn5-c1e/dFc5eDa%fF9~fI3tfq9+9}042ofR529%9)fXa3flf.e{fa0obQgi3Wa5f#3Wf%020H0o0Fgt5jfT105Xb@fY04a7dVgF2Cdxe*clf|dl7O0lcpg0d*ctg3d/g5042H0od81if+aZ0!9N040C0#fWgJfOgLf^5Gc-gPeh0l5dezc_6Ec-5=bof:e(bs7#c?g`c(6_bAbigQ6^c?e=g4f,3Z0o9T0-0kf/2Ng9f$f1gA5_e^e#hlfMgpgKgr10f6gqgBfUg-ge299%0XhEhBhG1062hO4-hLf?g?dYf_3M5Id$dh75hcb$hah!hhayhjgx0Y2d0Ehu52f%f*fJf,glhzhJ1.fQhF4-f%0)h~0{gC5Ji5a4fZhNg=3Wi7hRid5jhUa8c/hX7#dzh9h$dDgUaV7gc h3dberh63k7se,itd(isg 3Md#h,hr4B9C0Z0uhliO18hp3Oe htg)fwf-e_9Ygme}i1gfhDi9i7g:ihhTibi*hH3pi%hKf=ikgqgMhY7FiCiGi}g~7/i}doe?fkiMiOh:0sh=iWhsf(h?2 hwb0i#9YhAi-i(04ich48Pi3i:5ui9hLjpixg*i;jvi^g;jqhWe)i|euceewbe7Rh(f}74eC3ui`g@iAb)ipjLe.bBhe7~e;gXiK91eI0G0%fH0fcB2de22Dd_iN0-0sj;1R0k0Z0icI3Z1+0Vb30I0!0G0bcS0xhVjJimiAf{kbj!74f jZeh7=c j5iX1zj80!jf1.h^ks9?9(i9flkphlh;kv01jsjciL04kAhmiRjB04k9kG5jf%0(kDi75v0Ci,5#jSkc3MgOkfkkgTkjhagWd3gZfHkDkzj@0YkrkPi2f1h_g8eFi+kMgI4dkZjG7#g_k%hag}iFj2h1j%kna3ffg#g%kTg,g.kX5@l2iz3jh8l6dh8jjNkg5rltdoiwdwjT3jh!jWaV8sluehlGj4hiaZeH10eJ0%0O0s1A3f0O0Gk22C0!kOjDjyf@k!8Bi~7/l)j18idziJfK9C3f0-0Y0QkDkuk^6710hkj9jbh`fr10i4l|jg04l iQhokai{3/d#lEiG8LlHc(milyill38;eblrbe8Vmjlsejj%eFlN04eJd;a=d~eVe1e31LmclB8)l*8ieyl9mNkmlLiXdLk?a^l`iVm2gGghhSl}kIl?0ml^mX040Ak:j7hlk@m$i@kNm,kSm61.kUkWmJl(jVmrlFjYhdlIj$k-fe10lg0kg(mZgj9Od=mV0Me60A9c8_978{941j0o8~nr2U2P0m1)no0A8|a90+0-0/0u04.

Les statistiques des segments⚓︎

Enfin on veut obtnir des statistiques pour les 103 segments de cette course.

Plus exactement, on souhaite connaître les parts des segment ayant une valeur absolue de pente, inférieure à 2%, comprise entre 2% et 8% et supérieure à 8%.

Complète le code suivant.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013oèP;f 8lkg5:+,bry2a1éh3tvw=u6e[(Sn9]_s-c)%7iLqmR./4Dp0d050%0E0y0t0S0i0M0g0O0i0t0M0M0B010y0S0#010406050M0C0V0V0t0q0r040H0b0i0C0{0b0I050Y12141618100#04051o1h1r0Y1o100%0S0z0:0=0@0_0=0I0k0C0t0k0E0N0#0r0y0w1f0g0w0S0k0w0i1T0w0y0~050+0p0i0E1A0?0^011S1U1W1U0y1$1(1!0y0q1p1O0:1b0M0#0t0I0_0s011*1C010f0-0E0I0t0V0E1!1 21261,291(2c2e0~0a0g0d0q0b0#0b0M0S1e0I0g0)1}0q0q0E0O2z1h2h0I1p0Y1O2M1_1{1`1#0%2j1D0S0I2b2w1!1x1z0;1+2W2Y0I0b2$1!0#2F1p2K2M2?11202A2(272,0q150i1!0t1R2F0f0_030L0L0O2-0E1W2+0b0N0Z0N0u0~0g0u1h0t2@2`0 2_2i2|1,2~3032340E3601383a3c3e2Z3h0N24040g0s3o3q213s2K2V013x0t311p330w3537393b0)3H2,3J0x3l0x3P2J3r103T3v0_3W3Y053!3$3D3(3G2X3I3i0Z3l0Z3;1i3?3t2{1B3w0b2 3X3z3#3B3%3F3*433,3i0l3l0l492?3@2`3U3{4j3 3E3)3d4p3g3i0D3l0D4v4b3^4e3`4g3y3Z3A3C4D423f3J0R3l0R4M3R4x3u4P3V4R4i4T4k4V414o4Y3i0h3l0h4%2L4)4d2)4,4h3|3~4l404n4F4@0N0J3l0J4|3S4y3_514S3}4U4m4E3+4H3j0$0~0u0$5e4~4z4-535l565n4G3J0u3k045F5v4c5x524B554W4?443j3L0u3O0Y3p3=4(5K5h4A4/4C4=585R0u3.5H3:5W3Q4}5!4+5$5k4:5m4X5+465H485:5Y5=4O505^544;575o5E4s5H4u614a5Z642}5y5N685C590u4J5H4L6f4w5?656k5%5O5)6a3i0u4!5H4$6t4N5g5@6x5_5(695D6C4_5H4{6H6h6J6w5M6y6m5|4q3j5b5H5d6U636W6j6Y6M6z6O590s5r046@5J6i4f6/675{5Q6$0s5G736{6-6}5j6 5B6#5p0s3L7e764*6X795A5P5*725-0s5/5X6g6,7i6.7k5`7b717d5~0s607s6u6|4Q6~7l6A6P3K6c0s6e7F6I7v784.6:6!7A3J0s6q7!7h4 7w7V7a7m6B3K6E0s6G7R6V7T7I7x6N6n5R0s6R7}5e1s2;1h2$2P0%1{2U5h4E2#1y1p2:0E2=3r621p4E8g2i0S0%0_392K5E3z8n8p6=5+252n0E8v7{6$5G3;7H3V0~0#2b0y0E0M8i0g6v270b0~0B8O8Q1,0}040F8V8G0I8I8K0E0L0M0E0k2e0I0y8i8W0_8Y0G8=8$0~0S8`778@0~0P8#8 010j0~0f4g937@8H048}7t3M8?010b0A8|1g9f8P8$0p0~0q211J8~9b8^9v7(3w0~1_0t0O0j0!0f9y3U8Y8!9f9h8S040N9I5h0V0S5s9R4+8Y0K9L2^8G9T0~5u9M8G9Y9a9z0_9O0n9-3U9%5H9W508Y929n9h9,9f109*4y8u018q2`7Z8t8oa58w728y2d8Aab8C7d1!5:a19#a3aaa6213-a98B7cas0g8zau7Y3i5-8F9496040)9Ha29b9k9gaJ9.3V0f0~0M0+0y8+8-8/8;aN9J0~8_aZ5#8(8:8M9_278Y0m9=5#9q041WaSa,8X91a/a09Ia4aq0I3J5~5ka ac5p46axafaz7nb7ak5X8GaL0gbi8Pa%4+0M0%0~01bq8iam8h3Tb58r4ratahavbyb92ebb7-6caD9bbn3lbj0W0*0b0C0q2Y0g0=0g0q0v200q0{2z2B8M0g8Ja*0/a|6uaZbwa74Ibz7L594JbDagb?5R6qbIaObK3Mbjbi0N0g020i0y0e3N0Qbsa~ap8+b:0N6Eb4ceai4ZaebEbAaAchbe8lb boc1c2c48K2Fca0g0*0g0hcba}b.cebx0N6RcjbF7M4_b_cO59cM618Gc0c2c3c50kc8cEcGb-an8mcJcg6(cNcpbc3J5bcRc:7-c.alcd8vcK5tb=b65E5rc@b{8D6^b~3UcXbj0d162d0c1_a+cHc*2Ab/ar6C8E33b5cldncnb`d1ds2Mbf94dac30NdCdDdDcccIc}cg5Ud0dr5SdtcS5+3Ld85hdAb(8)b+bT0Sa^dibuaodIdm3jaCdpckbBd*dOc^7M5,cs9hdUc20TdZ8Lb$0/b)8L0/0V0b0r2b2Y0/0)0/8,8.8K8Nd#3R5Kdlb16Cb3d,dP8Db8ayd;6ob3c{dHabc~bHemer5+4sd4dv3jbHcVdzcvc2bN0ybP0qdGdj0gei5Eb}ezd55p6pd:eWeTd@cWeJbjdEe*9Qef2Lehc,d)6DdLd.e=eDdMe=dxctd9e(bi0GbYaU0f0,1%0E0ob(16aUe3e50I2Yf8f20L98bZ0E0P0g0m0g0y0C0#1(0G0f0i0b0t0yf8fvfxfz0gfBfy9|c)d$c+d(ej3jcMeVeE0ucQeqe!6Qe$eIbLcY2r2t2vbZ0S1Q2C0O0w0t0U0C1)0Ofy0v0k4g0S1)0Gcz1)0$cC0y3mfH4bevb05Ec.fPe`c?fTfQc`dybJe 0gbq01ePfJdke:fM6@e?cqgpe_d.gpe|c29haF0SaI2?9o949j0~2,aYgC9h8%04e0dheQ5ha.gkegbvgn7ZdoeRd-gr3kgtg!csfZbigy9r0*bQ9mgJ9+a#a_0_0VaQ040$0X9)gP9X0~0oa:4+g^9(g|g?018Yh19}9$g_g{g}gla!04g25Zg4cfd)7egqc;3ihog$hq3KdReueQeShrd+gYen7d3.ht7-7qg(bjgK9B0b0+0ih2509O8Uhb940Ia=2mh79xbl65a)e1hZ91gSe.gUfL7ZelhCeA72epbah=7BhJg*8{04f40Sf6hQ8R8Ti23whX2bh)040G9!hga(gMi50_aFfjig9c0#ikgF9dg/3rgD9bgLgNeeg:aE8|gBirgKa=0t0piwidg iah7iui9hj2LisaO9Oc6c8ik9@5Vg~9`0~0KiN3shlcK7PhphHeCgbdMi)gwhKh}fce60Eini4hUiti7iqgT948^ici it8Iikii99i{aOiLj93Uio2XikiudWj6iziU9U6_i_04iS0ehTixi|0~iEiGj3aOh!iX2}j5h#a-h*jc5hiRc7jrjl0~6TjBa`04i!h+e}hz3KeUh;fUjWeZeE7!h{iP4z974g8LjojsiB9p0~hYjEjQibiKjDjtaOj7eOjH5@j{j:gEaLjfk0h$gMjik727gziA3Rj)a;jviFi9a$jP3`k2jyhhi#kg4+iRc#0ejM04jOiHiYjRi#btkpjV7:i*7MkHhGkJcihxhgkGfOjYj$fSh^jZ7}j(g+042FfqbRikjAkAjCh~f51(jo0YjghMhOi9haj|j*04i?fei^kb1,9Ok:k kn04eMk?j@9004k^k3j4h~j,k~k_jI0~l2lhk1l5hN3XiMjT1h8k818f838c1h0y86ly2S2NiE1(2M84a10)0+0-0M04.

Questions supplémentaire⚓︎

Pour chacune des questions suivantes, il est possible de trouver les coordonnées des réponses trouvées et de chercher le lieu sur OpenStreetMap.

  • Quelle est l'altitude maximale lissée atteinte sur cette course ? Quel est le nom du col de cet endroit ?
  • Quel kilomètre de segment contient la pente la plus forte en montée ? Même question pour la descente la plus forte.
  • Quel kilomètre de segment est le plus plat ?
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Tracé de la course cycliste⚓︎

En utilisant le module matplotlib.pyplot et les donnés suivantes issues des questions précédentes, tracer un histogramme des altitudes de la course en fonction du kilomètre, la barre est rouge si la valeur absolue de la pente est supérieure à 8%, jaune si elle est comprise entre 2 et 8% verte sinon.

Python
1
2
3
km = [ i for i in range(103)]
pentes = [-2.2, -1.44, 2.46, -2.53, -2.89, -1.8, -0.28, 3.13, 7.4, -2.25, -3.37, -8.22, -1.75, 0.14, 0.78, 0.35, 0.11, 0.21, 0.08, -0.77, -0.09, 0.08, -1.4, 0.29, 5.91, 0.77, -4.18, -0.39, -0.86, 1.51, 0.89, 0.94, 0.84, 0.29, 0.88, -2.86, 0.33, 0.68, 2.5, 3.45, 2.98, -0.63, 5.41, -1.22, 5.51, -3.28, 6.01, 1.82, 2.13, 2.89, -2.58, 3.79, 6.58, 8.64, 6.76, 6.91, 7.52, 7.5, 6.5, 11.54, 8.66, 8.17, -2.01, 9.29, 7.31, 9.4, 6.62, 6.21, 4.77, 9.8,11.1, -11.86, -7.88, -9.22, -7.01, -8.21, -8.93, -8.06, -9.91, -4.59, -15.74, -8.73, -6.91, -6.07, -3.7, -1.19, -1.79, -1.97, -4.08, -3.05, -5.48, -2.33, -2.48, -4.0, -1.66, -2.52, -1.68, -3.09, -1.55, -1.59, -0.9, -1.28, 0.59]
altitudes = [544, 522, 530, 529, 502, 473, 459, 481, 539, 544, 532, 488, 407, 394, 402, 432, 411, 410, 411, 413, 411, 410, 404, 394, 448, 457, 457, 418, 415,421, 427, 437, 446, 459, 460, 461, 440, 444, 481, 498, 561, 535, 570, 626, 606, 646, 646, 658, 671, 718, 694, 712, 776, 861, 930, 992, 1065, 1134, 1213, 1319, 1404, 1488, 1489, 1560, 1634, 1729, 1795, 1872, 1939, 2010, 2114, 2108, 1994, 1910, 1820, 1750, 1667, 1581, 1499, 1401, 1354, 1198, 1109, 1045, 987, 949, 948, 921, 901, 860, 827, 771, 747, 722, 681, 668, 644, 629, 599, 583, 570, 558, 546]