如何从 R 中的 SpatialPolygonsDataFrame 对象创建 SpatialPolygons 对象?

问题描述

我正在使用 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 中去除所有属性列。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...