ヤマレコの「山のデータ」に登録されている地名をGPXファイルにする方法を説明します。
GPXファイルを読み込める登山地図アプリ(iPhoneのスーパー地形、Androidの地図ロイドなど)に、山頂や峠の登録データを表示させることができます。
【注意事項】
ヤマレコ Web APIを使うことになりますので、以下の利用規約を遵守するようにしましょう。
https://www.yamareco.com/modules/pico/index.php?content_id=57
https://www.yamareco.com/modules/pico/index.php?content_id=58
なお、ヤマノートの制約上、画像が小さく表示されていますが、クリックをすることで拡大できます。
Windowsで作業する場合には、こちらのページをご覧ください。
https://www.yamareco.com/modules/yamanote/itemedit.php?nid=3537
9/9 初稿公開
9/10 ファイル出力の方法を追記
9/20 JIS第3水準等の漢字が文字化けすることを追記。
GPXファイルを読み込める登山地図アプリ(iPhoneのスーパー地形、Androidの地図ロイドなど)に、山頂や峠の登録データを表示させることができます。
【注意事項】
ヤマレコ Web APIを使うことになりますので、以下の利用規約を遵守するようにしましょう。
https://www.yamareco.com/modules/pico/index.php?content_id=57
https://www.yamareco.com/modules/pico/index.php?content_id=58
なお、ヤマノートの制約上、画像が小さく表示されていますが、クリックをすることで拡大できます。
Windowsで作業する場合には、こちらのページをご覧ください。
https://www.yamareco.com/modules/yamanote/itemedit.php?nid=3537
9/9 初稿公開
9/10 ファイル出力の方法を追記
9/20 JIS第3水準等の漢字が文字化けすることを追記。
Homebrewとjqコマンドをインストールする
ヤマレコAPIにはMacの「ターミナル」を使ってアクセスします。
APIからのレスポンスを整形したり、必要なデータを取り出すために「Homebrew」というパーケージ管理ソフトを使って「jqコマンド」をインストールする必要があります。
Homebrewのインストール方法は、例えば以下のホームページを参考にしてください。
https://aiacademy.jp/media/?p=2817
https://and-engineer.com/articles/Y-u1qBAAACMARTi2
jqコマンドのインストール方法は、例えば以下のホームページを参考にしてください。
https://qiita.com/ponsuke0531/items/aa405a0f897cd0a78a8c
https://blog.junpeko.com/jq-command
APIからのレスポンスを整形したり、必要なデータを取り出すために「Homebrew」というパーケージ管理ソフトを使って「jqコマンド」をインストールする必要があります。
Homebrewのインストール方法は、例えば以下のホームページを参考にしてください。
https://aiacademy.jp/media/?p=2817
https://and-engineer.com/articles/Y-u1qBAAACMARTi2
jqコマンドのインストール方法は、例えば以下のホームページを参考にしてください。
https://qiita.com/ponsuke0531/items/aa405a0f897cd0a78a8c
https://blog.junpeko.com/jq-command
ヤマレコ Web APIの使い方を理解する
ヤマレコ Web APIと、jqコマンドの使い方の例は以下のホームページに記載されています。
https://moritomo7315.hatenablog.com/entry/2019/12/29/224046
※ただし、上記ページに記載されている百名山の抽出はうまくいきませんのでご注意ください。
また、自分の欲しいデータを抽出できるようにするため、APIの仕様もさっと見ておきましょう。
https://sites.google.com/site/apiforyamareco/api/rest-api
https://sites.google.com/site/apiforyamareco/api/api_other
https://moritomo7315.hatenablog.com/entry/2019/12/29/224046
※ただし、上記ページに記載されている百名山の抽出はうまくいきませんのでご注意ください。
また、自分の欲しいデータを抽出できるようにするため、APIの仕様もさっと見ておきましょう。
https://sites.google.com/site/apiforyamareco/api/rest-api
https://sites.google.com/site/apiforyamareco/api/api_other
「データ種別リスト」と「エリアリスト」
それではヤマレコ Web APIを使って、「データ種別リスト」と「エリアリスト」を出力させてみましょう。
「データ種別リスト」、「エリアリスト」の出力は、以下のコマンドで実行します。
(ここに記載しているコマンドを「ターミナル」に貼り付ければ実行できます。)
jqコマンドを組み合わせることによって、レスポンスをカンマ区切りで表示させています。
【データ種別リスト】
curl https://api.yamareco.com/api/v1/getTypelist | jq -r '.typelist[] | .result =.type_id+","+.name | .result'
【エリアリスト】
curl https://api.yamareco.com/api/v1/getArealist | jq -r '.arealist[] | .result =.area_id+","+.area | .result'
出力結果は画像をご確認ください。
(ここに記載しているコマンドを「ターミナル」に貼り付ければ実行できます。)
jqコマンドを組み合わせることによって、レスポンスをカンマ区切りで表示させています。
【データ種別リスト】
curl https://api.yamareco.com/api/v1/getTypelist | jq -r '.typelist[] | .result =.type_id+","+.name | .result'
【エリアリスト】
curl https://api.yamareco.com/api/v1/getArealist | jq -r '.arealist[] | .result =.area_id+","+.area | .result'
出力結果は画像をご確認ください。
この出力結果から、山頂データの「type_id」は1、関東地方の「area_id」は300であることがわかります。
「山頂データ」の出力
それではいよいよ山頂データを出力させてみましょう。
関東地方(area_id=300)の山頂データ(type_id=1)を出力させたい場合、以下のコマンドになります。
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=1&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result'
ID、山頂名、標高、北緯、東経のリストとなります。
関東地方(area_id=300)の山頂データ(type_id=1)を出力させたい場合、以下のコマンドになります。
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=1&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result'
ID、山頂名、標高、北緯、東経のリストとなります。
連続で出力させる
先程のコマンドで、page=1のところを2,3,4,...に変更すれば、順次データの取得ができますが、該当件数が多い場合には結構大変です。例えば関東地方の山頂データの場合54ページもありますので、手作業だとコマンドを50回以上コピー&ペーストする必要があります。
このため、for文を使って、コマンドを連続で実行させることにします。
なお、サーバーに負担をかけないよう、コマンドを1回実行するごとに3秒間空ける設定にしています。この点は必ず守るようにしてください。
for i in `seq 1 10`
do
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result'
sleep 3
done
このコマンドを実行することで10ページ分がまとめて出力されます。
出力されたデータをターミナルから、テキストファイルにコピー&ペーストします。
11ページ目以降を出力させるには、`seq 1 10`のところを、`seq 11 20`等と順次書き換えていけばよいです。
また、コマンドの後ろに「>>(ファイル名).txt」とつければ、ファイル出力をすることも可能です。
ファイルはコマンドプロンプトの作業ディレクトリに保存されます。
(通常は、起動ディスクの「ユーザー」-「(ユーザー名)」)
ファイル出力をする場合には、途中経過が見えないので十分にテストした上で行ってください。
※以下は、1〜3ページ分を出力テストする例です。
for i in `seq 1 3`
do
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result' >> poilist.txt
sleep 5
done
このため、for文を使って、コマンドを連続で実行させることにします。
なお、サーバーに負担をかけないよう、コマンドを1回実行するごとに3秒間空ける設定にしています。この点は必ず守るようにしてください。
for i in `seq 1 10`
do
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result'
sleep 3
done
このコマンドを実行することで10ページ分がまとめて出力されます。
出力されたデータをターミナルから、テキストファイルにコピー&ペーストします。
11ページ目以降を出力させるには、`seq 1 10`のところを、`seq 11 20`等と順次書き換えていけばよいです。
また、コマンドの後ろに「>>(ファイル名).txt」とつければ、ファイル出力をすることも可能です。
ファイルはコマンドプロンプトの作業ディレクトリに保存されます。
(通常は、起動ディスクの「ユーザー」-「(ユーザー名)」)
ファイル出力をする場合には、途中経過が見えないので十分にテストした上で行ってください。
※以下は、1〜3ページ分を出力テストする例です。
for i in `seq 1 3`
do
curl -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq -r '.poilist[] | .result =.ptid+","+.name+","+.elevation+","+.lat+","+.lon | .result' >> poilist.txt
sleep 5
done
Excelで編集し、CSVファイルとして保存
出力データのコピー&ペーストが終了したら、Excelファイルで列名をつけます。
山名列は「name」、標高列は「ele」とします。
また、スーパー地形で標高をポップアップさせたい場合には、「cmt」という列を作成し、標高のデータをコピーしておきます。(地図ロイドの場合には不要です)
山名列は「name」、標高列は「ele」とします。
また、スーパー地形で標高をポップアップさせたい場合には、「cmt」という列を作成し、標高のデータをコピーしておきます。(地図ロイドの場合には不要です)
編集が終わったらcsv形式で保存してください。
QGISでGPXファイルに変換
ここから先の手順は、「三角点データを登山地図アプリに表示(QGIS版)」に記載のとおりです。
https://www.yamareco.com/modules/yamanote/detail.php?nid=3522
文字コードは「UTF8」 ※「サンプルデータ」が文字化けしていないことを確認
ジオメトリは「EPSG:4326 - WGS 84」に設定して読み込めば良いです。
なお、ヤマレコの「山のデータ」は誰でも登録できますので、座標等に間違いがある場合もあります。
QGISで開いたときに明らかに間違いであったり、不要な範囲のデータについては、削除すると良いでしょう。
https://www.yamareco.com/modules/yamanote/detail.php?nid=3522
文字コードは「UTF8」 ※「サンプルデータ」が文字化けしていないことを確認
ジオメトリは「EPSG:4326 - WGS 84」に設定して読み込めば良いです。
なお、ヤマレコの「山のデータ」は誰でも登録できますので、座標等に間違いがある場合もあります。
QGISで開いたときに明らかに間違いであったり、不要な範囲のデータについては、削除すると良いでしょう。
スーパー地形での表示例
座標精度は十分実用になるレベルです。
山頂を訪問して間違いを見つけた場合には、ヤマレコのデータを修正すると良いでしょう。
山頂を訪問して間違いを見つけた場合には、ヤマレコのデータを修正すると良いでしょう。
また、地図アプリでは、地域ごと、種類ごとに分けて保存しておくと、一括で表示・非表示、アイコン変更などができて便利です。
なお、JIS第3水準等の漢字を使っている地名の場合、ヤマレコAPIからの出力時点で文字化けをしてしまうようです。ごく一部のデータですが、気になるようであれば登山地図アプリ取り込み後に修正するのが良いでしょう。ちなみに関東の山頂データだと、橅ノ平の「ぶな」、賀?の峯(かびれのみね)の「び」の2つの漢字が文字化けをしています。
お気に入り登録-人
拍手で応援
訪問者数:72人
ひろーさんの記事一覧
-
登山地図アプリ「地図ロイド」のすすめ 32 更新日:2023年09月14日
-
ヤマレコ「山のデータ」をGPXファイル化する(Windows版) 5 更新日:2023年09月20日
-
ヤマレコ「山のデータ」をGPXファイル化する(Mac版) 1 更新日:2023年09月20日
※この記事はヤマレコの「ヤマノート」機能を利用して作られています。
どなたでも、山に関する知識や技術などのノウハウを簡単に残して共有できます。
ぜひご協力ください!
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する