【问题标题】:Converting SpatVector to sf or sp将 SpatVector 转换为 sf 或 sp
【发布时间】:2020-09-23 20:18:12
【问题描述】:

是否有一种直接的方法可以将多边形 SpatVector 类对象(来自 terra 库)转换为简单特征或 SpatialPolygonsDataFrames

谢谢

【问题讨论】:

  • 如果您描述到目前为止您已经尝试过什么(如果有的话),您可能会得到更好的答案。

标签: r r-raster


【解决方案1】:

示例数据

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 

使用当前的terrasf,您可以像这样从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
  • 这是 CRAN raster 中的一个错误 --- 我今天会给他们发送更新版本
  • @SeldomSeenSlim :它适用于 CRAN 版本。您可能还需要更新光栅包才能正常工作
  • @RobertHijmans,更新所有包更正了这个问题。
  • @RobertHijmans 该错误已通过包版本重新出现:terra 1.2.10 raster 3.4.10 sf 0.9.8 spatial 7.3.14
【解决方案2】:

这里有一个解决方法 (https://www.gitmemory.com/issue/rspatial/terra/71/660682352)。您可以使用相同的方法,但不要使用“sf”,而是使用“sp”。希望它对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 2011-09-09
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2021-05-15
    相关资源
    最近更新 更多