브라우저 안에서 운동 기록을 읽는다는 것
파일이 왜 서버로 안 가는지, 세 형식이 무엇을 담는지, 숫자가 어떻게 나오는지 순서대로 적었습니다.
파일을 안 올린다는 것의 뜻
운동 기록에는 언제 어디에 있었는지가 초 단위로 들어 있습니다. 집 앞에서 출발해 집 앞으로 돌아오는 달리기 기록은 사는 곳을 그대로 말합니다. 그래서 이 파일을 남의 서버에 올리는 일은 사진을 올리는 것과 무게가 다릅니다.
이 도구는 파일을 받지 않습니다. 고르신 파일은 브라우저가 이 기기의 메모리로 읽어 들이고, 읽고 셈하고 그리는 일이 전부 그 안에서 끝납니다. 우리 서버가 받는 것은 화면을 열었는지 파일을 골랐는지 같은 단계 이름뿐입니다.
정말 그런지는 믿어 달라고 할 일이 아닙니다. 브라우저의 개발자 도구에서 네트워크 탭을 열고 파일을 고르시면 됩니다. 이 쪽 주소 말고는 아무 요청도 안 나갑니다. 홈 아래에 브라우저 기록을 그대로 세어 보여 주는 자리도 두었습니다.
GPX 와 TCX 와 FIT 의 차이
GPX 는 가장 널리 쓰이는 형식이고 글자로 된 XML 입니다. 메모장으로 열어도 읽힙니다. 안에는 좌표점이 줄지어 있고 점마다 위도와 경도가 있으며 고도와 시각이 있을 수도 없을 수도 있습니다. 심박 같은 것은 확장 자리에 들어가서 기기마다 담는 방식이 조금씩 다릅니다.
TCX 는 가민이 만든 형식이고 역시 XML 입니다. GPX 보다 운동에 가까워서 랩과 심박과 칼로리를 제자리에 담습니다. 좌표는 Trackpoint 안의 Position 에 들어갑니다.
FIT 은 가민이 만든 바이너리 형식입니다. 글자가 아니라 바이트라 메모장으로 열면 깨져 보이고, 대신 같은 내용을 훨씬 작게 담습니다. 스트라바에서 원본 내보내기를 하면 대개 이것이 나옵니다. 형식 설명이 공개돼 있어 우리가 직접 읽습니다.
세 형식 중 GPX 와 TCX 는 공개된 XML 표준이라 읽는 데 걸리는 것이 없습니다. FIT 은 가민 소유의 사양이고 기기와 앱마다 담는 밭이 달라서, 우리는 좌표와 고도와 시각과 심박만 읽고 나머지는 건너뜁니다. 못 읽는 파일이 있을 수 있고 그럴 때는 못 읽었다고 말합니다.
이 도구가 실제로 하는 일
파일을 받으면 먼저 확장자로 형식을 고릅니다. 확장자가 없거나 모르는 것이면 앞머리를 봅니다. FIT 은 아홉 번째 바이트부터 점 F I T 이라는 표시가 있고, GPX 와 TCX 는 여는 태그로 갈립니다.
좌표점을 다 읽으면 이웃한 두 점 사이 거리를 하버사인으로 재서 더합니다. 지구를 반지름 6,371,008.8m 짜리 공으로 보는 근사이고, 수 km 짜리 기록에서 오차는 0.5% 아래입니다.
상승 고도는 3m 를 문턱으로 둡니다. 점마다 고도 차이를 보되 문턱을 넘은 오르내림만 세고, 그 지점을 새 기준으로 삼습니다. 문턱 없이 양수 차이를 다 더하면 평지를 걸어도 수백 m 가 쌓입니다.
구간은 1km 마다 끊습니다. 누적 거리가 그만큼 쌓일 때마다 한 줄을 만들고, 그 구간에 걸린 시간과 오른 높이를 함께 적습니다. 마지막 구간은 대개 1km 가 안 되고 그대로 적습니다.
평균 페이스는 전체 시간을 전체 거리로 나눈 값입니다. 쉰 시간도 그대로 들어갑니다. 멈춘 동안을 빼는 앱도 있는데, 무엇을 멈춤으로 볼지가 앱마다 달라서 우리는 그 셈을 하지 않고 걸린 시간 그대로 보여 줍니다.
지나간 길은 선으로만 그립니다. 위도를 세로, 경도를 가로로 두되 경도에는 그 위도의 코사인을 곱해 가로세로가 안 일그러지게 합니다. 점이 2,000개를 넘으면 고르게 솎아 그립니다. 처음과 끝은 반드시 남깁니다.
지도 바탕을 안 까는 것은 판단입니다. 타일을 깔려면 바깥 지도 서버에 요청을 보내야 하는데, 그 요청에는 어디를 보고 있는지가 실립니다. 이 앱의 약속은 밖으로 아무것도 안 나가는 것이라 그 요청 하나가 약속을 깹니다. 대신 길의 생김새와 축척 막대를 그려서 어디였는지 알아볼 수 있게 했습니다.
기기에서 파일 꺼내는 법
스트라바는 웹사이트에서만 내보내기가 됩니다. 활동 페이지의 점 세 개 메뉴에서 원본 내보내기를 고르면 올릴 때 쓴 형식이 그대로 나오고 대개 FIT 입니다. GPX 내보내기도 같은 자리에 있습니다. 모바일 앱에서는 이 메뉴가 없습니다.
계정 전체를 받으려면 설정의 계정 항목에서 내 계정 내려받기를 청합니다. 메일로 링크가 오는데 몇 시간 걸립니다.
가민 커넥트는 활동 상세 화면에서 원본 파일을 내려받을 수 있고 FIT 으로 나옵니다. 애플 워치 기록은 건강 앱이 직접 GPX 를 주지 않아서, 기록을 스트라바나 다른 앱에 연결해 두고 그쪽에서 내보내는 편이 빠릅니다.
국내 등산 앱에서 뽑은 파일도 GPX 면 그대로 읽힙니다. 앱마다 내보내기 자리가 다르니 그쪽 도움말을 보세요.
거리와 상승 고도가 다른 앱과 다른 이유
같은 파일을 여러 앱에 넣으면 거리가 조금씩 다릅니다. 점과 점 사이를 직선으로 잇는 것은 같은데, 흔들리는 점을 걸러 내는 방식이 앱마다 다르기 때문입니다. 우리는 거르지 않고 파일에 있는 점을 그대로 씁니다. 파일이 말한 것과 화면이 말한 것이 어긋나지 않게 하려는 것입니다.
상승 고도는 차이가 더 큽니다. 문턱을 몇 m 로 두느냐가 결과를 몇 배로 가릅니다. 우리 문턱은 3m 이고 화면에 그 숫자를 적어 둡니다. 기기 회사들은 저마다 다른 값을 쓰고 공개하지 않는 곳이 많습니다.
기압계가 있는 시계로 잰 고도는 GPS 고도보다 훨씬 안정적입니다. 같은 산을 올라도 기압계 기록은 매끈하고 GPS 기록은 톱니처럼 떨립니다. 파일에 어느 쪽이 들었는지는 파일이 말하지 않으므로 우리도 구분하지 않습니다.
평균 페이스가 기억보다 느리게 나오면 대개 쉰 시간 때문입니다. 위에 적었듯 우리는 멈춤을 빼지 않습니다. 구간 표를 보시면 어느 구간에서 시간이 늘었는지 바로 보입니다.
자주 막히는 부분
파일을 골랐는데 못 읽었다고 나오면 먼저 확장자를 보세요. 압축 파일 안에 들어 있는 채로 고르면 못 읽습니다. 먼저 풀고 안에 있는 gpx 나 fit 을 고르세요.
경로만 있고 시각이 없는 GPX 가 있습니다. 남이 만든 등산 코스 파일이 대개 그렇습니다. 이 경우 거리와 고도는 나오지만 시간과 페이스 자리는 없음으로 나옵니다. 파일에 없는 것을 지어내지 않기 때문입니다.
고도가 없는 파일도 있습니다. 그러면 고도 그래프를 안 그리고 상승 고도 자리도 없음으로 둡니다.
FIT 을 못 읽는다고 나오면 그 기기가 담는 방식이 우리가 읽는 자리와 다른 것입니다. 같은 활동을 GPX 나 TCX 로 다시 내보내 보세요. 스트라바에서는 활동 주소 뒤에 export_tcx 를 붙이면 TCX 가 나옵니다.
결과는 이 화면에만 있습니다. 새로 고치면 사라지고 서버에는 아무것도 안 남습니다. 남기려면 화면을 갈무리하세요.
출처와 확인일
- 스트라바 고객센터, 활동 내보내기 (2026-09-16)
- OpenStreetMap 재단, 타일 사용 정책 (2026-09-16)
- topografix GPX 1.1 스키마 문서 (2026-09-16)
- 가민 개발자 문서, FIT 개요 (2026-09-16)
- IUGG 평균 지구 반지름 6,371,008.8m (2026-09-16)