来月行われるブルベ走行会ランドネきたかん北関東400kmのコースはルートラボの軌跡として公開されています。
http://yahoo.jp/09M7LV
http://yahoo.jp/IQGr3E
この軌跡データをカシミール経由でハンディGPSに転送する場合を考えてみました。
気になるのはポイント数の多さです。なにしろ私のGPSは旧機種のeTrex LEGEND HCx。
前半で3759ポイント
後半で5820ポイント
これでは荷が重いです。できれば1000ポイント前後まで間引きたいです。
しかしカシミールの間引き機能を使うとコース上の曲がり角なんか考慮してないもんですから実際走ってるとキューポイントを見失いがちないやらしいショートカットなどが大量生産されてしまいます。もう少し賢い間引きはないもんでしょうか。
幸い、ランドネきたかん北関東400kmはキューシートのエクセルデータも公開しています。
キューシートには総距離(ADD)の情報があるのでこれを使いましょう。
まず、ルートラボの軌跡をダウンロード。ファイル形式はKMLが分かりやすくておすすめです。ダウンロードしたらテキストエディタATOMで開きます。なんだかよく知りませんが最近はxmlみたいな改行がwindowsのメモ帳だとぐちゃぐちゃになるファイルを開くならatomを使うのがシャレオツPCユーザーということになっているみたいです。
うーん。これは分かりやすい。
早速コピペしてエクセルに貼り付けましょう。
まあこんな感じに。
地点1の経度、緯度はセルA1,B1
地点2の経度、緯度はセルA2,B2
とするとその二点間の距離は
=IFERROR(6378.137*ACOS(SIN(RADIANS(B1))*SIN(RADIANS(B2))+COS(RADIANS(B1))*COS(RADIANS(B2))*COS(RADIANS(A2-A1))),0)
だそうです。IFERRORは地点1と地点2が同じときとかなぜかNUMエラーになっちゃうのでつけてますがエクセル2003以前だと使えないらしいので=IF(ISERR(とかに変えないといけないみたいです。
ここでカラム柱Aは経度、Bは緯度、Cはなんだか勝手に入ったよく分からない数字、Dに二点間の距離をずらーっとオートフィルしちゃうわけです。
二点間の距離がでたら累計しちゃえばキューシートのADDと比較できます。距離の累計をカラム柱Eにつくって、対象となるキューシートの名前をランドネきたかん西回りキューv5.xlsxのキューシート公開用というシートのE5:E159の範囲だとすると、vlookup関数で比較したものをカラム柱FとGにオートフィルします。
=INDEX([ランドネきたかん西回りキューv5.xlsx]キューシート公開用!$E$5:$E$159,MATCH(E2,[ランドネきたかん西回りキューv5.xlsx]キューシート公開用!$E$5:$E$159))
しかしここでは「対象のセルと、その一つ下のセルを見る」処理をするためにvlookup関数をindex+matchに分解したものを使います。
=INDEX([ランドネきたかん西回りキューv5.xlsx]キューシート公開用!$E$5:$E$159,MATCH(E2,[ランドネきたかん西回りキューv5.xlsx]キューシート公開用!$E$5:$E$159)+1)
これら二つのキューポイントの距離が近い方を選び、その差をHにオートフィルします。多分「二つの地点との差の近い方を選ぶ」なんてエクセルの達人なんか作業セル置かないで一発でやっちゃうんだろうけどそんな高等技術は知りません。
=(ABS(E2-F2) <ABS(E2-G2))*1*F2 + (ABS(E2-F2) > ABS(E2-G2))*1*G2
最後にカラム柱Hの値が500m以下(セルK1に0.5を置けば500mです。この値はお好みで変えると良いと思います)のものについて緯度、経度を抜き出せばある程度キューシートを反映したそこそこ賢い間引きが完成です。
=IF((ABS(E2-H2)<$K$1)+ (MOD(ROW(),30)=0),A1,””)
のMOD(ROW(),30)は30ポイントごとに軌跡を置いています。これはキューポイントがない区間が長い場合対策です。
あとはカラム柱IとJをコピーしてatomで開いた適当なKMLファイルの<coordinates>~</coordinates>にコピペすればカシミールで読めます。
前半 1491ポイント
後半 1691ポイント
いい感じに間引けました。