長距離自然歩道を地図で眺める ~その2~

その1で環境省の環境アセスメントデータベースを使って長距離自然歩道を眺めることができます。
しかし、データを入手するのは、なかなか困難でした。
タイル画像(Webマップタイル形式とかのこと)で入手することができましたので、お知らせします。
無料のレンタルサーバをプロキシとして使うようになってます。
ご自分のWebサーバに構築することも可能ですので、後述します。

タイル画像を表示できるソフト(知ってる範囲)

・Windowsだと、カシミール3Dのタイルマップ・プラグイン
・Androidだと地図ロイド

以下URLでいけます。
http://fasthiking.s1008.xrea.com/tileToEadas/index.php/$Z/$X/$Y
$Z:ズームレベル
$X:タイル座標のX値
$Y:タイル座標のY値

たとえば、
http://fasthiking.s1008.xrea.com/tileToEadas/index.php/11/1815/804
だと、奥武蔵の武甲山周辺の自然歩道画像が入手できます。

カシミール3Dに設定する方法は、カシミール3Dでみんなの足跡を表示するなどを参考にして下さい。
地図ロイドに設定する方法は、地図ロイドでみんなの足跡を表示するなどを参考にして下さい。

表示可能なズームレベルは、カシミール3Dで、9~17まででした。9以下が表示できない理由がよく分かりません。

 

Webサーバに構築する場合

以下、レンタルサーバ上に置いてあるphpプログラムと、.htaccess。
zipしたアーカイブ tileToEadas.zip

index.php

 <?php
    $debug_on = 0;    //0以外にするとデバッグモード
    $params = explode('/', $_SERVER['REQUEST_URI']);
    $tileZ = intval($params[3]);
    $tileX = floatval($params[4]);
    $tileY = floatval($params[5]);
    debug('tileZ');
    debug('tileX');
    debug('tileY');

    $constL = (180 / M_PI) * asin(tanh(M_PI));
    $tileSize = 256;

    $lat1 = TileToLatitude($tileY, $tileZ);
    $lat2 = TileToLatitude($tileY - 1, $tileZ);
    $lon1 = TileToLongitude($tileX, $tileZ);
    $lon2 = TileToLongitude($tileX + 1, $tileZ);
    debug("lat1");
    debug("lat2");
    debug("lon1");
    debug("lon2");
    $Y1 = LatitudeToMercator($lat1);
    $Y2 = LatitudeToMercator($lat2);
    $X1 = LongitudeToMercator($lon1);
    $X2 = LongitudeToMercator($lon2);

    debug("X1");
    debug("X2");
    debug("Y1");
    debug("Y2");

    $url1 = 'https://www2.env.go.jp/eiadb/arcgis1/rest/services/category01_06_02_201906/MapServer/export?dynamicLayers=%5B%7B%22id%22%3A5%2C%22source%22%3A%7B%22type%22%3A%22mapLayer%22%2C%22mapLayerId%22%3A5%7D%2C%22drawingInfo%22%3A%7B%22transparency%22%3A0%7D%2C%22minScale%22%3A0%2C%22maxScale%22%3A0%7D%5D&dpi=96&transparent=true&format=png32&layers=show%3A5&bbox=';
    $url2 = '&bboxSR=102100&imageSR=102100&size=256%2C256&f=image';
    $url = $url1 . $X1 . ',' . $Y1 . ',' . $X2 . ',' . $Y2 . $url2;
    debug("url");

    $im = imagecreatefrompng($url);
    imagealphablending($im, false);
    imagesavealpha($im, true);
    if($debug_on == 0){
        header('Content-Type: image/png');
        imagepng($im);
    }
    imagedestroy($im);

    //メインルーチン終了

    /************************************************************************/
    //debug。関数内では使えない
    function debug($str){
        global ${$str};
        global $debug_on;
        if($debug_on != 0){
            echo "変数名:" . $str . "<br />";
            var_dump(${$str});
            echo "<br />";
        }
    }

    //度→ラジアン変換
    function ToRadian($degrees){
        return $degrees * M_PI / 180.0;
    }

    //ラジアン→度変換
    function ToDegrees($radian){
        return $radian * 180.0 / M_PI;
    }

    //タイル座標tileYとズームレベルtileZから緯度latを計算する
    function TileToLatitude($tileY, $tileZ){
        global $constL;
        global $tileSize;
        debug("constL");
        debug("tileSize");
        $y1 = -1.0 * (M_PI / pow(2.0, $tileZ + 7.0)) * $tileY * $tileSize;
        $y2 = atanh(sin((M_PI / 180.0) * $constL));
        $y3 = tanh($y1 + $y2);
        $lat = (180.0 / M_PI) * asin($y3);
        //var_dump($y1);
        //echo "<br />";
        //var_dump($y2);
        //echo "<br />";
        //var_dump($y3);
        //echo "<br />";

        return $lat;
    }

    //タイル座標tileXとズームレベルtileZから経度lonを計算する
    function TileToLongitude($tileX, $tileZ){
        global $tileSize;
        $lon  = 180.0 * ($tileX * $tileSize / pow(2.0, $tileZ + 7.0) - 1.0);
        return $lon;
    }

    //緯度latからWeb Mercator座標を計算する
    function LatitudeToMercator($lat){
        global $tileZ;
        $R = 6378137.0;
        $U = 0.017453292519943;
        $d = $lat * $U;
        $dif = 40140800.0 / pow(2, $tileZ);        //緯度のほうがなぜかズレるので補正
        //echo $dif."<br>";
        return $R / 2.0 * log((1.0 + sin($d)) / (1.0 - sin($d))) - $dif;
    }

    //経度lonからWeb Mercator座標を計算する
    function LongitudeToMercator($lon){
        //$R = 6356752.314245179;
        $R = 6378137.0;
        $U = 0.017453292519943;
        return $lon * $U * $R;
    }
