2016-07-04 4 views
3

私は様々なxy zデータセットを持つプロジェクトで数百の一貫した等高線マップを作成する必要がある地質学者です。不規則なx、yデータポイントを等高線マッピングのための規則的なグリッドに補間する

不規則なxyzデータポイントの輪郭付けは、均一なx-yメッシュで補間(外挿)されたz値の「グリッド」の作成を伴います。 Rの外側 - このステップは「グリッディング」と呼ばれます。私はRには比較的新しいので、多数の不規則なデータポイントをグリッド化する強力なワークフローを設定しようとしています。私は苦労している!古典的な輪郭マッピングソフトウェアを

及び手順は、ワークフロー:

  1. 読むのxのy zデータ
  2. 最終マップの関心領域(AOI)を決定します。 XMIN、XMAX、YMIN、YMAX
  3. は、グリッド間隔(XINT、YINT)を決定 - (NROW、NCOL) 'グリッド' に列の行と[いいえなしを設定します
  4. 必要な補間の1の適用 - 作成規則的なメッシュ/グリッドで「Z」(共通の補間である:逆距離、逆二乗距離、加重平均、多項式、クリギング、スプラインなど)
  5. 輪郭結果として生じる「グリッド」

私は上記の一連の手順を正確に実行して、分析の全体にわたって柔軟性と制御を実現するためにRスクリプトを作成しようとしています。

dfは、サンプルデータセットからなるデータフレームです。

 wellid property   z  x  y 
    060010  1 0.008849558 756994.5 2637732 
    009410  1 0.260162602 760190.9 2622262 
    009910  1 0.115044248 760898.7 2637466 
    051110  1 0.109243697 761690.2 2630985 
    065610  1 0.066666667 763064.1 2620929 
    011010  1 0.000000000 763089.3 2630888 
    035210  1 0.022556391 765942.4 2625944 
    052510  1 0.157894737 767058.1 2650034 
    006610  1 0.045045045 768265.0 2645318 
    009010  1 0.378151261 768471.8 2636731 
    011210  1 0.028776978 771393.8 2629001 
    064810  1 0.428571429 771394.1 2650776 
    009110  1 0.064220183 775332.6 2648531 
    011410  1 0.148760331 778324.8 2633905 
    065010  1 0.514851485 780480.9 2654874 
    052410  1 0.173913043 780961.0 2637571 
    064110  1 0.019417476 781001.5 2650994 
    009310  1 0.037383178 783904.7 2641130 
    010810  1 0.041237113 786200.6 2652417 
    052610  1 0.150537634 788007.5 2654005 

対象エリアは、以下のように試験領域から決定される:

xmin <- signif(min(wellcoords$x),4) - 1000 
    xmax <- signif(max(wellcoords$x),4) +1000 
    ymin <- signif(min(wellcoords$y),5) - 1000 
    ymax <- signif(max(wellcoords$y),5) +1000 
    xrange <- xmax-xmin 
    yrange <- ymax-ymin 
    gridint <- 500  # grid interval is set same for xint and yint 

値は:それぞれ754700、791500,26196000,2658600、36800、39000、500。

多くの失敗試行の後、必要な補間を行うためにpackage-akimaからinterp()関数を取得しました。 「不規則なグリッド上に輪郭をプロットする」

fld<- with(df, interp(x=df$x, y=df$y, z=df$z, xo=xcoord, yo=ycoord, linear = FALSE, extrap = TRUE)) 

これで、AOIコントロールを必要に応じて指定することはできませんでした。 私はパッケージMBAを使ってみましたが、xy.estパラメータ(グリッドメッシュ)を必要な入力として作成しています。

適切な 'grid'が生成されれば、ggplot2と他の表示機能は強力で十分です。

適切な 'Gridding'パッケージまたは 'Steps'がありますか? ありがとうございます。

答えて

4

akima(およびggplot2のようなグラフィックパッケージ)以外のパッケージを使用する必要はありません。あなたはinterpの引数としてAOIとNoを 'grid'に与えることができますxoyo。 xy.estパラメータはinterp2xyz(interp.obj)で取得できます。

df <- "your example data set" 
# I didn't know What wellcoords were, so I treated df as wellcoords. These values are different from what you said. 
xmin <- signif(min(df$x),4) - 1000 # 756000 
xmax <- signif(max(df$x),4) + 1000 # 789000 
ymin <- signif(min(df$y),5) - 1000 # 2619900 
ymax <- signif(max(df$y),5) + 1000 # 2655900 
gridint <- 500 

library(akima) 
fld<- with(df, interp(x = x, y = y, z = z, linear = FALSE, extrap = TRUE, 
         xo=seq(xmin, xmax, length=gridint), 
         yo=seq(ymin, ymax, length=gridint))) # give AOI and NO of 'grid' 
# check whether the conditions are met. 
length(fld$x); length(fld$y); length(fld$z); range(fld$x); range(fld$y) 
    # 500, 500, 250000 (=500^2), 756000 789000, 2619900 2655900, # all OK 

contour(fld) # Left graph (most basic graphic output) 

fld2 <- as.data.frame(interp2xyz(fld)) # the xy.est parameter (data.frame) 
library(ggplot2) 
ggplot(fld2, aes(x=x, y=y, z=z)) + geom_contour() # Right graph (simple example) 

enter image description here

関連する問題