Hujedamig vilket projekt, detta var ett sånt där typiskt projekt där man tror att det skall ta några timmar & tillslut visar det sig att det tar 10ggr längre tid än vad man tänkt
Jag utvecklade en
GPX parser 2019 & har sedan dess laddat upp alla(?) tränings-loggar men ända sedan jag har jag viljat lägga till segment också, det har alltså dröjt 3 år tills jag fick tummen ur 😂
Inför utvecklingen hade jag funderat på hur jag skulle gå tillväga, finns alltid 100 olika sätt att göra samma sak på så jag fastnade inte på bara en lösning, så bara att köra igång & testa, jag testade massa olika tillvägagångssätt & till slut landade jag på nedanstående, tror det är hyffsat optimerat, mitt första försök tog 500 databasanrop & 20s att parsa för en 1 timmes cykeltur, nuvarande implementering tar 2s & ~50st databasanrop, antalet databasanrop låter högt men jag gör 1 var 500:e meter; detta kan ökas rejält men just nu finns det ingen anledning när detta är något som görs 3-4 gånger i veckan på sin höjd, hade detta varit en kommersiell sida där detta körs flera gånger i sekunden så hade det varit en annan femma
Att skapa själva segmenten var ju inget större problem; alla GPX filer är ju sparade efter att dom parsats så jag gjorde bara en tabell med alla träningstillfällen & använde dom för att skapa segment:
Så; fyll i namn, klicka i "histogramet" för att välja start & slut long/lat & sen klicka på spara, efter det så går parsern igenom GPX filen & räknar ut segmentets distans, höjdmeter (upp & ner), genomsnittlig lutning osv osv (visar inte all information i segment tabellen, bara dom viktigaste), jag sparar resultatet i databasen + start long/lat & slut long/lat för att lättare kunna söka efter segment baserad på geografisk data. När jag laddar upp en träningsrunda så sparar jag inte några av datapunkterna i en databas, det är ju 1 datapunkt per sekund så det skulle bli några miljoner rader i databasen till ingen egentlig nytta, hade ju kunnat spara % 10 av punkterna kanske men äh 🤷♂️
Läs mer...