?>

.htaccess

RewriteEngine on
RewriteRule ^(.*)$ index.php [L]

長距離自然歩道を地図で眺める ~その1~

環境省が公開している「環境アセスメントデータベース」にて、長距離自然歩道を地形図上に表示することができるのを先日知りました。

まだ一般的に知られてないんじゃないかと思い、表示の仕方を記載しておきます。

なお、掲載されている長距離自然歩道は、2019年9月現在以下のものです。

首都圏自然歩道、四国自然歩道、中国自然歩道、北海道自然歩道、東北自然歩道、東北太平洋岸自然歩道、中部北陸自然歩道、東海自然歩道、近畿自然歩道、九州自然歩道

・手順

  1. 環境アセスメントデータベースにアクセスする。
    https://www2.env.go.jp/eiadb/ebidbs/
  2. 「データベースを見る」というタブにマウスをポイントすると、画面が切り替わる。
    「地理情報システム(GIS)」の項目の「地図を見る>>」をクリックする。

    利用規約に同意する。
    直接地図画面を表示する場合は、
    https://www2.env.go.jp/eiadb/webgis/index.html
    へアクセスする。上記URLは、時間をおいてアクセスするとセッションタイムアウトするようです。
  3. 地図画面が表示されるので、「情報項目」ウィンドウの「全国環境情報」をクリックする。
  4. 「自然的状況」の「景観及び人と自然との触れ合いの活動の場の状況 」左側プラスマークをクリックして、小項目を展開する。
  5. 「長距離自然歩道」の右側の「追加」をクリックする。
    「追加」の左側にある星マークをクリックすると、3番目の画面のブックマークに記憶される。
  6. 「凡例と表示設定」ウィンドウに「長距離自然歩道」が追加される。
  7. 地図上をマウスのホイールするか、ナビゲーションで操作するなどして、地図を拡大すると、長距離自然歩道が、地図上に表示される。
  8. 緑ライン上をクリックすると、簡単な説明が表示される。(表示までに時間がかかる)
  9. その他
    経緯線は、「社会的状況」-「その他の事項」の中にある。
    1度・10分・1分単位で引かれるが、色や線の太さが同じなので、分かりにくい。
    線の太さは変えられないので、透明度を変えることである程度見分けられる。 

    NATS 自然大好きクラブには、長距離自然歩道の案内が がある。

県境GPSデータリリース

関東甲信越と中部(岐阜・静岡)の県境データを作成したので公開します。

これは、国土地理院の国土数値情報行政区域データをgpx形式のデータに変換し県境のみ抽出(手作業)したものです。
詳細データと50m間隔以上に間引きしたもの2種類ありますので、必要に応じてダウンロードして下さい。
zip形式に圧縮されてます。解凍するとgpx形式のデータとなります。

