そこで私は、地理マップ (この場合はシリア) で実行されるエージェント ベースのモデルのセットアップに取り組んでいます。Python で書いてみましたが、最適化のトリックを行った後でも、パフォーマンスはかなり遅くなります。モデルを C++ で書くだけに移行しようと考えていたのですが、どのビジュアライゼーション パッケージがマップを組み込むことができるのかわかりません。私は C++ で gnuplot を使用する傾向がありますが、そのパッケージに GIS ベースマップを組み込む方法を見つけることができませんでした。これが VTK やその他のパッケージで可能かどうかはわかりません。C++ でモデルを高速に実行する方法を見つけたいと考えていますが、地理情報は失われません。助言がありますか?
3 に答える
おそらく、このプロジェクトはあなたに役立つでしょうか?
http://code.google.com/p/vtk-grass-bridge/
GRASS を使用して GIS データを処理できる場合、プロジェクトはそれを VTK がレンダリングできるものにすべて 1 つの C++ アプリケーションで変換できるようです。
だから私は実際にこの問題に対する答えを見つけ出し、みんなのために解決策を投稿しています. Python を使用している場合の最良の選択は、Enthought の mayavi および tvtk パッケージを使用することです。Mayavi は C++ VTK ライブラリの上にある gui です。そして tvtk は、実際には Python が VTK オブジェクトにアクセスするためのラッパーです。これにより、Python GIS パッケージ (pyshp、Shapely など) を使用して GIS オブジェクトを操作し、それらを堅牢で高速な mayavi に書き込んで視覚化することができます。同時に、C++ に固執したい場合でも、gdal や ogr などを使用して C++ でコードを記述し、VTK で視覚化を実行できます。これは、GRASS、QGIS、ArcGIS などの他のパッケージを実行するよりもはるかに簡単で直感的なようです。
このツールセットの動作の良い例を次に示します。 例
モデルの C++ 実装が劇的に高速になると確信できる理由は何ですか? 結果をどのように視覚化するかを考える前に、Python の実装が遅くなる原因にまず焦点を当てることをお勧めします。あなたのアルゴリズムがスケーリングしないということですか?最適化のトリックを試したことがある場合、それらはどのようなトリックでしたか?なぜそれらが機能しなかったと思いますか?
それらの命令が python 、 C++ 、またはその他の言語のソース コードとして開始されたかどうかに関係なく、最終的にはハードウェア上で実行される機械命令に帰着します。あなたのpythonが常に完全に解釈されて実行されていない限り、言語を切り替えるだけでパフォーマンスプロファイルが根本的に異なることに気付くとは思いません。時期尚早の最適化は、依然として避けるべきものです。