Converter GPX para TCX

Aqui você converte GPX para TCX de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Reconstruído TCX funciona de um jeito diferente de GPX. Não é a degradação gradual de um codec com perda: o que TCX consegue expressar é reproduzido fielmente, e o que não tem equivalente ali não sobrevive de jeito nenhum.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.
  • Vale saber Posições, altitude e marcações de tempo vão junto. Dados de sensores, estilos e imagens incorporadas não.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Por que uma trilha gravada precisa virar arquivo de treino

Muito aplicativo grava um pedal ou uma corrida perfeitamente bem e exporta só GPX: apps de celular, coletores de dados mais antigos, loggers de código aberto, qualquer coisa que trate um percurso como geografia e não como treino. As plataformas do outro lado — Garmin Connect, TrainingPeaks, o painel de um treinador — são construídas em torno de atividades, e uma atividade tem um início, uma duração, uma distância e uma modalidade antes de ter um formato.

Esta conversão faz essa ponte. Ela pega a geometria que o GPX guarda e coloca ao redor as declarações estruturais que um leitor de TCX exige, então o arquivo entra como uma sessão em vez de ser rejeitado ou cair numa biblioteca de rotas. O que ela não consegue fazer é colocar no arquivo informação que o GPX nunca continha, e a diferença entre essas duas coisas é a maior parte do que vem a seguir.

As cinco declarações sem as quais um lap de TCX não abre

O Training Center XML é rígido onde o GPX é permissivo. Todo `<Lap>` precisa declarar `StartTime`, `TotalTimeSeconds`, `DistanceMeters`, um `<Intensity>` e um `<TriggerMethod>`, e toda `<Activity>` precisa declarar um `Sport` de uma lista fixa. Um arquivo faltando qualquer um desses não é lido com tolerância; o Garmin Connect recusa, e essa é a razão mais comum de um TCX montado à mão falhar ao importar.

Então todos os cinco são gravados. Intensity vira `Active` e TriggerMethod vira `Manual`, que são os valores neutros e os honestos para um arquivo que nunca teve laps marcados por um aparelho. O Id da atividade é definido como o horário de início, como o esquema pretende. Os três restantes — início, duração e distância — são derivados dos pontos da trilha, e cada um tem um jeito próprio de dar errado, que as próximas seções explicam.

O número de distância é calculado, não carregado

Um GPX não guarda distância em lugar nenhum. O número gravado em `DistanceMeters` é produzido percorrendo os pontos da trilha em ordem e somando a distância em grande círculo entre cada par consecutivo, usando uma Terra esférica de raio 6.371.000 metros. Contra um cálculo elipsoidal apropriado, isso é preciso a poucas partes em mil, o que fica bem abaixo do ruído já presente na entrada.

Duas propriedades dessa soma valem saber. Ela ignora variação de altitude, e isso importa menos do que o instinto sugere: uma trilha subindo 1.000 metros ao longo de 40 quilômetros dá 40.012 metros ao longo do declive em vez de 40.000, uma diferença de três centésimos de por cento. O que importa de verdade é o ruído do receptor — cada tremulação entre duas amostras é somada em vez de cancelada, então uma trilha gravada com muita densidade mede um pouco a mais, e o próprio número do aparelho, filtrado ou tirado de um sensor de roda, costuma ser o valor menor e melhor.

A duração é uma subtração de dois horários, com uma armadilha embaixo

TotalTimeSeconds é a diferença entre o primeiro e o último horário de ponto na trilha, em segundos, arredondada para um número inteiro. Para um pedal gravado, isso é tempo decorrido, não tempo em movimento: uma parada de quarenta minutos num café no meio do trajeto entra no total, porque o arquivo registra quando o receptor estava em algum lugar, não se estava se movendo.

A armadilha é um GPX sem nenhum horário registrado, que é como sai uma rota planejada exportada de um planejador de rotas. Não há nada para subtrair, então a duração sai zero, e como um lap ainda precisa declarar um horário de início, o epoch é gravado no lugar — a atividade aparece datada de 1º de janeiro de 1970 com duração de nada. É válido pelo esquema e é um absurdo como treino. Se o seu GPX é um plano, e não uma gravação, converta para um formato de rota e carregue como percurso planejado, não como atividade.

Toda atividade convertida declara a modalidade "Outro"

O atributo Sport é gravado como `Other` em toda atividade. O TCX restringe o valor a uma lista curta, um GPX não tem campo nenhum que diga o que era a gravação, e adivinhar pela velocidade média seria uma fabricação que acerta na maioria das vezes — o que é o pior tipo de erro, porque erra de forma invisível.

O efeito prático são alguns segundos de trabalho depois de importar. Garmin Connect, Strava e TrainingPeaks deixam mudar o tipo de uma atividade depois do fato, e fazer isso recalcula tudo que depende disso. Vale fazer, em vez de deixar como está: modelos de carga de treino, zonas de ritmo e detecção de melhor marca pessoal dependem todos da modalidade, e uma sessão arquivada como `Other` fica silenciosamente fora da maioria deles.

Reembrulhar o arquivo não cria nenhum fluxo de sensor

