![]() |
1.累積標高差計算とは
登山ルートの位置情報から累積標高差を計算するには、差分和計算を行う。すなわち、始点から終点まで、隣り合うデータ点の標高の差分を順次計算し、正の値、負の値をそれぞれ合計すると、前者が登り、後者が下りの累積標高差となる。
登山ルートの位置情報が正確であれば、差分和による累積標高差計算の結果も正確である。この場合、登山ルートの正確な位置情報とは、標高値の正確さに加えて、登りから下り、下りから登りへの転換点について、実際に存在するものを網羅し、存在しないものを含まないということである。実際の登山ルート位置情報は多かれ少なかれ不正確で、その結果、差分和で求めた累積標高差は過大評価だったり過小評価だったりする。
登山用アプリ・ウェブサービスの中には、入力した位置情報に対してそのまま差分和計算するものもあるが、位置情報に何らかの操作を加えた上で差分和計算を行うものも多い。前者を単純累積標高差、後者を条件付き累積標高差と呼ぶことにする。
条件付き累積標高差の計算方法としては、
・差分を取る前に
・標高値の移動平均を取る
・リサンプリングを行なってデータ点数を減らす・データ間隔を広くする
といった操作を行ってから差分和を計算するタイプと、
・差分を取った後、和を取る(カウントする)のに条件を加える
というタイプとがある。
これらの操作は全て、累積標高差を小さくする方向に働く。大抵のGPSログは、単純累積標高差では過大評価になる方向の誤差を含んでいるので、GPSログを対象とする場合にこのような操作を行うことは妥当である。ただし、累積標高差の入力データがGPSログであるとは限らないし、GPSログであっても誤差のパターンや程度は色々だろう。
条件付き累積標高差計算は、入力された位置情報の誤差の種類や程度に応じて条件を調整する、というような器用なことをしてくれるわけではない。そもそも、位置情報の誤差を評価する機能はない。どんなデータに対しても、予め決められた手順で計算するだけである。
2.ヤマレコの累積標高差計算方法
ヤマレコの累積標高差計算方法は、標高の差分を取った後のカウントに条件を科すというタイプのものである。このタイプの中でもヤマレコの条件はかなり凝ったものであり、これをいきなり説明しても分かりにくいので、簡単なものから説明する。
まず、20mカウント法について考える。始点から順に差分値を加算していって、合計が20m以上または-20m以下になったらそれを累積標高差にカウントし、加算器をゼロにリセットして加算を再開する、という操作を終点まで行うというものである。これをエクセルで実行するには、たとえば以下のようにする。
1列目:標高値
2列目:差分値
3列目:差分の積算 -> 20m以上または-20m以下になったらカウント値に計上し、リセット
4列目:カウント値
5列目:カウント値の合計 -> 累積標高差
20mカウント法では、カウントの始点との標高差のみに注目する。添付図で点Aからカウントを始めたとして、次にカウントされるのは点Xとなる。途中の点Bと点Cの間には20m以上の標高差があるが、これはカウントされない。
これに対しヤマレコの計算方法は、点Bと点Cの間をカウントし、さらに点Aと点Bの間も(20m未満であるけれども)カウントする。片側20m最大化カウント法とでも言うべきものである。BCをタイプ1のカウント、ABをタイプ2のカウントと呼ぶことにする。
この計算を実行する方法として考えられるのは、標高の最大値・最小値を記録しながらカウントする方法である。最大値または最小値との差の絶対値が20以上になったら、それをタイプ1カウントに計上し、最大値・最小値をリセットしてカウントを再開する。これを終点まで行った後、タイプ1のカウントに隙間がある箇所があれば、その始点と終点を直線で結んだものがタイプ2のカウントになる。タイプ1カウントは全て絶対値20以上、タイプ2カウントは全て絶対値20未満である、
ちょっと面倒なのは、最後のタイプ1カウントの終点とルート全体の終点の間の処理である。この2つが一致することもあり、そうであれば何も問題ない。一致しない場合、この間がタイプ2カウントになりそうなものだが、そうではない。この間に極大値または極小値があれば、それと最後のタイプ1カウントとの間が最後のタイプ2カウントとなる。極大値と極小値の両方があれば、両方がカウントされ、二股になる。腑に落ちないが、そうでないと累積標高差がヤマレコの値に合わない。
ヤマレコがどういう考えに基づいて、どういう方法で累積標高差計算を実行しているのか、本当のところは分からない。ただこのようにすれば、ほとんどの場合でヤマレコと同じ計算結果が得られる、ということである。
ただし、以上はすべて「国土地理院標高」(DEM10B z14 最近傍法)と「GPS標高」についてである(山行計画、山行記録とも)。「SRTM標高」についてはよく分からないが、少なくとも国内の山行でこれを使用することはないので、深く追求しないことにする。
3.片側20m最大化カウント法の特徴
累積標高差削減率 = 1 - 条件付き累積標高差/単純累積標高差
というものを考えてみる。登りっぱなし・下りっぱなしのルートで、途中のアップダウンがないのであれば、どんな計算法でも削減率はゼロである。一つの条件付き累積標高差計算方法でも、標高値の変化のパターンや測定点間隔によって削減率は変化する。たとえば移動平均法の場合、削減率は測定点間隔に大きく影響される。
このため、複雑なアップダウンを伴う実際の登山ルートを対象とした場合に、各種登山用アプリ・ウェブサービスの条件付き累積標高差の大小がどうなるかを一概にいうことはできない。ただ、ヤマレコは比較的小さめの数値となることが多い。つまり、削減率は大きめであることが多い。
片側20m最大化カウント法は、小刻みなアップダウンを除去するのに強力に機能する。極端な例として、測定ごとに10mのアップダウンを10回繰り返した場合の累積標高差は以下のようになる。
・単純累積標高差:+100m, -100m
・点数を半分にリサンプリング:+50m, -50m
・3点中心移動平均:+33m, -33m
・片側20m最大化カウント法:10m, 0m
このアップダウンがGPSの誤差による見かけのものであって、本当は平坦なルートであるのならば、片側20m最大化カウント法は非常に優秀ということになる。一方、アップダウンが本当に存在するのであれば、全くの過小評価ということになる。実際の登山ルートでの計算結果の比較を示すべきだが、これは機会を改めて報告したい。
4.おわりに
累積標高差計算は当然ながら正確な位置情報に基づいて行うのが望ましい。それが得られないのであれば、せめて位置情報の信頼性に応じた形で計算すべきだが、位置情報自体からその信頼性を判定することもまた困難である。この状況下で、各アプリ・サービスの作成者・提供者がそれぞれの考え方や都合によって、どのような累積標高差計算を行うか決めているというのが現状であって、そのために同一の位置情報に対して異なる計算結果となる。それは仕方ないのだろう。ただ、そういう性格の数値を提供するのであれば、その提供者は自らがどのような考えに基づいてどのような累積標高差計算を行っているのかを明らかにすることで、数値の意味を考える材料も同時にユーザーに提供すべきではないだろうか。
私も筑波山のような登り・下りともほとんど単調な山の累積標高と 飯能アルプスのような細かなアップダウンが続く山のそれとでは だいぶ実感と差があるように感じていました。何度か山行記録でそのことについて触れたこともあります。
今回貴稿を読んで実際にgpxファイルをダウンロードしEXCELに取り込んで分析してみたところよく意味がわかり大変ありがたく存じます。
一つ質問ですが、私がこれまで地図データの標高10mまたは5mメッシュのため、GPSでは同じメッシュの中では垂直移動量を追えないのが原因だと思っていました。(貴稿を読んでそうではないことはわかりましたが)今回gpxファイルを見てみると一の位は1m単位で各地点の標高が把握・表示されています。どうして こんなことが可能なのでしょうか?
gpxファイルには色々な素性のものがあります。元々はGPSログを記録するためのものですが、地図アプリ上で作成したルートデータをgpxファイルにすることもできます。
GPSデータを扱うアプリの多くは、GPSの標高値をそのままで扱うほかに、これを国土地理院のDEM10B等の数値標高モデルの値に置換することもできます。後者を出力できるアプリもありますが、ヤマレコとヤマップは出力できません。地図アプリ上で作成したルートデータの標高は数値標高モデルの値です。
数値標高モデルから標高を得る方法として、最近傍法とバイリニア内挿とがあります。最近傍法ではグリッド内の点は全て同じ標高になりますが、バイリニア内挿では連続的に変化します。ヤマレコをはじめ、多くのアプリは最近傍法を使用しますが、カシミール3Dとヤマップはバイリニア内挿です。
今回ポン太さんが御覧になったgpxファイルは、具体的にはどのようにして生成されたものでしょうか?
私の使ったgpxファイルはヤマレコの自分のトラックレコード(ルートデータではなく実際に登った記録)をダウンロードしたものです。
貴稿「再び、山行計画のGPS標高とは?」ではヤマレコのらくルート内でルートを作成した場合の山行計画のGPS標高はSRTM-3からバイリニア内挿で取得した標高値にかなり近いと書かれていますが、今回のご回答内には「ヤマレコをはじめ、多くのアプリは最近傍法を使用します」とあります。これはヤマレコがルート作成時と実際のトラックデータ記録時に違うアルゴリズムを使っているということでしょうか?
「最近傍法ではグリッド内の点は全て同じ標高になりますが」とありますが もしそうなら何故トラックデータが1m単位で記録されるのかがわかりません。10mあるいは5mメッシュならメッシュ内の標高の一の位はすべて0あるいは5になるのでは、と?
わかったつもりになって いいかげんな質問をしてご迷惑をおかけしているのではと心配になりますが 自分としては大変勉強になっており感謝しております。よろしくお願いします。
登山中にヤマレコアプリで記録したGPSログをgpxファイルとしてダウンロードしたものということなので、その標高値は数値標高モデル置換していない、GPSの測定値そのものです。GPSの測定値について、小数点以下何桁まで表示するという決まりはありません。たとえばヤマップアプリは小数第2位までで、ヤマレコアプリの場合は整数だけの表示です。元の測定の精度を考えると、小数点以下の表示は意味がない、ということかもしれません。
山行記録の標高グラフのページで「国土地理院標高」「GPS標高」「SRTM標高」の切り替えができますが、このうちの「GPS標高」がこのgpxファイルの標高を使って計算・表示したものです。
なお、数値標高モデルの10mメッシュというのは、平面で大体10m×10mのメッシュという意味です。標高値はメッシュの中心点における値です。ヤマレコが使用している標高タイルDEM10Bの場合は、小数点以下第2位までの表示です。
ヤマレコの数値標高モデルからの標高値取得方法は、「国土地理院標高」と「SRTM標高」については最近傍法、山行計画の「GPS標高」についてはバイリニア内挿、というのが私の検討の結論です。
>なお、数値標高モデルの10mメッシュというのは、平面で大体10m×10mのメッシュという意味です。標高値はメッシュの中心点における値です。
あ〜そうなんですね。お恥ずかしい限りですが 等高線の10m間隔と メッシュの10mを混同してしまい 全く見当違いの発言を繰り返していました。
>ヤマレコの数値標高モデルからの標高値取得方法は、「国土地理院標高」と「SRTM標高」については最近傍法
というのと併せて考えると 単純累積標高差をとっていくとアップダウンを繰り返すような行程で 何故過大評価になりがちなのか、ということがやっと理解できました。
もう少し勉強して出直します。ただ、貴稿にある提言「ただ、そういう性格の数値を提供するのであれば、その提供者は自らがどのような考えに基づいてどのような累積標高差計算を行っているのかを明らかにすることで、数値の意味を考える材料も同時にユーザーに提供すべきではないだろうか。」については同意いたします。ご教示ありがとうございました。
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する