6

(x, y, 高度)データのかなりまばらなサンプルしかない地形の地形図を作成する必要があります。もちろん、完全に正確なマップを作成することはできませんが、ある意味で「滑らかな」マップが必要です。「滑らかさ」(おそらく表面曲率の二乗の平均の逆数) を定量化する必要があり、2 つの量の合計である目的関数を最小化したい:

  • 表面の粗さ
  • サンプル地点での表面の高度とその地点で実際に測定された高度との間の平均二乗距離

私が実際に欲しいのは地形図なので、一定の高度の等高線を作成する方法を本当に探しています。表面について話すことなくそれを行うための巧妙な幾何学的方法があるかもしれません。もちろん、輪郭線も滑らかにしたい。

あらゆる提案を歓迎します。これがよく知られた数値問題であることを願っています。私は C に慣れており、FORTRAN の実用的な知識を持っています。Matlab と R については、まったく無知です。


サンプルの配置場所については、ほぼ均等な間隔で計画していますが、地形がより興味深い場所でより多くのサンプルを取得します。たとえば、平野よりも山岳地帯をより密にサンプリングします。しかし、サンプリングに関していくつかの選択肢があることは間違いありません。唯一の問題は

  • 探しているフィーチャを見つけるために、どのくらいの地形をマッピングする必要があるかはわかりません。

  • サンプルの採取には、10 分程度の適度な費用がかかります。そのため、100x100 グリッドのサンプリングには時間がかかる場合があります。

4

4 に答える 4

3

クリギング補間は、スパースサンプルをスムーズに補間するために役立つ場合があります。

于 2009-08-26T17:51:44.497 に答える
3

R にはさまざまな関連ツールがあります。特に、空間ビューを見てください。以前に R-Help で同様の質問があったので、そちらを参照してください。

関数を見てくださいcontour。ここにいくつかのデータがあります:

x <- seq(-3,3)
y <- seq(-3,3)

z <- outer(x,y, function(x,y,...) x^2 + y^2 )

最初のプロットはややラフです:

contour(x,y,z, lty=1)

Bill Dunlap は改善を提案しました。等高線自体を平滑化することで得られる偽のループ. 薄板スプライン (ライブラリ ("フィールド") からの Tps) と黄土 (とりわけ) は表面に適合します。

library("fields")
contour(predict.surface(Tps(as.matrix(expand.grid(x=x,y=y)),as.vector(z))))

Tps()これは、最初に を使用してデータを適合させ、次に を呼び出すため、非常に滑らかなプロットになりますcontour。最終的には次のようになります (シェーディングが必要な場合は、filled.contour を使用することもできます)。

プロットには、lattice(上記の例のように) またはggplot2パッケージのいずれかを使用できます。geom_contour()その場合は関数を使用してください。例はここにあります (ht Thierry) :

ds <- matrix(rnorm(100), nrow = 10) 
library(reshape) 
molten <- melt(data = ds) 
library(ggplot2) 
ggplot(molten, aes(x = X1, y = X2, z = value)) + geom_contour()
于 2009-09-30T18:51:42.570 に答える
2

輪郭アルゴリズムの優れたレビュー。グリッドに補間するために、最初にサーフェスをメッシュ化する必要がある場合があります。

于 2009-08-26T17:28:26.790 に答える
1

多分あなたは使うことができます:

Rで

于 2009-08-26T17:40:28.870 に答える