コードはこんな感じ
protected void SaveGraph( String filename )
{
int count = this.pos.Count;
int [] source = new int[count];
int [] dist = new int[count];
int posIndex;
for (posIndex = 0; posIndex < count; posIndex++)
{
source[posIndex] = (int)altitude[posIndex];
dist[posIndex] = (int)distance[posIndex];
}
Bitmap bitmap = new Bitmap(700, 300);
Graphics g = Graphics.FromImage(bitmap);
g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height );
NPlot.Bitmap.PlotSurface2D surface = new PlotSurface2D(bitmap);
NPlot.StepPlot plot = new NPlot.StepPlot();
plot.Pen.Color = Color.FromArgb(16, 128, 255);
plot.DataSource = source;
plot.AbscissaData = dist;
surface.Add(plot);
surface.YAxis1.WorldMin = 0;
surface.YAxis1.Label = "高度 (m)";
surface.XAxis1.Label = "走行距離 (m)";
surface.Refresh();
bitmap.Save( filename, ImageFormat.Jpeg );
}
結果はこんな感じ
ログはこんな感じ
GPSログ -高度の記録をグラフで出力する
NPlotが.netやmonoで使えそうなので試してみた.
参考:.NETグラフライブラリ「NPlot」 (Database tearoomの夜明け)
■MonoDevelopでNPlotを使用する準備
1. NPlotのホームページから最新のnplot-0.9.10.0.zipをダウンロード
2. nplot-0.9.10.0.zipを適当なフォルダに展開
binフォルダ以下には, netに並んでmonoフォルダも用意されています
3. MonoDevelopを開いて(プロジェクト)を開く
4. ソリューション ビューで(プロジェクトの)参照を右クリックして「参照アセンブリの編集」を選択
5. 「.NETアセンブリ」タブを選択
6. 2.で展開した nplot-0.9.10.0/bin/mono/2.0/release/NPlot.dllを選択して追加する
7. 実行ファイルのフォルダにNPlot.dllをコピーしておく
試しにソースに次を設定して,コンパイルが通りました.
using NPlot.Bitmap;
当面の目的はWindows.Formに表示するのではなく,
画像ファイルに出力してhtmlに表示できるようにすること.
■サンプルプログラム
using System.Drawing;
using System.Drawing.Imaging;
using NPlot.Bitmap;
int [] source = { ,,, };
Bitmap bitmap = new Bitmap(500, 250);
NPlot.Bitmap.PlotSurface2D surface = new PlotSurface2D(bitmap);
NPlot.HistogramPlot plot = new NPlot.HistogramPlot();
plot.DataSource = source;
surface.Add(plot);
surface.Refresh();
bitmap.Save( “aaa.bmp”, ImageFormat.Bmp );
結果は下のように.
とりあえずはグラフが出せました.
色々と整形が必要ですね.
USBカメラその後
GPSログの処理 2
少し進展。
A, B点があった場合に、その距離をd(A, B)とする。
「d(A, C) * 1.2 < d(A, B) + d(B, C) の場合にはB点を省く。」 というルールでルートを縮約します。 結果、少し改善されたようです。 →
上記の方法だと、コーナーではどうしてもルートを丸めてしまうので、
距離が少なめに評価されてしまいます。
ログそのままだと距離が長めに評価されるので、それよりはいいと思ってますが。
// total distance
20.064 km → 19.774 km
走行距離は1.5%くらい短くなりました。
春はじめました
手取キャニオンロード 往路 20km分
金曜日には金沢でも桜の開花宣言がでました。
土曜日にようやく自転車で走れました!
13度くらいまで気温はあがったけど、体質なのか、
走り出しても体温が上がらず、筋肉が硬く悪循環。
帰ってからすぐに風呂に入りました。
ログ出力は未完成もいいところですが、使用を始めます。
現在は走行距離の計算ルーチンを作成中。
どうしても多めに積算されるので、インテリジェントに処理したいところ。
USBカメラ デビュー
興味本位で共立電子の「USBカメラ フラット モジュール」を買ってみた。
3,360円 + 送料。
製品ページ: WR-UC32
前情報どおり、ubuntuでも差すだけで使えた。
とりあえず、Skypeでも動作を確認できるが、
cheeseというアプリでも簡単に遊べる。
> sudo apt-get install cheese
静止画や動画をキャプチャできる。
カメラはいい感じに小さくて、
カバーを付けれて、ケーブルをなんとかすれば、そのまま外付けUSBカメラになる。
何となれば、HP 2133(スタンダード モデル)に内臓できそうなサイズです。
分解できればやってみたい気もする。
IE でJSONPを使うとき、2,083文字を超えると無視される。
IE でJSONPを使うとき、2,083文字を超えると無視される。
参考: Maximum URL length is 2,083 characters in Internet Explorer
参考: IEのGETクエリの最大長制限を思い知る – F.Ko-Jiの「一秒後は未来」
脱Windowsまで何マイル?
MonoDevelop面白いですね。
でもブレークポイント(ブックマーク)が効かない…
ubuntu 8.10では MonoDevelop 1.9が入るらしいです。
# バージョン表示は1.0
2.0 alpha 2ではブレークできるらしいので、しばらくの辛抱かな?
それまでは、Console.WriteLineでなんとかしましょう。
とりあえず、GPS-CS3のログを読み込んで、ルートを整形するだけはできました。
→ ログ
コースは正常にとれているようですね、
って、位置が全然違うよ。
正しくは→ ログ の赤線です。
データはWGS84、Google MapsのデフォルトもWGS84だったはず?
まぁ、とりあえず、ubuntuだけでできるメドが立ったので、
これからゆっくり進めていきます。
追記:
緯度経度の度分秒の分秒を変換していなかったので、修正。
テストではWadachiが吐き出したhtmlをベースにしているので、
ここら辺は、自分用にカスタマイズ可能な形で作りたい。
また、時々ポイントがピョッとワープするので、これをインテリジェントに取り除きたい。
GPS-CS3でテスト
GPS-CS3を早速テスト。
GPS-CS1KSPと比較してみます。
■起動
電源ボタンを押してから衛星を認識するまでの時間を測定(ただし、目測)
1回目
CS1: 約60秒
CS3: 約30秒
2回目
CS1: 約32秒
CS3: 約16秒
おおっ、約半分の時間で認識してますね。
■自転車で走ってみる(ゆっくりポタリング)
→ ログ
赤のラインがCS3、黄色のラインがCS1です。
こんな感じでログをとってみました。
拡大してみると、CS3の方は、ほぼ道路上に載っていますが、
CS1は全体的にずれている感じ。
とりあえず、CS3になり精度がアップしたことを確認できました。
■GPS情報書き込み
Cyber-shot DSC-T7で撮ったメモリースティックデュオをCS3に入れて、
GPS情報を書き込みます。
一枚あたり3〜4秒ほどかかりました。
■問題点
実は、HP2133 + ubuntu では、CS1をつないでも認識できていません。
CS3は問題なくできているので、今後は大丈夫ですけど。
ゆっくり歩いてのログもとったのですが、
CS3のログはWadachiではエラーが出て、
読み込めませんでした。
■総括
私的にはCS1でも、ロガーとしてはOKなレベルでした。
CS3になり精度は上がっていますが、劇的というほどでもない感じ。
緯度経度が表示されるのは判りやすくていいですね。
見てどうするというわけでもないですが。
今のところ、使い道は考えてないけど、
単体で画像にGPS情報を書き込めるのは便利そうです。
1万6千円ほどだして買い換える必要があったかどうかは微妙ですが、
まぁ、面白いので結果的によかったと思います。
mono – C# on linux
調べてみると、monoが.NET 2.0相当になり使えるようになっている。
Debianやubuntuのパッケージもある。
Synapticで見てみると、ASP.NETもあり、apacheに対応してるようだ。
また、mono-commonなど既にインストールされているコンポーネントもある。
monoで作れば、ローカルでも動かせるし、サーバアプリにもできる。
ログの解析エンジンはWindowsでも使える。
monoで開発してみる。
Synapticで “monodevelop” をインストールする。
“monodoc” というドキュメントのパッケージもあるが、
こちらはほとんど中身が無いようなので、必要はないでしょう。
インスト後、アプリケーション/プログラミング/MonoDevelopを実行。
画面はこんな感じ。
ちなみにMonoDocはこんな。
WindowまわりがGtkな他は、Windows版のVisual Studioと同じようです。
以下、次号。