【发布时间】:2020-09-23 20:18:12
【问题描述】:
是否有一种直接的方法可以将多边形 SpatVector 类对象(来自 terra 库)转换为简单特征或 SpatialPolygonsDataFrames?
谢谢
【问题讨论】:
-
如果您描述到目前为止您已经尝试过什么(如果有的话),您可能会得到更好的答案。
是否有一种直接的方法可以将多边形 SpatVector 类对象(来自 terra 库)转换为简单特征或 SpatialPolygonsDataFrames?
谢谢
【问题讨论】:
示例数据
library(terra)
f <- system.file("ex/lux.shp", package="terra")
v <- vect(f)
v
#class : SpatVector
#geometry : polygons
#elements : 12
#extent : 5.74414, 6.528252, 49.44781, 50.18162 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs
#names : ID_1, NAME_1, ID_2, NAME_2, AREA
使用当前的terra 和sf,您可以像这样从SpatVector 创建一个sf 对象:
s <- sf::st_as_sf(v)
然后返回SpatVector:
vv <- vect(s)
从SpatVector 创建一个sp 对象
x <- as(v, "Spatial")
x
#class : SpatialPolygonsDataFrame
#features : 12
#extent : 5.74414, 6.528252, 49.44781, 50.18162 (xmin, xmax, ymin, ymax)
#crs : +proj=longlat +datum=WGS84 +no_defs
#variables : 5
#names : ID_1, NAME_1, ID_2, NAME_2, AREA
#min values : 1, Diekirch, 1, Capellen, 76
#max values : 3, Luxembourg, 12, Wiltz, 312
【讨论】:
sp 1.4.4 版和terra 0.9.6 版(从Github 安装),但是当我尝试as(v, "Spatial") 时,我收到一个错误,指出Error in .local(obj, ...) : cannot derive coordinates from non-numeric matrix
raster 中的一个错误 --- 我今天会给他们发送更新版本
这里有一个解决方法 (https://www.gitmemory.com/issue/rspatial/terra/71/660682352)。您可以使用相同的方法,但不要使用“sf”,而是使用“sp”。希望它对你有用。
【讨论】: