一个非常常见的过程是使用 sp 包中的SpatialPolygons
函数将线条和边框转换为Polygon
个对象。但是可以将其他对象类转换为SpatialPolygons
吗?我使用 dismo 中的函数circles
创建一个距离已知空间点的特定半径距离的圆周。此函数返回类CirclesRange
的对象。
circ<-circles(spcoords,d=100000)
class(circ)
[1] "CirclesRange"
attr(,"package")
[1] "dismo"
当我尝试将CirclesRange
对象转换为SpatialPolygons
时,会发生以下错误:
Error: is.integer(pO) is not TRUE
然后,我已经搜索了其他方法来转换这个对象,但我还没有成功。我认为首先有必要将“circ”转换为另一个类,然后尝试将其转换为SpatialPolygons
,但我找不到相关信息。
答案 0 :(得分:3)
查看str(circ)
,所需的SpatialPolygons
对象已经是创建对象的一部分。您只需运行circ@polygons
即可提取多边形。以下是基于meuse
数据集的示例代码。
## sample data
data(meuse)
coordinates(meuse) <- ~ x + y
proj4string(meuse) <- CRS("+init=epsg:28992")
## circle around the first 'meuse' feature (top-right corner)
circ <- circles(meuse[1, ], d = 1000, lonlat = FALSE)
poly <- circ@polygons
proj4string(poly) <- proj4string(meuse)
## display data
library(latticeExtra)
spplot(meuse, "elev", scales = list(draw = TRUE),
col.regions = topo.colors(100), key.space = "right") +
as.layer(spplot(poly, fill = "transparent", lwd = 2))