Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
Hier zet je KML naar TCX om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.
Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.
Ze worden een voor een omgezet en samen in één ZIP gedownload.
KML naar TCX
Open de KML in een teksteditor en zoek naar de tekst «when». Staat die erin, dan bevat het bestand een gx:Track met echte tijdstempels en levert deze omzetting een zinnige activiteit op. Staat hij er niet — en bij alles wat met de hand getekend is, staat hij er niet — dan is het bestand een vorm zonder klok, en wordt de TCX een training die beweert om middernacht op 1 januari 1970 begonnen te zijn en geen tijd gekost te hebben.
Dat is geen bug om te omzeilen; het is wat de bron bevat. TCX is een verslag van een trainingssessie, en een sessie wordt bepaald door wanneer ze begon en hoelang ze duurde, nog voor waar ze naartoe ging. Een lijn op een kaart heeft geen van beide eigenschappen. Faalt jouw KML deze test, dan is een routeformaat de eerlijke bestemming — zie de laatste sectie.
Het TCX-schema vereist een StartTime-attribuut op elke Lap en een Id op elke Activity, en beide zijn tijdstempels. Zonder tijden in de bron is er niets te lezen, dus wordt het Unix-epoch — 1970-01-01T00:00:00.000Z — in beide geschreven, en TotalTimeSeconds wordt nul omdat het verschil tussen eerste en laatste puntentijd niet te berekenen is.
Het resulterende bestand is schemageldig, wat verklaart waarom het geüpload wordt in plaats van geweigerd. Wat het verderop doet, is minder netjes. Een platform dat activiteiten op datum sorteert, zet deze vijftig jaar vóór alles; een trainingsbelastingberekening over een sessie van nul seconden deelt door nul of negeert hem.
Een gx:Track is Google’s uitbreiding voor opgenomen data: parallelle lijsten van when-tijdstempels en coord-posities, geschreven door tools die gps-sporen als KML exporteren in plaats van als GPX. Zo’n track wordt als apart geval gelezen, en de tijdstempels komen terecht in het Time-element van elk TCX-trackpunt.
Heb je dat, dan werkt alles verderop naar behoren. De startlap komt uit het eerste punt, de duur is de echte verstreken tijd, en de activiteit belandt op de juiste plek in een trainingslogboek. Dit is een echt bruikbaar pad voor iedereen wiens opnamesoftware KML exporteert en wiens coach Garmin-bestanden wil.
Een TCX-lap moet een DistanceMeters opgeven, en een KML slaat er geen op, dus wordt het cijfer berekend door de grootcirkelafstand tussen opeenvolgende hoekpunten op een bol met straal 6.371.000 meter op te tellen. Tegenover een ellipsoïdeberekening is dat nauwkeurig tot een paar duizendste, geen foutbron om je zorgen om te maken.
De echte foutbron is de vorm van de invoer. Een met de hand getekende lijn heeft een hoekpunt waar je klikte, dus elke bocht is vervangen door de rechte koorde erover. Een weg met vijftien haarspeldbochten getekend in zes klikken is meetbaar korter dan de weg, en de activiteit claimt dat kortere getal als feit.
Drie velden krijgen vaste waarden omdat niets in een KML ermee overeenkomt. De activiteit-Sport is Other, want het schema staat maar een korte opsomming toe en een getekende lijn zegt niets over de discipline. Intensity is Active en TriggerMethod is Manual, de eerlijke waarden voor een lap die geen apparaat ooit startte of stopte.
Alle drie zijn het waard om na import te corrigeren als de activiteit blijft staan. De meeste platformen laten je het type achteraf wijzigen, en dat telt meer dan het lijkt — trainingsbelastingmodellen en tempozones zijn allemaal gekoppeld aan de discipline, dus een sessie als Other stilzwijgend buiten de meeste ervan gehouden.
Een training kent geen waypoint-concept, dus waar de KML lijnen bevat, worden de puntplaatsmarkeringen simpelweg weggelaten. Er is geen TCX-element dat ze zou kunnen bevatten, en er een verzinnen zou een bestand opleveren dat voor elke lezer de validatie faalt.
Een KML die uitsluitend uit speldjes bestaat, wordt verwerkt in plaats van geweigerd: de punten worden als één track in documentvolgorde gelezen, wat een activiteit oplevert die een route tussen hen claimt. Of dat betekenis heeft, hangt af van wat de speldjes waren.
De derde waarde van een KML-coördinaat wordt AltitudeMeters op het trackpunt. Google Earth, dat een lijn langs het terrein tekent, schrijft die waarde als 0 op elk hoekpunt omdat de renderer hem negeert, dus draagt een omgezette TCX vaak een hoogte van nul van begin tot eind.
Een trainingsplatform dat dat bestand leest, meldt geen stijging en een vlak profiel — een correcte interpretatie van de cijfers die het kreeg. Laat de KML de derde waarde helemaal weg, zoals My Maps-exports vaak doen, dan wordt geen hoogte-element geschreven, en vullen de meeste platformen de hoogte zelf in vanuit hun terreinmodel.
Naast het afstandscijfer beïnvloedt het aantal hoekpunten hoe de activiteit eruitziet zodra ze in een trainingslogboek staat. Een opgenomen rit heeft elke seconde een punt; een getekende route misschien om de kilometer. Grafieken gebouwd uit het tweede type bestaan uit een handvol samples, en elke snelheid per punt die een platform uit niet-bestaande tijdstempels berekent, wordt helemaal niet berekend.
Het resultaat is een activiteit die als lijn op een kaart rendert en verder overal leeg blijft — geen tempografiek, geen hoogtegrafiek, geen tussentijden. Dat is een eerlijke weergave van een bestand met veertig coördinaten en geen klok.
Is de KML een plan, zet hem dan om naar GPX en laad hem als route of course. Elk platform en apparaat heeft die functie — Garmin noemt het een course, Strava en Komoot een route — en geen ervan vereist een starttijd of een duur, want een plan hoort geen van beide te hebben.
De activiteit die je wilt, ontstaat daarna, opgenomen door het apparaat dat de course volgt, met echte tijden en echte sensordata. Dat is de volgorde waarvoor de tools ontworpen zijn, en het is aanzienlijk minder werk dan een verzonnen sessie importeren en de datum, het type en de duur met de hand corrigeren.
De KML wordt ontleed en de TCX geschreven in deze browser. Geen verzoek draagt het bestand ergens naartoe, wat het netwerkpaneel tijdens een omzetting bevestigt, en de pagina werkt offline zodra hij geladen is.
Voor een geplande route is de gevoeligheid anders dan voor een opgenomen route, maar niet nul. Een getekende lijn zegt waar iemand van plan is te zijn, en een My Maps-laag met klantbezoeken of bezichtigingen is commercieel vertrouwelijk voordat hij persoonlijk is. Lokaal omzetten betekent dat het plan geen kopie op andermans schijf krijgt als bijwerking van een gewijzigde extensie.
| KML | TCX | |
|---|---|---|
| Volledige naam | Keyhole Markup Language | Training Center XML |
| Bestandsextensie | .kml | .tcx |
| Mediatype | application/vnd.google-earth.kml+xml | application/vnd.garmin.tcx+xml |
| Voor het eerst gepubliceerd | — | 2007 |
| Uitgegeven door | Keyhole | Garmin |
| Specificatie | OGC KML 2.3 | Training Center XML |
| Licentie | Open standaard | Gepubliceerd, niet gestandaardiseerd |
| Stand van zaken | Actueel | Actueel |
| Opent in een browser | Geen browser | Geen browser |
| In plaats daarvan overwogen | KMZ, GPX | GPX, FIT |
De gebruikelijke programma's overlappen niet: KML open je in Google Earth, QGIS en ArcGIS, TCX in Garmin Connect, Strava en TrainingPeaks — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.
De twee mikken op ander werk: KML op kaarten, TCX op sportregistratie. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.
KML is het formaat van Keyhole. Het is vastgelegd in OGC KML 2.3, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.
TCX komt van Garmin en stamt uit 2007, vastgelegd in Training Center XML. Garmin Connect, Strava en TrainingPeaks lezen het formaat.
Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt.
Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk.
KML en TCX beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. Posities, hoogte en tijdcodes gaan mee. Sensorstromen, opmaak en ingesloten beeld niet.
Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat Training Center XML normaal weergeeft.