5

プログラムで GPS ログを画像に変換する方法を探していて、これを Ruby で実行したいと考えています...それが受け入れられるツールである場合。私には GIS のバックグラウンドはまったくありませんが、プログラマーとして、これは興味深い問題だと思います。

これが私がこれまでに思いついたものです。まず、ある種のグラフ作成ライブラリが必要です。そのためのRubyバインディングを見つけたので、 gnuplotに行きましたが、最近はRが熱くなっているようです。GPX ファイルを変換し、データを gnuplot にフィードする小さなスクリプトを作成しました。結果は次のようになります: alt text http://dl.dropbox.com/u/45672/gpslog.png

これは問題ないように見えますが、gnuplot は空間データではなくグラフを作成するためのツールのようです。これはそれを行う方法ですか、それとももっと良い解決策がありますか?

これは別のです。このようなものをどのように構築するか考えていますか?

4

6 に答える 6

4

最初の質問への回答

「Ruby でこれをやりたい...それが受け入れられるツールである場合」と述べたので、私は手足に出て、Ruby 以外のソリューションがすべてを満たしている場合、Ruby 以外のソリューションに対してオープンである可能性があると想定します。その他の要件。

私がPythonをお勧めする主な理由は、 Beginning Python Visualizationの最初の章で、著者である Shai Vaingast が GPS 受信機から GPS データを読み取り、結果をプロットする例を紹介しているためです。Python ベースのソリューションを受け入れる場合、この本は優れたリソースになります。

GPS データの読み取りとプロットに使用される Python パッケージは次のとおりです。

  • シリアルポートから GPS データを読み取るpySerial
  • matplotlibを使用してデータをプロットします。" matplotlibは、Python で配列の 2D プロットを作成するためのライブラリです。MATLAB® グラフィックス コマンドをエミュレートすることを起源としていますが、MATLAB から独立しており、Pythonic のオブジェクト指向の方法で使用できます。"

これは、 GPS データをプロットするためのmatplotlibのさまざまな機能のいくつかを示す、Shai Vaingast によって作成された図の例です。

代替テキスト

あなたが Python ソリューションにオープンではなく、何らかの理由で Ruby を好むのであれば、私は理解しています。Ruby でmatplotlibに相当するものを検索しようとしましたが、相当するパッケージが見つかりませんでした。

最後の質問への回答

これは別のです。このようなものをどのように構築するか考えていますか?

右下隅を見ると、その画像を作成するためにDISLINが使用されていることがわかります。DISLIN はかなりの数のプログラミング言語で利用できますが、DISLIN のソフトウェア要件のページには、Ruby がサポートされていることが示されていません。

代替テキスト

DISLINのサイトによると、

DISLIN は、曲線、極座標プロット、棒グラフ、円グラフ、3D カラー プロット、曲面、等高線、およびマップとしてデータを表示するための高レベルのプロット ライブラリです。

このソフトウェアは、オペレーティング システム UNIX、Linux、FreeBSD、OpenVMS、Windows、Mac OSX、および MS-DOS 上のいくつかの C、Fortran 77、および Fortran 90/95 コンパイラで利用できます。DISLIN プログラムは非常にシステムに依存しないため、オペレーティング システムを変更せずに別のオペレーティング システムに移植できます。

一部のオペレーティング システムでは、プログラミング言語 Perl、Python、Java、および C/C++ インタープリター Ch も DISLIN でサポートされています。DISLIN インタープリター DISGCL は、サポートされているすべてのオペレーティング システムで使用できます。サポートされているオペレーティング システムとコンパイラの完全なリストを参照してください。

于 2010-09-10T01:12:15.847 に答える
1

どのプログラミング言語からでも gnuplot を使用することは、良い出発点だと思います。

ただし、コードのどこかに gnuplot コマンドを追加することを強くお勧めset size ratio -1します。これにより、プロットで x 軸と y 軸のスケールが等しくなります。これは非常に重要です。

また、時間的に等間隔に配置された非常に小さなポイント マーカーを使用してラインを拡張することもできます (データに時間情報がある場合、または少なくとも行が一定の時間間隔でサンプリングされることがわかっている場合)。さもなければ失われます (つまり、ライン上の大きな間隔のポイント マーカーはより速い移動を意味します)。明らかに、適切な間隔でポイント マーカー間の時間間隔を選択するか、そのような時間間隔を自動的に計算する必要があります。配置したいポイントの総数。時間間隔は、トラックの合計時間をそのようなポイント数で割ることによって得られます。これは、適度に規則的な動きに対して確実に機能するはずです。

もう 1 つのオプションは、gnuplot とは異なるグラフ作成システムを使用することです。gnuplot は強力ですが、少し古いものです。私が知っているオプションは次のとおりです。

3 番目のオプションが最も楽しいようです。

于 2010-09-09T09:24:38.050 に答える
1

本当に画像が必要ですか、それともデータを視覚化する方法だけが必要ですか? グーグルマップのAPIを使ってみてはどうですか?

このリンクをチェックしてください:

http://google-dox.net/O.Reilly-Google.Maps.Hacks/0596101619/googlemapshks-CHP-4-SECT-10.html

于 2010-07-14T23:05:55.783 に答える
1

GDALは非常に人気のあるオープン ソース GIS キットであり、GDAL Ruby バインディングがあります。地図データが欲しいならオープンストリートマップがとても便利です。OSM と GPS を組み合わせてプロットすると、かなり良い結果が得られます。GDAL/OGR Apiチュートリアルはこちらです。

于 2010-09-10T12:13:22.483 に答える
0

Processingについては既に聞いたことがあるかもしれませんが、 Ruby-Processingについては聞いたことがありますか?

Ruby-Processing readmeから:

Ruby-Processing は、Processing コード アート フレームワークの Ruby ラッパーです。

…</p>

Ruby で質の高い時間を過ごすのが楽しい午後のアイデアである場合、または
ペースの速いコードアートの世界に入り込みたいという野心を抱いている場合は、おそらく Ruby-Processing を試してみる価値があります。

…</p>

Processing は、小さなコード アーティファクト、アニメーション、ビジュアライゼーションなどを作成するための MIT が開発したフレームワークであり、Ben Fry と Casey Reas によって最初に開発され、少数のオープンソース コントリビューターによってサポートされています。
処理は視覚指向プログラミングの一種の標準となり、Nodebox、Shoes、Arduino、およびその他の類似プロジェクトの設計に強い影響を与えています。

于 2010-09-09T23:19:17.577 に答える
0

R について詳しく知りたい場合は、そのための Ruby バインディングもありますが、このプロジェクトは 1 年以上活動していません。

http://github.com/alexgutteridge/rsruby

于 2010-09-05T16:07:27.407 に答える