问题描述
我正在使用 R-INLA 创建物种分布模型,并且我想使用我在 ArcPro 中创建的 shapefile(.shp) 作为空间网格中的障碍。为此,我认为 shapefile 必须采用“SpatialPolygons”格式。
当我使用 st_read() 读取 shapefile(由 6 个多边形组成)时,它被导入为 SpatialPolygonsDataFrame(见附图)。
此外,我尝试使用 worldhire 获取 shapefile,将它们变薄并尝试移除所有额外的小岛,但网格无法在 INLA 上运行。
长话短说,有没有: a) 一种可以将 .shp 文件作为 SpatialPolygons 对象导入的方法(是否需要为每个多边形或不同的函数设置单独的 shapefile)? b) 一种可以将 SpatialPolygonsDataFrame 对象转换为 SpatialPolygons 对象的方法? c) 在 R-INLA 中构建空间自相关网格时使用 SpatialPolygonsDataFrame 对象?
感谢您提供的任何建议,如果我能提供更多信息,请告诉我
Link to image of shapefile plotted using plot() function
Link to image of the SpatialPolygonsDataFrame
解决方法
我不确定这对解决您的潜在问题是否有帮助,但是要从 Spatial*DataFrame 创建 Spatial* 对象,请使用 geometry()
函数:
library(sp)
library(rgdal)
seas = readOGR("il_seas.shp")
class(seas)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
> seas_geom = geometry(seas)
> class(seas_geom)
[1] "SpatialPolygons"
attr(,"package")
[1] "sp"
这只是从 SPDF 中去除所有属性列。