首页 > 解决方案 > 如何从光栅化的“SpatialPolygonsDataFrame”中获取单元格尺寸?

问题描述

SpatialPolygonsDataFrame在 R 中有课程,我想对其进行栅格化。我使用下面的代码栅格化多边形:

> p <- shapefile('MadaGranary')
> p
class       : SpatialPolygonsDataFrame 
features    : 1 
extent      : 100.1269, 100.5313, 5.793798, 6.446769  (xmin, xmax, ymin, ymax)
crs         : +proj=longlat +datum=WGS84 +no_defs 
variables   : 1
names       : id 
value       :  1 
> crs(p) <- NULL

> # Define RasterLayer object
> r.raster <- raster(extent(p), res = 100)
> #rasterize
> p.r <- rasterize(p, r.raster)
> print(p.r)
class      : RasterLayer 
dimensions : 1, 1, 1  (nrow, ncol, ncell)
resolution : 100, 100  (x, y)
extent     : 100.1269, 200.1269, -93.55323, 6.446769  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : memory
names      : layer 
values     : NA, NA  (min, max)
attributes :
 ID id
  1  1

不幸的是,这段代码已将单元格尺寸分配给dimensions : 1, 1, 1 (nrow, ncol, ncell),而获取 的实际值对我来说非常重要ncols and nrows

当 I 时print p.r,我需要dimensions : (nrow, ncol, ncell)在控制台中获取 的值,以便能够保存所有属性,以便以后使用它进行其他分析。 注意resolution我需要得到的输出应该是ncols and nrow新栅格中表示的真实值,但不仅仅是dimensions : 1, 1, 1 (nrow, ncol, ncell)我的代码中显示的那样。

有人可以帮忙吗??

标签: rrastersp

解决方案


如果你想设置nrow然后ncol你这样做(而不是设置分辨率,它表示每个单元格的大小)。这是一个例子:

library(raster)
#Loading required package: sp
e <- extent(0,1,0,1)
r <- raster(e, nrow=100, ncol=100)
r
#class      : RasterLayer 
#dimensions : 100, 100, 10000  (nrow, ncol, ncell)
#resolution : 0.01, 0.01  (x, y)
#extent     : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
#crs        : NA 

推荐阅读