R并将光栅范围导出为esri shapefile

R并将光栅范围导出为esri shapefile,r,raster,shapefile,R,Raster,Shapefile,我正在使用R中的光栅数据集,希望生成其范围的多边形,然后将其导出为ESRI形状文件。我的问题,或者至少我认为是问题所在,发生在我尝试导出空间多边形数据帧时,因为我得到以下错误: writeOGR(p,“.”,“xyz_区段”,driver=“ESRI Shapefile”)中出错: obj必须是SpatialPointsDataFrame、SpatialLinesDataFrame或 空间多边形框架 我的剧本如下。请注意,在R中处理空间数据时,我有一套初学者技能,所以我要求答案要描述清楚。提前感

我正在使用R中的光栅数据集,希望生成其范围的多边形,然后将其导出为ESRI形状文件。我的问题,或者至少我认为是问题所在,发生在我尝试导出空间多边形数据帧时,因为我得到以下错误:

writeOGR(p,“.”,“xyz_区段”,driver=“ESRI Shapefile”)中出错: obj必须是SpatialPointsDataFrame、SpatialLinesDataFrame或 空间多边形框架

我的剧本如下。请注意,在R中处理空间数据时,我有一套初学者技能,所以我要求答案要描述清楚。提前感谢那些插话的人

脚本:

library(raster)
xyz <- raster("xyz.asc")
crs(xyz)
# CRS arguments: +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000  +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0 

e <- extent(xyz)
p <- as(e, 'SpatialPolygons')
crs(p) <- crs(xyz)

library(rgdal)
writeOGR(p, ".", "xyz_extent", driver="ESRI Shapefile")
库(光栅)

xyz发生错误是因为您有一个SpatialPolygons,而不是SpatialPolygonsDataFrame对象。解决这个问题的简单方法是使用
shapefile
函数

library(raster)
xyz <- raster()
e <- extent(xyz)
p <- as(e, 'SpatialPolygons')
crs(p) <- crs(xyz)

shapefile(p, "xyz_extent.shp")
库(光栅)
xyz
x <- shapefile("xyz_extent.shp")