22 May 2025

国土地理院地図の断面図をCSVエクスポートし、登山用GPXファイルを作成する

ヤマレコの登山計画でGPXファイルエクスポートができなくなったため、国土地理院地図でGPXファイルを作成することにした。

国土地理院地図でルートのCSVファイルを作成

20250522-gsimap-01.jpg
国土地理院地図のWebサイトを開き、「ツール」→「断面図」をクリック

20250522-gsimap-02.jpg
登山ルートとなる線を引いていく (右クリックでノード追加、ノード上で左クリックで削除)

20250522-gsimap-03.jpg
最終ノードを左ダブルクリックで終えると、断面図ダイアログが表示される

20250522-gsimap-04.jpg
「グラフを保存」をクリックし、さらに「CSVファイルに保存」をクリック

次のようなCSVファイルが作成される

「断面図」の「グラフを保存」で出力したCSVデータ
lat,lng,elevation,distance
34.718870,135.644706,43.71,0
34.718996,135.644716,43.98,13
34.719121,135.644726,48.33,27
34.719246,135.644736,48.69,41
34.719372,135.644746,63.54,55
〜 以下省略 〜

CSVファイルをGPXファイルに変換する

AIに変換スクリプトを作ってもらう

Microsoft Copilot AIへの指示
地理院地図Vectorで作成した断面図グラフCSVファイルを、GPXファイルに変換したい。 断面図グラフCSVの書式は次のようなものである。

lat,lng,elevation,distance
34.719034,135.644501,44.6,0
34.719161,135.644496,48.68,14
34.719287,135.644491,51.05,28
34.719400,135.644524,55.68,42
34.719480,135.644643,64.37,56

変換スクリプトのコア部分だけの回答が示されるので...

Microsoft Copilot AIへの指示
command.py [入力ファイル.CSV] として、出力は標準出力としてスクリプトを実行可能な形に完成してください

次に示すのが、Microsoft Copilot AIが作成したPythonスクリプト

command.py [Pythonスクリプトファイルをダウンロードする ]
import csv
import sys

def csv_to_gpx(csv_filename):
    with open(csv_filename, newline='', encoding='utf-8') as csvfile:
        reader = csv.DictReader(csvfile)
        
        print('<?xml version="1.0" encoding="UTF-8"?>')
        print('<gpx version="1.1" creator="CSV to GPX Converter">')
        print('  <trk>')
        print('    <trkseg>')

        for row in reader:
            print(f'      <trkpt lat="{row["lat"]}" lon="{row["lng"]}">')
            print(f'        <ele>{row["elevation"]}</ele>')
            print('      </trkpt>')

        print('    </trkseg>')
        print('  </trk>')
        print('</gpx>')

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python command.py [input_file.csv]")
        sys.exit(1)

    csv_to_gpx(sys.argv[1])