0

我有一个包含 8 个环境变量的 raster.stack 和一个美国南部生态区域的 shapefile

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 
> 

这里的问题一定是不同程度的。有没有人对如何在光栅包中解决这个问题有任何建议?

4

1 回答 1

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)
于 2013-07-04T20:20:09.350 回答