【发布时间】:2014-11-25 03:59:08
【问题描述】:
我正在使用Bivand 的书来尝试弄清楚如何将 R 用于空间数据,但遇到了困难。
我有一个文件夹,其中包含从 1950 年到 2010 年的年度 tiff 文件(名称:tas_mean_C_cru_TS31_01_1950,列 4762,行 2557,源类型连续,像素类型浮点,像素深度 32 位,压缩 LZW)。
我想用多边形图层对它们进行剪辑,然后将剪辑后的栅格放入与原始栅格同名的新文件夹中。我有下面的代码,我试图从书中和在线的示例中进行操作,但它不起作用。我的问题出现在循环部分,最后出现错误。
我的两个问题是: 1)我的循环语句有什么问题?我正在尝试遍历 input.path 中定义的文件夹中的文件。 2)如果我退后一步,忽略剪辑,我怎样才能将文件复制并放置在同名的新文件夹中?
谢谢珍
#load libraries
library (sp)
library (rgdal)
library (raster)
library (maps)
library (mapproj)
#SET THE WORKING DIRECTORY PATH
input.path = "F:/Dropbox/GIS/SNAP/Temp/tas50_09/"
#SET THE OUTPUT DIRECTORY
out.file<-"F:/temp/"
#FIND THE SIZE OF THE MATRIX -- WILL NEED THESE TO PRE-ALLOCATE SUBSEQUENT MATRICES
nrow <- 2557
ncol <- 4762
# initial rasters are....
# xmn=-2173225.11814296,xmx= 1498276.88185705, ymn = 409671.150470569,
# ymx = 2381118.15047057, crs = '+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs')
# polygon to clip rasters
poly<-readOGR("F:/Dropbox/GIS/AKCommunities","AleutianComm50mile")
#reads the path to the files with a tif extention
file.names <- dir(input.path, pattern =".tif")
# then a loop for reading each existing file of type ".tif" as table
for(j in 1:length(input.path)){
v <- extract(input.path, poly, weights=TRUE, cellnumbers=TRUE)
#Write the data to a geotiff
out <- raster(v ,xmn=-1446037.8545397,xmx= -686037.854539692, ymn = 356262.979377343, ymx = 607262.979377344, crs = '+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs')
writeRaster(v,filename=paste(out.file,'file.names ',sep=''),format = 'GTiff',options='COMPRESS=LZW',datatype='FLT4S',overwrite=T)
}
# I get the following error
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘extract’ for signature ‘"character", "SpatialPolygonsDataFrame"’
【问题讨论】:
-
您好 Jen,欢迎来到 Stack Overflow。请求资源建议的问题在这里被认为是题外话,通常很快就结束了。您可以通过识别您发布的代码 sn-p 遇到的特定问题来使您的问题符合网站的规则,而不是征求意见。
-
提出好的问题是一门艺术。一开始并不容易。在这个主题上有非常有用的suggestions。不过,公平地说,具有空间数据的可重现示例可能会很棘手(但这并没有降低它的重要性)。如果您的问题更侧重于关键字,请说“迭代栅格多边形剪辑?”更多有类似问题的人将有机会在这里找到答案。谢谢。
-
你不能把所有的文件都堆叠起来,然后剪辑堆叠的文件吗?