Um TCX pode guardar frequência cardíaca, cadência, potência e distância por ponto, e um TCX convertido não guarda nenhum deles. Onde um GPX carregava frequência cardíaca num bloco `<extensions>` — o que muitos relógios fazem, usando o namespace TrackPointExtension da própria Garmin — esses valores não são lidos, então não reaparecem no TCX mesmo o formato de destino tendo um lugar para eles.

Essa é uma limitação real desta conversão e vale dizer isso claramente, porque a mudança de formato dá a impressão de que dados de treino deveriam ter chegado junto. Não chegaram. Se existe dado de sensor no seu GPX e você precisa dele no TCX, a conversão certa não é esta: exporte a sessão de novo a partir de onde ela foi gravada, escolhendo TCX ou FIT já na origem, e os fluxos saem anexados aos pontos desde o início.

Um lap só, e a estrutura de intervalos que você não vai ver

Cada trilha vira uma atividade contendo exatamente um lap, cobrindo a gravação inteira. O GPX não tem noção de lap — uma fronteira de `<trkseg>` marca uma queda de sinal, não um clique de botão — então não há nada na origem para mapear em divisões de lap, e nenhuma é inventada.

Para um pedal constante, isso é uma representação fiel. Para uma sessão de tiros, isso achata o que você fez: doze repetições chegam como um esforço contínuo só, e as divisões de lap, as médias por lap e os intervalos de descanso que um treinador lê primeiro estão ausentes. A maioria das plataformas deixa dividir uma atividade manualmente depois do upload, o que reconstrói as fronteiras mas não a frequência cardíaca por lap que o aparelho original teria resumido.

O que acontece com um GPX feito só de waypoints

Um treino não tem noção de waypoint. Onde um GPX contém trilhas, os waypoints simplesmente ficam de fora do TCX, porque não existe elemento que guardaria eles, e um elemento inventado quebraria o esquema para todo leitor.

Um GPX contendo só waypoints é tratado de outro jeito, não rejeitado: os pontos são tratados como uma trilha só, na ordem em que o arquivo listou eles, então o resultado é uma atividade válida descrevendo "estas posições, nesta sequência". Se isso faz sentido depende inteiramente do arquivo. Uma série de marcos de agrimensura converte numa atividade que alega uma distância que ninguém percorreu, e para essa origem o CSV ou uma rota GPX é o honesto.

Várias trilhas entram, várias atividades saem

Um GPX com mais de um `<trk>` produz mais de uma `<Activity>` no TCX, cada uma com seu próprio lap, sua própria distância calculada e seu próprio horário de início tirado do primeiro ponto dela. Rotas guardadas como `<rte>` são tratadas do mesmo jeito, o que explica por que um arquivo mesclando os treinos de uma semana inteira converte em uma semana de sessões separadas, e não numa sessão única inverossímil.

Nem todo importador trata um TCX com várias atividades da mesma forma. Alguns dividem automaticamente em entradas separadas, outros pegam só a primeira e ignoram o resto. Se o upload voltar com uma sessão quando você esperava cinco, dividir o GPX antes de converter é o conserto confiável, e também permite nomear e rotular cada uma corretamente na entrada.

O treino é montado localmente antes de você enviar para qualquer lugar

Ler o GPX e escrever o TCX acontecem os dois nesta aba do navegador, sem nenhum pedido carregando o arquivo para um servidor — conferível no painel de rede enquanto a conversão roda. Você vai enviar o resultado para algum lugar de propósito, que é o objetivo da conversão, mas esse é um destino que você escolheu, não dois.

Vale destacar essa distinção porque arquivos de treino são dado de saúde e localização juntos. Um TCX convertido diz onde alguém estava, minuto a minuto, durante toda a sessão, e está prestes a ser entregue a uma plataforma com sua própria política de retenção. Colocar um conversor web gratuito na frente disso é um segundo processador de dados sem nenhum acordo por trás, exatamente o passo que fazer a conversão localmente elimina.

Como converter GPX para TCX

  1. Solte o seu arquivo GPX nesta página, ou clique para escolher um.
  2. Escolha TCX como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo TCX pronto.

GPX ou TCX: o que muda

GPX comparado com TCX
GPXTCX
Nome completoGPS Exchange FormatTraining Center XML
Extensão do arquivo.gpx.tcx
Tipo de mídiaapplication/gpx+xmlapplication/vnd.garmin.tcx+xml
Publicado pela primeira vez20022007
Publicado porTopografixGarmin
EspecificaçãoGPX 1.1Training Center XML
LicençaPadrão abertoPublicado, não padronizado
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarKMLFIT

Abrir o resultado

Strava lê tanto GPX quanto TCX, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

GPX é o formato da Topografix, publicado em 2002. Está descrito em GPX 1.1, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

TCX vem da Garmin é de 2007, descrito em Training Center XML. Garmin Connect, Strava e TrainingPeaks leem o formato.

De GPX para TCX: perguntas frequentes

Meu arquivo GPX é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter GPX para TCX é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter GPX para TCX?

GPX e TCX descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Posições, altitude e marcações de tempo vão junto. Dados de sensores, estilos e imagens incorporadas não.

Preciso instalar alguma coisa para abrir um arquivo TCX?

Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe Training Center XML.

Mais sobre esses formatos