| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
記録した GPS トラック(GPX)から、獲得標高・勾配・ラップ・標高プロファイル SVG を、 クラウドに上げず・スクリプトから・図として取り出す単一バイナリの CLI。reachtrail の派生だが、 アプリではなく、スクリプトから使える解析ツールという別の立ち位置。依存ゼロ・ネットワークアクセスなし。
↑ この図は vertcut 自身が生成(vertcut docs/sample.gpx --profile docs/sample-profile.svg)。外部依存ゼロの自己完結 SVG。
# 自分のトラックを、上げずに、その場で数値化
vertcut ride.gpx
# JSON で取り出してパイプ(自作の集計・ダッシュボード・メモへ)
vertcut ride.gpx --json | jq '{gain_m, grade_max}'
# 記事や README にそのまま貼れる、依存ゼロの SVG プロファイル
vertcut ride.gpx --profile profile.svg統計を「見る」だけなら Strava / Garmin で十分。vertcut が埋めるのは、その外側:
対象は「自分の GPX を、手元で・スクリプトで・図として扱いたい人」。 地名は受け取らない(入力は記録済みの GPX ファイル)。地図は描かず、標高プロファイルに専念する。
.gpx は、GPS ウォッチやアプリがラン・ライド・ハイクの記録を保存する標準形式(緯度・経度・標高・時刻)。 そうしたデータは Strava / Garmin / Komoot の中にすでにあり、エクスポートするだけで手に入る:
ウォッチは .fit で保存することも多い。上記アプリからエクスポートして .gpx を入手する。 試すだけなら、インストール不要のブラウザデモに GPX をドラッグ&ドロップ(無アップロード): https://torifo.github.io/vertcut-cli/
# ソースからビルド(Zig 0.16 以降)
git clone https://github.com/torifo/vertcut-cli && cd vertcut-cli
zig build -Doptimize=ReleaseFast # → zig-out/bin/vertcutリリースバイナリ / Homebrew は準備中。
引数なしで実行すると、組み込みサンプルでデモ出力と使い方を表示する:
vertcut # デモ + 案内
vertcut --help # 全オプションvertcut ride.gpxvertcut · ride.gpx ──────────────────────────────────────────── Points 1,284 trackpoints Distance 42.20 km (42,195 m) Climb ↑ 631 m gain ↓ 624 m loss (net +7 m) Elevation 12–138 m (range 126 m) Duration 02:11:30 · avg 19.3 km/h Grade avg 0.1 % · max +9.4 % (steepest climb) Steep 4.8 % of distance steeper than 10 % ──────────────────────────────────────────── gain/loss smoothed with a 3 m threshold
各数値には単位・意味・適用中の閾値まで添えてあり、見ただけで分かる。--threshold <m>(平滑化)/ --steep <%>(急勾配判定)で挙動を変えられる。
vertcut ride.gpx --json | jq '{gain_m, grade_max, steep_pct}'
vertcut tracks/*.gpx --json | jq -s 'map(.gain_m) | add' # 月次の総獲得標高vertcut ride.gpx --profile profile.svg自己完結(外部フォント / スクリプト / 画像なし)なので、<img src="profile.svg"> で貼るだけ。
vertcut ride.gpx --laps 1km # 距離で分割(500m なども可)
vertcut ride.gpx --laps 10min # 時間で分割(30s なども可)cat ride.gpx | vertcut - # stdin から読む
vertcut a.gpx b.gpx c.gpx # ファイルごとに結果を出力| フィールド | 型 | 意味 |
|---|---|---|
| point_count | int | トラックポイント数 |
| distance_m | float | 総距離(m) |
| gain_m / loss_m | float | 獲得 / 損失標高(m、閾値ヒステリシス適用後) |
| ele_min / ele_max | float | null | 最低 / 最高標高(m) |
| elapsed_s | int | null | 経過時間(秒、タイムスタンプがあれば) |
| grade_avg | float | 平均勾配(%) |
| grade_max | float | 最大勾配(%、最急登坂=符号付き最大) |
| steep_pct | float | 急勾配が占める距離割合(%) |
| laps[] | array | {index, distance_m, gain_m, duration_s} |
v1 の入力は GPX のみ(FIT / TCX は対象外)。完全オフライン・依存ゼロ・地図描画なし。
zig build # ビルド
zig build test --summary all # 全テスト(35 件)テストは haversine 距離・標高ヒステリシス・勾配 / ラップ・GPX パース・JSON / SVG 出力に加え、 基準トラックで獲得標高が 1% 以内に収まる精度ゲートと、最大勾配の符号回帰を含む。
| Back | FazBrowse Home | New Git URL |