関東甲信越県境データ(詳細)

関東甲信越県境データ(50m間引)

県境データ

国土数値情報行政区域データのxmlファイルをgpx形式に変換するソフトも置いておきます。ご自由にお使い下さい。
Visual Studio 2017のVisual Basicにて作成しました。Frameworkのバージョンは4です。
解凍すると実行形式のファイルとなりますので、適当な場所に保存して実行して下さい。
参照ボタン一つのシンプルなウィンドウです。
参照ボタンからxmlデータ(静岡県だとN03-19_22_190101.xml)を開くと、参照ボタンがグレーアウトします。処理が終了するとbeep音とともにメッセージダイアログが現れます。
OKすると参照ボタンが復帰します。
gpxファイルは、開いたファイルと同じ場所に作成されます。
レジストリ等使用してませんので、アンインストールは、実行形式のファイルを削除するだけです。

境界データ変換プログラム

国土数値情報行政区域データは、複数県まとめるとファイル容量も大きく処理に時間がかかるので、1県ずつダウンロードしたものを使用してください。
処理時間は、1つの県に付き数分から数十分かかります。

デジカメの撮影日時を変更するソフト version 1.2にアップデート

デジカメで撮影した画像ファイルに埋め込まれている日時情報を書き換えるソフトです。
カメラの内蔵時計がズレていたときに撮影後、Windowsパソコンにて日時を補正することができます。
今回、各メーカのRAWデータにも対応しました。

ExifDate Version 1.2
1.ファイル日時でExifデータを書き換える機能追加
2.作成日時の手入力機能追加
3.Exif情報をクリップボードにコピーする機能追加
4.Exif情報の日時でファイル名を書き換える機能追加
5.インターネット日時の表示機能の追加
6.JPEG形式以外のサポート。各社のRAW形式ファイルのExif日時情報を書き換えられます。主に外部コマンドのexiftool.exeにて実行
7.ファイルのダブルクリックもしくはEnterキーにて関連付けられたアプリケーションを起動

ExifDate Version 1.2 をダウンロード

インストールファイル実行時下記のような警告が出るかもしれません。

warning

詳細情報をクリックして、「実行」してください。
その後、ユーザアカウント制御でも発行元が不明の警告が出るかもしれませんが、「はい」をクリックしてください。署名をを取るのが面倒なのでこのような警告が出ますが、怪しいプログラムではありません。

ExifDate 1.2

追加機能は、アイコンのボタンに集約されています。ボタンにマウスをポイントすると機能名が表示されます。
機能名の横に(A)のような表示がありますが、括弧内のキー入力で同じ動作となります。

jpeg形式以外はexiftoolというCUIソフトで実現しています。『読み込むファイルタイプの設定』でRAW形式のファイルタイプを事前登録して下さい。

Yamareco Picture Hack version 1.0

ヤマレコの写真登録画面のコメント入力を支援するソフトです。

●主な機能

1.写真のコメントを同時に複数の人が編集すると、最後に保存した人の文章で上書きされてしまい、その前に入力した人の文章が消えてしまいます。このソフトをお互いに使うことで、上書き消去されてしまうことを防止できます。

2.入力した(された)コメント文書を自分のパソコンに保存したり、保存したコメント文書を読み込んだりできます。同時に編集していた人が誤って上書きしてしまっても入力した文書を復活できます。

3.コメント欄に絵文字を挿入するのに、アイコンをクリックするだけで済みます。

4.ユーザ登録文字を同じくアイコンクリックで挿入可能です。ユーザ登録文字とは、コメントを記入した人が誰か分かるように文章の文頭や文末に「(マ)」とか記述することがあると思います。このような定型文字を登録しておくことで簡単に呼び出すことができます。

●インストール

Microsoft .NET Framework 4.5で動作します。Windows Vista以降のバージョンなら動くと思います。動作確認はWindows 8.1と10です。
以下URLの実行形式ファイルをパソコンに保存後、実行するとインストーラが起動します。質問に「はい」や「「次へ」など答えていくとインストールが完了します。デスクトップ上にYamarecoPictureHackというアイコンができます。スタートグループ中にもYamarecoPictureHackグループができあがります。

インストールファイル

