ヤマレコの「山のデータ」に登録されている地名を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
なお、ヤマノートの制約上、画像が小さく表示されていますが、クリックをすることで拡大できます。
Macで作業をする場合には、こちらのページをご覧ください。
https://www.yamareco.com/modules/yamanote/detail.php?nid=3536
9/9 初稿公開
9/10 ファイル出力の方法を追記
9/11 文字化けへの対処方法を記載
9/20 カシミール3Dに取り込む方法を追記。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
なお、ヤマノートの制約上、画像が小さく表示されていますが、クリックをすることで拡大できます。
Macで作業をする場合には、こちらのページをご覧ください。
https://www.yamareco.com/modules/yamanote/detail.php?nid=3536
9/9 初稿公開
9/10 ファイル出力の方法を追記
9/11 文字化けへの対処方法を記載
9/20 カシミール3Dに取り込む方法を追記。JIS第3水準等の漢字が文字化けすることを追記。
jqコマンドを利用可能にする
ヤマレコAPIにはWindowsの「PowerShell」を使ってアクセスします。
APIからのレスポンスを抽出・整形するため、「jqコマンド」を利用できるようにします。
jqコマンドを使えるようにする方法については、例えば以下のホームページを参考にしてください。
https://kojinjigyou.org/11852/
https://blog.serverworks.co.jp/2021/12/20/180000_2
PowerShellは、通常、WINDOWS\system32にPathが通っているため、ダウンロードしたファイルをjq.exeにリネームし、system32フォルダに入れれば使えると思います。
PowerShellを立ち上げ「jq --version」と入力し、エラーが出なければOKです。
APIからのレスポンスを抽出・整形するため、「jqコマンド」を利用できるようにします。
jqコマンドを使えるようにする方法については、例えば以下のホームページを参考にしてください。
https://kojinjigyou.org/11852/
https://blog.serverworks.co.jp/2021/12/20/180000_2
PowerShellは、通常、WINDOWS\system32にPathが通っているため、ダウンロードしたファイルをjq.exeにリネームし、system32フォルダに入れれば使えると思います。
PowerShellを立ち上げ「jq --version」と入力し、エラーが出なければOKです。
ヤマレコ 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を使って、「データ種別リスト」と「エリアリスト」を出力させてみましょう。
「データ種別リスト」、「エリアリスト」の出力は、以下のコマンドで実行します。
(ここに記載しているコマンドを「PowerShell」に貼り付ければ実行できます。)
jqコマンドを組み合わせることによって、レスポンスをカンマ区切りで表示させています。
【データ種別リスト】
curl.exe https://api.yamareco.com/api/v1/getTypelist | jq.exe ".typelist[] | [.type_id,.name] | @csv"
【エリアリスト】
curl.exe https://api.yamareco.com/api/v1/getArealist | jq.exe ".arealist[] | [.area_id,.area] | @csv"
出力結果は画像をご確認ください。
「データ種別リスト」、「エリアリスト」の出力は、以下のコマンドで実行します。
(ここに記載しているコマンドを「PowerShell」に貼り付ければ実行できます。)
jqコマンドを組み合わせることによって、レスポンスをカンマ区切りで表示させています。
【データ種別リスト】
curl.exe https://api.yamareco.com/api/v1/getTypelist | jq.exe ".typelist[] | [.type_id,.name] | @csv"
【エリアリスト】
curl.exe https://api.yamareco.com/api/v1/getArealist | jq.exe ".arealist[] | [.area_id,.area] | @csv"
出力結果は画像をご確認ください。
この出力結果から、山頂データの「type_id」は1、関東地方の「area_id」は300であることがわかります。
「山頂データ」の出力
それではいよいよ山頂データを出力させてみましょう。
関東地方(area_id=300)の山頂データ(type_id=1)を出力させたい場合、以下のコマンドになります。
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=1&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv"
ID、山頂名、標高、北緯、東経のリストとなります。
関東地方(area_id=300)の山頂データ(type_id=1)を出力させたい場合、以下のコマンドになります。
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=1&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv"
ID、山頂名、標高、北緯、東経のリストとなります。
連続で出力させる
先程のコマンドで、page=1のところを2,3,4,...に変更すれば、順次データの取得ができますが、該当件数が多い場合には結構大変です。例えば関東地方の山頂データの場合54ページもありますので、手作業だとコマンドを50回以上コピー&ペーストする必要があります。
このため、for文を使って、コマンドを連続で実行させることにします。
なお、サーバーに負担をかけないよう、コマンドを1回実行するごとに3秒間空ける設定にしています。この点は必ず守るようにしてください。
for ($i=1; $i -lt 11; $i++)
{
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv"
sleep 3
}
このコマンドを実行することで10ページ分がまとめて出力されます。
出力されたデータをターミナルから、テキストファイルにコピー&ペーストします。
11ページ目以降を出力させるには、$i=1; $i -lt 11; のところを、$i=11; $i -lt 21; 等と順次書き換えていけばよいです。
(以下参考)
また、コマンドの後ろに「>>(ファイル名).txt」とつければ、ファイル出力をすることも可能です。
ファイルはコマンドプロンプトの作業ディレクトリに保存されます。
(通常は「C:\Users\(ユーザー名)」フォルダ)
ファイル出力をする場合には、途中経過が見えないので十分にテストした上で行ってください。
※出力結果が文字化けをする場合には、以下のホームページの方法を試してみてください。
( https://kuluna.github.io/blog/post/20180512/ )
ただし、この設定をするとカシミール3Dなど古いタイプのアプリケーションで文字化けするようです。
作業が終わったら設定を戻されることをおすすめします。
※以下は、1〜3ページ分を出力テストする例です。
for ($i=1; $i -lt 4; $i++)
{
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv" >> poilist.txt
sleep 5
}
このため、for文を使って、コマンドを連続で実行させることにします。
なお、サーバーに負担をかけないよう、コマンドを1回実行するごとに3秒間空ける設定にしています。この点は必ず守るようにしてください。
for ($i=1; $i -lt 11; $i++)
{
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv"
sleep 3
}
このコマンドを実行することで10ページ分がまとめて出力されます。
出力されたデータをターミナルから、テキストファイルにコピー&ペーストします。
11ページ目以降を出力させるには、$i=1; $i -lt 11; のところを、$i=11; $i -lt 21; 等と順次書き換えていけばよいです。
(以下参考)
また、コマンドの後ろに「>>(ファイル名).txt」とつければ、ファイル出力をすることも可能です。
ファイルはコマンドプロンプトの作業ディレクトリに保存されます。
(通常は「C:\Users\(ユーザー名)」フォルダ)
ファイル出力をする場合には、途中経過が見えないので十分にテストした上で行ってください。
※出力結果が文字化けをする場合には、以下のホームページの方法を試してみてください。
( https://kuluna.github.io/blog/post/20180512/ )
ただし、この設定をするとカシミール3Dなど古いタイプのアプリケーションで文字化けするようです。
作業が終わったら設定を戻されることをおすすめします。
※以下は、1〜3ページ分を出力テストする例です。
for ($i=1; $i -lt 4; $i++)
{
curl.exe -X POST https://api.yamareco.com/api/v1/searchPoi -d "page=$i&type_id=1&area_id=300" | jq.exe ".poilist[] | [.ptid,.name,.elevation,.lat,.lon] | @csv" >> poilist.txt
sleep 5
}
テキストファイル編集
出力されたデータには、「\」「"」という余分な文字列が含まれているため、メモ帳アプリで削除します。
テキストファイルをダブルクリックで開き、「\」と「"」をそれぞれ空欄で置換します。
テキストファイルをダブルクリックで開き、「\」と「"」をそれぞれ空欄で置換します。
Excelで編集し、CSVファイルとして保存
出力データのコピー&ペーストが終了したら、Excelファイルで列名をつけます。
山名列は「name」、標高列は「ele」とします。
また、スーパー地形で標高をポップアップさせたい場合には、「cmt」という列を作成し、標高のデータをコピーしておきます。(地図ロイドの場合には不要です)
山名列は「name」、標高列は「ele」とします。
また、スーパー地形で標高をポップアップさせたい場合には、「cmt」という列を作成し、標高のデータをコピーしておきます。(地図ロイドの場合には不要です)
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つの漢字が文字化けをしています。
GPXデータをカシミール3Dに取り込む
作成したGPXファイルをカシミール3Dに取り込む方法も紹介します。
QGISで作成されたGPXファイルは、文字コードの指定が明示的に行われていないため、カシミール3Dで読み込むとウェイポイントデータが文字化けします。
このため、「メモ帳」ソフトで開き、文字コードをANSI(日本語環境ではShift-JISと同じ)で保存し直す必要があります。
QGISで作成されたGPXファイルは、文字コードの指定が明示的に行われていないため、カシミール3Dで読み込むとウェイポイントデータが文字化けします。
このため、「メモ帳」ソフトで開き、文字コードをANSI(日本語環境ではShift-JISと同じ)で保存し直す必要があります。
お気に入り登録-人
拍手で応援
訪問者数:193人
ひろーさんの記事一覧
-
登山地図アプリ「地図ロイド」のすすめ 32 更新日:2023年09月14日
-
ヤマレコ「山のデータ」をGPXファイル化する(Windows版) 5 更新日:2023年09月20日
-
ヤマレコ「山のデータ」をGPXファイル化する(Mac版) 1 更新日:2023年09月20日
※この記事はヤマレコの「ヤマノート」機能を利用して作られています。
どなたでも、山に関する知識や技術などのノウハウを簡単に残して共有できます。
ぜひご協力ください!
「>>(ファイル名).txt」の代わりに、
「| Out-file -Encoding utf8 -Append (ファイル名).txt」とすればよいらしいのですが、
私の環境ではうまくいきませんでした。対処法をご存じの方がいたら教えて下さい。
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する