11

空間座標と1つの変数を持つ行列データがあります。空間分解能は1000メートルです。

> str(dat1)
> List of 3
> $ x: num [1:710] 302340 303340 304340 305340 306340 ...
> $ y: num [1:1241] 5431470 5432470 5433470 5434470 5435470 ...
> $ z: num [1:710, 1:1241] 225 225 225 225 225 ...

ラスター形式に変換したい。

> dat1$x[1:10]
> [1] 302339.6 303339.6 304339.6 305339.6 306339.6 307339.6 308339.6 309339.6 310339.6 311339.6
> dat1$y[1:10]
>  [1] 5431470 5432470 5433470 5434470 5435470 5436470 5437470 5438470 5439470 5440470

次のコードを使用して実行しました。しかし、私が得る解像度は私が持っているものと同じではありません。私の実際のデータで同じ解像度を得るより良い方法はありますか?

> r <-raster(
             dat1$z,
             xmn=range(dat1$x)[1], xmx=range(dat1$x)[2],
             ymn=range(dat1$y)[1], ymx=range(dat1$y)[2], 
             crs=CRS("+proj=utm +zone=11 +datum=NAD83")
            )
> r

class       : RasterLayer 
dimensions  : 710, 1241, 881110  (nrow, ncol, ncell)
resolution  : 571.3135, 1746.479  (x, y)
extent      : 302339.6, 1011340, 5431470, 6671470  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=11 +datum=NAD83 
data source : in memory
names       : layer 
values      : 13.65059, 248.6229  (min, max)
4

2 に答える 2

21

ラスターのヘルプを読んでみてください。マトリックスからラスターを作成する場合、行と列の意味はあなたが思っているものではありません。あなたはそれに1241x710マトリックスを供給していましたが、間違ったベクトルから最大値と最小値を取得していました。

次のことを試してください。

> # small version of your test set
> dat1=list()
> dat1$x=seq(302339.6,by=1000,len=71)
> dat1$y=seq(5431470,by=1000,len=124)
> dat1$z=matrix(runif(71*124),71,124)
> str(dat1)
List of 3
 $ x: num [1:71] 302340 303340 304340 305340 306340 ...
 $ y: num [1:124] 5431470 5432470 5433470 5434470 5435470 ...
 $ z: num [1:71, 1:124] 0.765 0.79 0.185 0.461 0.421 ...
> image(dat1,asp=1)

素敵な正方形のピクセル。次に、ラスターを作成します。

r <-raster(
             dat1$z,
             xmn=range(dat1$x)[1], xmx=range(dat1$x)[2],
             ymn=range(dat1$y)[1], ymx=range(dat1$y)[2], 
             crs=CRS("+proj=utm +zone=11 +datum=NAD83")
            )
plot(r)

完全に非正方形のピクセル。注意深く見ると、マトリックスは画像プロットから90度回転しています。または転置か何か。

解決策:x、y、zリストからラスターを作成するだけです。

 > r=raster(dat1);plot(r)

正方形のピクセル、画像プロットと同じように丸く、解像度はあなたが期待するものになりました:

> r
class       : RasterLayer 
dimensions  : 124, 71, 8804  (nrow, ncol, ncell)
resolution  : 1000, 1000  (x, y)
extent      : 301839.6, 372839.6, 5430970, 5554970  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 7.738103e-05, 0.9995497  (min, max)
于 2013-01-25T09:23:36.133 に答える
0

この文脈で解決が何を意味するのか誤解するかもしれないと思います。これは、単に範囲を行と列内のセルの数で割ったものです。たとえば、あなたの場合、解像度は次のように計算されました。

(1011340 - 302339.6) /1241
# 571.3138

(6671470  - 5431470) / 710
# 1746.479

つまり、実際の意味は、各行に1241の正方形があり、各行が1011340単位302339.6(この場合はメートルだと思います)になるため、各長方形の幅は571になります。同様に、各長方形は上から下に1746です。

各ラスターポイントが1000メートルに等しい辺を持つ正方形であると予想する場合、その範囲は1241*1000(ではなく(1011340 - 302339.6))である必要がありますか?

于 2013-01-25T01:14:41.850 に答える