微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何从 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 中去除所有属性列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。