基于shapefile从栅格中提取值

时间:2013-06-28 00:10:01

标签: crop raster shapefile clip

我有一个8个环境变量的raster.stack和美国南部的Ecoregions形状文件

files<-list.files(path='E:/Ecoregions Models/Border Bioclim/',pattern='asc', full.names=TRUE)
predictors<-stack(files)

##subset the main shape file into 12 individual shapefiles for the regions of interest 
ER_11.1<-Level.2.ecoregs[Level.2.ecoregs$NA_L2CODE=="11.1",]...

我试图使用extract函数从每个生态区域中提取5,000个随机点并将它们保存为不同的对象。

我无法将单个生态区域对象投影到光栅文件上。 我已经改变了预测,但仍然存在问题。

>bio_1
class       : RasterLayer 
dimensions  : 324, 444, 143856  (nrow, ncol, ncell)
resolution  : 0.08333333, 0.08333333  (x, y)
extent      : -125, -88, 18.5, 45.5  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=48 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : E:\Ecoregions Models\Border Bioclim\ModelVariables\bio_1.asc 
names       : bio_1 

> ER_11.1
class       : SpatialPolygonsDataFrame 
nfeatures   : 22 
extent      : -1989641, -1450736, -1748693, -208349.6  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=48 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
nvariables  : 8
names       : NA_L2CODE,                NA_L2NAME, NA_L1CODE,                NA_L1NAME,                       NA_L2KEY,                     NA_L1KEY,   Shape_Leng,   Shape_Area 
min values  :      11.1, MEDITERRANEAN CALIFORNIA,        11, MEDITERRANEAN CALIFORNIA, 11.1  MEDITERRANEAN CALIFORNIA, 11  MEDITERRANEAN CALIFORNIA,     331.1174, 1.483274e+08 
max values  :      11.1, MEDITERRANEAN CALIFORNIA,        11, MEDITERRANEAN CALIFORNIA, 11.1  MEDITERRANEAN CALIFORNIA, 11  MEDITERRANEAN CALIFORNIA, 5417939.1114, 8.472524e+04 
> 

这里的问题必须在不同的范围内。 有没有人对如何在光栅包中解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:1)

bio_1的CRS显然是错误的,你有

resolution  : 0.08333333, 0.08333333  (x, y)
extent      : -125, -88, 18.5, 45.5  (xmin, xmax, ymin, ymax)

即美国大部分地区的经度/纬度坐标,但您正在使用

coord. ref. : +proj=utm +zone=48 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

可能是因为您更改了投影名称,而您想要转换(投影)数据?您可以这样做:

将bio_1的CRS恢复为原始值(我推测)

projection(bio_1) <- "+proj=longlat +datum=WGS84" 

将多边形转换为相同的CRS

library(rgdal)
ER <- spTransform(ER_11.1, CRS(projection(bio_1)) )

现在提取值:

v <- extract(bio_1, ER)