コードで使用する高速でオープンソースのラスターコスト距離関数を探す


9

私はコードを埋め込むことができる高速でオープンソースのコスト距離関数を求めてインターネットを調査してきました。この機能は基本的に、ソースラスタとコストラスタを指定し、コスト距離ラスタを出力できるArcGIS実装のように機能するはずです。とは言っても、ジオメタデータが埋め込まれた「ラスタ」を必ずしも入力する必要がないという点で、実装はArcGISほど洗練されている必要はありません。データが正しく重複していることを確認できるため、単純な数値配列をとる署名で十分です。その時に私は関数を呼び出します。

私の具体的な目的は、ユーザーのクリックに基づいて、1000 x 1000のコストラスタの中心の単一ポイントまでのコスト距離を計算することです。そのため、高速実行が非常に重要です。

AC#の実装が理想的ですが、そこにあるものは何でも見ていきます。

これをサポートするオープンソースライブラリを知っている人はいますか?ご協力いただきありがとうございます!

回答:


5

GRASS GISには、r.costソースドキュメント)にC実装があり、最小ヒープを使用してい ます。または、QuickGraphFloyd-Warshallなどのグラフパッケージを使用してコストを計算することもできます。

GRASS 6.4での最近の変更により、r.costが大幅に速くなったため、おそらく十分なパフォーマンスが得られる可能性があります。私のラップトップでは、1Mセル領域で約3秒、騎士の移動を有効にして5秒かかります。GRASSはCアプリケーションであり、C#コードベースのドロップインソリューションではありません。スタックに追加しても問題ない場合は、PyWPSを使用してGRASSを呼び出し、その結果をアプリケーションの他の場所で使用できます。


これをWebアプリケーションで使用するため、数秒で操作を完了することが目標です。1つのターゲットセルと比較的狭い最大コスト距離(中心のターゲットセルからコストラスタのエッジまでの距離、最小コストで直線を想定)のみが存在します。これらの条件下でArcMapを使用して行ったテストでは、それが可能であると思います。C#でGRASSを使用するためのヒントや経験はありますか?
atogle 2010

私はあなたの質問に答えるために私の質問を更新しました、それはコメントとして始まりましたが、長すぎました。お役に立てば幸いです。
scw

ありがとうscw!これはすべて素晴らしい情報ですが、GRASSコードの移植を開始しない限り、実際に必要な場所にたどり着くことができません(これは気にしていません)。たぶん、いくつかのヒントを持つ他のいくつかのラスターオタクがそこにいます。これからも掘り下げていきます。解決策を投稿します。
atogle 2010

多分あなたはあなたの同僚に頼ることができます:azavea.com/research/staff-research-projects/map-algebra ;-)堅牢で高速な実装であるGRASSコードを提案しました。C#はジオプロセシングスペースにとって比較的新しいため、既存のものです。実装するのは難しいかもしれません。
scw

scw-それが私の旅の始まりです。私の問題は、彼の実装が高品質の計算のための処理時間を犠牲にすることです。現在、反対のことを行うアルゴリズムに取り組んでいます。GRASSは素晴らしい提案です。実際に使用する方法がありません。=)
atogle 2010

3

r.costGRASS の機能をよく使っています。1000 * 1000グリッドは、通常のラップトップでは問題ありませんでした。開発中のRパッケージ(gdistance、http: //r-forge.r-project.org/projects/gdistance/ )もあります。GRASSの方がずっと速く見つかりました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.