1

管理エリア全体のバイオマス データの gstat パッケージを使用して、R でバリオグラムを計算しようとしています。バイオマス データは、解像度が 3.5 フィートまたは 1.0668m のラスター データセットです。バリオグラム関数に渡す SpatialpointsDataFrame のサイズは 18.6 Mb (814223 要素) です。(spatialpixelsDataFrame も試しましたが、1.0668m ピクセル サイズが気に入りません)。コードを実行すると:

v = variogram(ras.grid1@data[[1]]~1, data = ras.grid1)

出力 "v" を見ると、管理領域よりもはるかに大きい (対角線の長さの 1/3 よりもはるかに大きい) 距離値が得られます。

小さな管理単位 (40 ha) でバリオグラム関数を実行すると、期待どおりの結果が得られます (これは、7.9 Mb のサイズと 344259 要素の SpatialPointsDataFrame を使用しています)。

最初の大きなラスター データセットを 200 m にして、カットオフを小さくするようにハード コーディングすると、期待どおりの距離値が得られます。距離を上げようとすると、もう一度 600m としましょう。指定された 600m のカットオフよりもはるかに大きな距離値が得られます。300mも予想外の結果をもたらします。例えば:

    ####variogram computation with 200m cutoff....It works
    v = variogram(ras.grid1@data[[1]]~1, data = ras.grid1, cutoff=200)
    v
              np       dist    gamma dir.hor dir.ver   id
    1   195954282   8.874169 4990.504       0       0 var1
    2   572500880  20.621626 5627.534       0       0 var1
    3   958185761  33.701344 5996.423       0       0 var1
    4  1288501796  46.920392 6264.396       0       0 var1
    5  1652274803  60.198360 6472.187       0       0 var1
    6  1947750363  73.502011 6642.960       0       0 var1
    7  2282469596  86.807781 6802.124       0       0 var1
    8  2551355646 100.131946 6942.277       0       0 var1
    9  2849678492 113.441335 7049.838       0       0 var1
    10 3093057361 126.751400 7149.102       0       0 var1
    11 3375989515 140.081110 7240.848       0       0 var1
    12 3585116223 153.418095 7322.990       0       0 var1
    13 3821495516 166.721460 7394.616       0       0 var1
    14 4036375072 180.053643 7443.040       0       0 var1
    15 4235205167 193.389119 7476.061       0       0 var1

    ####variogram computation with 600m cutoff....It returns unexpected 
    ####distance values
    v2 = variogram(ras.grid1@data[[1]]~1, data = ras.grid1, cutoff=600) 
    v2
       np        dist      gamma dir.hor dir.ver   id
    1  1726640923    26.54691   5759.951       0       0 var1
    2   593559666   510.62232  53413.914       0       0 var1
    3  3388536438   229.26702  15737.659       0       0 var1
    4  1464228507   966.36789  49726.788       0       0 var1
    5  3503141163   623.13559  25680.965       0       0 var1
    6   878031648  3454.21122 117680.266       0       0 var1
    7  2233138601  1761.91799  50996.719       0       0 var1
    8  3266098834  1484.40162  37369.451       0       0 var1
    9  4056578316  1420.49358  31556.527       0       0 var1
    10  254561085 26030.66780 517601.669       0       0 var1
    11  562144107 13256.59985 239163.649       0       0 var1
    12  557621435 14631.84504 243476.857       0       0 var1
    13  385648032 22771.12890 352898.971       0       0 var1
    14 4285655256  2163.11091  31213.201       0       0 var1
    15 3744542323  2575.19496  34709.529       0       0 var1

また、データを 3m まで拡大すると、期待される距離値が再び得られます。

ラスター データセットのサイズが大きいことが問題の原因であり、実行しようとしていることが不可能なのか、何か間違っているのか、それとも別の方法があるのか​​はわかりません。

助けてくれてありがとう。

4

1 に答える 1

0

これをさらに詳しく調べたところ、SpatialPointsDataFrame のサイズが問題の原因になっているようです。私のマシンでは、サイズを 10 Mb 未満に保つことで問題が解決したようです。SpatialPointsDataFrame のサイズを縮小するために、次を使用して元のラスターをサンプリングしました。

  ras.grid<-ras.grid[sample(1:length(ras.grid), 350000),] 
于 2018-07-27T20:17:40.387 に答える