実行時警告が出るかも知れません。
warning

詳細情報をクリックして、「実行」してください。
その後、ユーザアカウント制御でも発行元が不明の警告が出るかもしれませんが、「はい」をクリックしてください。署名をを取るのが面倒なのでこのような警告が出ますが、怪しいプログラムではありません。ソースコードを見たい人は、以下urlへコメントください。

https://www.yamareco.com/modules/diary/138224-detail-157961

 

●使い方

1.YamarecoPictureHackアイコンをダブルクリックすると、以下画面となりますので、ヤマレコにログインします。
YamarecoPictureHack1

2.マイページから、山行記録の写真編集ページを開きます。
YamarecoPictureHack2

3.現在のコメント文書を保存したい場合、メニューから「文書の保存(S)」をクリックします。

4.メニューから「入力ボックス(I)」をクリックします。

5.編集画面ウィンドウが表示されます。入力したいコメントをキーボード入力します。

6.アイコンを入力した場合、ウィンドウ下段のアイコンをクリックします。カーソル位置にアイコン文字が入力されると思います。

7.ユーザ文字を挿入する場合、予めメニューの「ユーザアイコン文字」をクリックして、入力したい文字を登録しておきます。ウィンドウ下段のアイコンの中に「ユーザ文字」アイコン(一番左上の青い色のアイコン)をクリックします。

8.コメントの入力が完了したら、入力文章を自分のパソコンに保存しておく方が良いでしょう。メニューの「入力データの一時保存」をクリックします。

9.最後にメニューの「Webに反映」の「テキストボックスを追加」をクリックします。
YamarecoPictureHack3

10.編集画面ウィンドウが閉じ、写真編集ページに入力した文章が追加されされます。この時、ヤマレコのサーバに写真編集ページのリロードをしてから、文章を追加しますので、他の人がコメントを編集済みでも上書きする恐れがありません。
写真編集ページは「保存して終了」まで実行されますので、しばらく待っていると、山行記録のページに変わります。
YamarecoPictureHack4

 

●編集中の他の人に自分のコメントを上書きされてしまったケース

編集画面ウィンドウの「一時保存データの読み込み」で上記8.で保存したファイルを読み込むことで復活できます。

 

●コメントの追加ではなく、コメントの編集をしたい場合

A.通常の写真編集ページで編集する。

B.写真編集ページで「文書の保存(S)」をしておいて、「入力ボックス(I)」で編集画面ウィンドウを開き、「一時保存データの読み込み」から、保存データを入力ボックスに読み込みます。編集終了後、「Webに反映」の「テキストボックスで上書き」をクリックします。

A.B.どちらの方法も、サーバにコメント文書を上書きしてしまいますので、同時編集中の人がいる場合、最後に保存した人の文章で上書きされてしまいます。

CTMakeの使い方1.難易度の変わるルート

歩き始めは良く整備されているけど、山頂近くは岩稜帯で歩きにくい(=ペースが落ちる)とか。石ころが多くて下りにくい。登りは破線ルートで帰りは一般道。

など、途中で補正データを変えてコースタイム計算したいケースのやりかたです。

1.CTMakeにルートを読み込んで、間引きします。

今回は、山と高原地図「大菩薩」のエリア内大樺ノ頭~雁ヶ腹摺山~大峠部分のGPSログを使ってみます。

2.メイン画面の「地図表示(M)」と「グラフ表示(G)」をクリックします。

CTMake2-1

3.GPXデータグラフの中間部分あたりを右クリックして、「マーカの追加(A)」をクリックします。

CTMake2-2

4.地形図にオレンジ色の丸が表示されます。

GPXデータグラフでオレンジの丸を左右にマウスで移動もしくは左右矢印キーで移動すると、地図上のオレンジの丸の位置が移動します。

雁ヶ腹摺山のところにオレンジの丸がくるようにします。

CTMake2-3

5.大樺ノ頭から雁ヶ腹摺山間が山と高原の地図では、破線ルート。雁ヶ腹摺山から大峠までは実線ルートです。

そこで、GPXデータグラフの番号0の補正ファイル欄をダブルクリックします。

CTMake2-4

今回は、それほど歩きにくい破線ルートでも無いため「一般登山道(悪)」を選びます。

CTMake2-5

