私はstackoverflowで質問するのがまったく初めてで、多かれ少なかれR(およびプログラミング全般)の初心者なので、ご容赦ください。
存在のみを示す種の範囲の ASCII ファイルがあります。インターネットの遠方を精査した後、アップロードし、ラスターに変換し、目的の境界線 (私の場合はオーストラリアの海岸線) に沿ってマスクし、投影されていない地図で範囲を視覚化できるようにそれらをプロットしました。
これの質的側面を達成したので、私は量的側面に到達する必要があります。つまり、種間の同情度を計算する必要があります。そのためには、最初にオーバーラップの領域を計算する必要がありますが、ここで問題が発生します。これが私がこれまでにできたことです:
> d
class : RasterLayer
dimensions : 85, 270, 22950 (nrow, ncol, ncell)
resolution : 0.08, 0.08 (x, y)
extent : 119.4993, 141.0993, -36.65831, -29.85831 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 2, 2 (min, max)
> b
class : RasterLayer
dimensions : 140, 222, 31080 (nrow, ncol, ncell)
resolution : 0.08, 0.08 (x, y)
extent : 134.2456, 152.0056, -40.44268, -29.24268 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 2, 2 (min, max)
x<-resample(b,d,method="ngb")
y<-mask(x,d)
>y
class : RasterLayer
dimensions : 85, 270, 22950 (nrow, ncol, ncell)
resolution : 0.08, 0.08 (x, y)
extent : 119.4993, 141.0993, -36.65831, -29.85831 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 2, 2 (min, max)
y は、d 上にマスクされた d と b の間のオーバーラップのラスターです (b 上にマスクしようとすると、範囲が異なるというエラーが表示されます)。その面積はどうやって計算するのですか?ラスターパッケージの area() 関数はこれを吐き出します:
area(y)
class : RasterLayer
dimensions : 85, 270, 22950 (nrow, ncol, ncell)
resolution : 0.08, 0.08 (x, y)
extent : 119.4993, 141.0993, -36.65831, -29.85831 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 63.65553, 68.75387 (min, max)
これをどうするかは完全にはわかりません。これは、エリアを取得するための適切な/正確な/正しい方法ですか? y と b では範囲が異なり、d と y では範囲が同じなのはなぜですか? さらに、area(y) の値の単位は? 単位はあまり重要ではないと思いますが、最終的には (オーバーラップをより制限された種の範囲で割ることによって) 比率を計算する予定ですが、今後の参考のために知りたいと思っています。
これがばかげた質問である場合は申し訳ありません。誰かの意見をお待ちしております。