Archive for the ‘パソコンツール’ Category

長距離自然歩道を地図で眺める ~その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 自然大好きクラブには、長距離自然歩道の案内が がある。

デジカメの撮影日時を変更するソフト 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をご覧ください。

Fenix3 Analyzer Version 1.01

2017/1/5 Fenix3 Analyzer Version 1.02が公開されました。

1.GPSマージ保存をすると、後半部分がおかしくなるバグ修正。

2.保存するときのtrkデータのnameタグに日時を用いるが日付をyyyy/mm/dd形式からyyyy-mm-dd形式に変更。

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

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

Fenix3 Analyzer Version 1.0

2017/1/5 Fenix3 Analyzer Version 1.02が公開されました。

2016/11/14 Fenix3 Analyzer Version 1.01が公開されました。

Fenix3で取得したActivityログは、ガーミンのクラウドGarmin Connectに蓄積されます。各アクティビティの詳細画面よりgpx形式でエクスポートできますが、これがなかなか一筋縄でいきません。

・Garmin Connectがメンテナンス中で利用できない。

・Webブラウザの種類によってアクティビティが表示できない。

Internet Explorer 11はNGのようです。

・gpx形式のエクスポートがエラーになる。

Apache Tomcat/7.0.57 – Error report
HTTP Status 500 –
type Exception report
description The server encountered an internal error that prevented it from fulfilling this request.

そこで、Fenix3J HRのUSBマスストレージ機能で直接生データ(FITファイル)を解析してGPX形式のログを生成するソフトを作成しました。

 

●インストール

Fenix3 Analyzer Version 1.0

ダウンロードした実行形式のファイルを実行するとインストラーが走ります。「次へ」、「はい」などで先に進めると、Fenix3Analyzerアイコンがデスクトップ上にできあがります。

 

●使い方

1.このアイコンを実行すると、Fenix3 Analyzerが起動します。

Fenix3Analyzer1

2.Fenix3J HRの設定-システム-USBモードをMass StorageにしてクレードルをUSBに接続すると、パソコン上USBドライブとして認識されます。

3.Fenix3 Analyzerの参照ボタンで、USBドライブを開きます。

Fenix3Analyzer2

4.しばらく(1分くらい)すると左側のリストボックスにActivityログの一覧が表示されます。(実はFenix3のUSB通信は非常に遅いため、目的のFITファイルをエクスプローラなどでPC上に保存したものを参照ボタンから開いた方が、何十倍も速いです)

5.ログを選択して、解析ボタンをクリックします。

Fenix3Analyzer3

 

6.解析結果が、下段のテキストボックスに表示されます。

Fenix3Analyzer4

7.GPX保存で、GPX形式のログを保存可能です。

 

※ カシミール3Dの汎用1と汎用2に各種項目を割り当てることも可能です。

※ GPX形式以外にCSVデータとして保存することも可能です。

※ GPXマージ保存機能

スマートフォンなどで記録したGPXログファイルの緯度・経度情報とFenix3Analyzerにて解析した標高データなどをマージする機能です。
スマートフォンのGPSは優秀ですが、標高データは不正確なため、Fenix3で取得した気圧高度計データの標高値に書き換えることで精度の高いGPXログを生成することができます。
この場合Fenix3のログ取得間隔を1秒にしておくことで精度が増します。(設定-システム-データ記録)

※ Garmin Connectの各アクティビティ画面の歯車アイコンのメニューにオリジナルをエクスポートというのがあります。zip圧縮されたFITファイルですので、Fenix3 Analyzerにて解析することが可能です。Fenix3本体から既に削除されたアクティビティなどは、この方法でクラウド上からダウンロード可能です。

※ バグ報告、その他機種対応依頼、機能追加などのご連絡は、ヤマレコのプライベートメッセージでお送り下さい。

http://www.yamareco.com/modules/yamareco/userinfo-138224-prof.html

画面右側にメッセージボタンがあります。ゲストユーザはメッセージを送れません。

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

最新版Ver 1.2は、こちら

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

2016/9/20 Version 1.1
System.Drawing.Image.PropertyItems でタグ情報を変更(撮影日時)したものをjpeg保存すると、元のExif情報の一部が失われる(※)バグ(.NETの仕様?)の修正。
具体的には、System.Drawing.Image.PropertyItemsを使用せず、独自にExif情報を解析して、撮影日時の部分だけを書き換えるようにした。
※ メーカ独自のExif情報などが失われる。

http://nin29.com/upload/ExifDate1.1.exe