6.同様に、番号1の補正ファイルは「一般登山道(普)」を選びます。

CTMake2-6

これで、区間毎の補正ファイルの定義が出来上がりましたので、コースタイムの計算をする準備ができました。

7.メイン画面の「時刻の書き換え(E)」→「カスタム書き換え(C)」をクリックします。

CTMake2-7

8.時刻のカスタム書き換え画面が出ます。

先ほど設定した補正ファイルがadjustファイル欄に反映されているのを確認し、「書き換え(W)」をクリックします。

CTMake2-8

時刻のカスタム書き換え画面は、右上の×をクリックして閉じます。

9.メイン画面のゴール日時と所要時間が書き換わっているのが確認できます。

CTMake2-9

10.GPXデータグラフは、リアルタイムに結果を反映しないため、グラフ上を右クリックして、「GPXログ再読み込み(G)」をクリックします。

CTMake2-10

11.GPXデータグラフ上の番号1と2の区間時間が書き換わりました。

大樺ノ頭から雁ヶ腹摺山間が山と高原の地図では、50分。雁ヶ腹摺山から大峠までは40分です。

CTMake2-11

以上のような方法で、区間毎にマーカーを追加していき、それぞれの区間に補正データを適用してあげれば、場所によってコースの難易度が変わる場合でも、よりリアルなコースタイムが計算できます。

コースタイム計算ソフト CTMake 1.01 新規リリース

GPSログからコースタイムを計算するソフトです。Windows Vista、7、8,10などのデスクトップ上で動作可能です。

インストールプログラム
http://nin29.com/upload/CTMake1.01.exe

 

●インストール

上記URLのリンクからインストーラをダウンロードします。

実行ファイルCTMake1.01.exe をダブルクリックなどで実行します。

ユーザアカウント制御で、実行制限の画面「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」のような画面は「はい」。

「WindowsによってPCが保護されました」のような画面が出る場合、「詳細情報」の文字部分をクリックし、「実行」ボタンをクリック。

CTMake1.01のインストーラが走るので、「次へ」、「はい」などで先へ進み、最後に「完了」をクリックします。

デスクトップ上にCTMakeのアイコンができあがります。

 

●初歩的な使い方

1.標高データが確かなGPSログを入手もしくは生成する

CTMakeは、緯度・経度・標高の3つのデータからコースタイムを計算します。中でも傾斜を計算するための標高値はコースタイムに大きく影響するため、標高の相対誤差が大きなGPSログは、コースタイムが不正確になります。
GPSから算出した標高は相対誤差が大きいため使い物になりません。カシミール3Dや山旅ロガーなどでSRTM標高に変換することで多少精度が良くなります。

2.CTMakeを起動して、GPSログを読み込む

CTMakeを起動した画面のリストビュー内にGPSログをドラッグ&ドロップするか、「GPXファイルを開く(O)」をクリックしてファイルを指定します。

CTMake01

GPSログは、拡張子gpxのGPX 1.1形式に対応しています。KML形式には対応していません。

ログを読み込むと、ポイント毎に計算された数値がリストビューに一覧表示され、右上に総計したデータが表示されます。

試しにテスト用のGPSログを右クリックして保存したものを読み込んでみてください。

CTMake02

3.GPSログの間引き

読み込んだGPSログのログ採取間隔は、機器によりまちまちです。精度良く計算するには、ログの間隔が10m~20mくらいが良いようです。

メイン画面右下の「GPXファイルの間引き(D)」をクリックして、間引く距離を指定してOKします。

デフォルトは、10mになっています。

CTMake03

4.時刻の書き換え

メイン画面のメニュー、「時刻の書き換え(E)」から「一括書き換え(F)」をクリックします。

CTMake04

時刻の書き換え画面が表示されます。

CTMake05

この画面は、平地の基準スピードに対して傾斜が増していったときにどれほどスピードが変わるかをパラメータ化したグラフ画面です。

詳しい使い方は、改めて説明予定ですので、今回は予め作成してあるパラメータ(補正データ)を読み込みます。

「補正データの読込(O)」をクリックすると、トレイルの難易度によってパラメータを変えたデータが一覧表示されますので、そのルートに応じた難易度の補正データを選択してOKします。今回は「一般登山道(良)」とします。

CTMake06

スタート日時が空欄なので、クリックすると日時が補完されます。スタート日時はコースタイムの計算に影響がありませんので、好きな日時で構いません。実際の登山予定日時などを入力しておくと良いと思います。

CTMake07

「時刻の書き換え(W)」をクリックすると、コースタイムを計算し、メイン画面のリストビューを書き換えます。

スタート日時、ゴール日時、所要時間などが、変わっているのが確認できると思います。

CTMake08

サンプルのGPSログは、丹沢の大倉から塔ノ岳往復時のものですが、山と高原地図のコースタイム5時間50分とほぼ一致しているのが分かると思います。

5.書き換えたGPSログの保存

メイン画面右下の「GPXファイルを保存(A)」をクリックし、保存場所を指定し、ファイル名を任意に入力します。

拡張子がgpxのファイルが出来上がります。カシミール3DのGPSデータエディタなどから、グラフ表示機能を使用して、区間タイムなどを参照することができます。なお、CTMake単体でも、区間タイムを見たり、書き出したりする機能がありますので、別記事にて解説したいと思います。

 

●バグ報告、機能追加依頼

ヤマレコの日記にコメントをお願いします。

https://www.yamareco.com/modules/diary/138224-detail-136541

Fenix3 Analyzer Version 1.02

1.温度がマイナスのデータを取得しようとすると、エラーとなるバグ修正

2.ログを間引きして保存する機能追加

インストーラをダウンロード:Fenix3 Analyzer Version 1.02

インストール方法、使い方は、Fenix3 Analyzer Version 1.0をご覧ください。

Garmin Fenix3J HR vs Suunto Ambit2 HR その3

今回で最後ですが、心拍計の比較です。

結論から申しますと、Fenix3Jの光学心拍計は使い物にならない。

じっとして、動かないときは正確ですが、腕が動くと心拍が乱れます。

胸ベルトですと、身体に負担がかからないと心拍の上下が発生しませんが、Fenix3J HRは、腕を動かしただけでも、10bpsくらい上下します。

登山中の登りなど比較的動きが少ない運動でも、+30bpsほど上がったり、-30bpsほど下がったりすることがしょっちゅうあるため、全く当てになりません。

腕のベルトは、血流が阻害されない程度に強めに締めても改善されませんでした。

Amazonのカスタマーレビューも心拍計に関しては、評価が低いのがうなずけます。

現在は、プレミアム・ハートレート・センサーを装着しています。こちらは心拍の異常な上下動はありませんし、体感の心拍数と一致していますので、精度は良いと思います。

心拍計の比較

上図は、登山中でそこそこ頑張ってるときのものです。

赤:Suunto Ambit2の胸ベルト式心拍センサ

青:Garmin Fenix3J HR(内臓光学式心拍計)

青色線のほうが上下動が激しく、胸ベルトの赤色線と比べて50bps以上異なっているところもあります。

Garmin Fenix3J HR vs Suunto Ambit2 HR その2

今回は標高精度の比較です。

横軸は、時間にしてあります。距離だと緯度・経度の誤差で横幅が変わるためです。

縦軸が標高。

青線がGarmin Fenix3J HR

赤線がSuunto Ambit2

スタート時点でそれぞれの標高は校正しておきました。ただしスタートするまでのちょっとした待ち時間中に、3mほどずれたようです。

標高

ほぼ、赤と青の線が重なってます。大きくずれていませんでした。

山頂部でそれぞれの標高を表にします。

測量値(m) Fenix3J(m) 誤差(m) Ambit2(m) 誤差(m)
横岳 2,142 2,140 -2 2,155 +13
白岩岳 2,267 2,265 -2 2,273 +6
東谷ノ頭 2,130 2,140 +10 2,139 +9
釜無山 2,117 2,130 +13 2,126 +9
入笠山 1,955 1,974 +19 1,965 +10

Fenix3Jは、時間経過とともに標高が高めに推移してます。気圧配置が変化している影響か内蔵温度計の精度の問題と思われます。
Ambit2は、全体的に10m前後高めです。

 

累積標高の結果

累積標高(+) 累積標高(-)
Fenix3J(m) +2,406 -1,856
Ambit2(m) +2,430 -1,890
差(m) 24 34

距離と同じく、Ambit2のほうがやや大きな値となりました。

 

次回は、心拍計について考察したいと思います。