我正在使用旧代码将内容从
stars
和 raster
转换为 terra
。如何从具有等距坐标的 SpatRaster
点对象制作 sf
?我可以通过使用 sf
对象并在使用 data.frame
之前制作一个 rast
来做到这一点。这是从 foo_sf
到 foo_rast
的最佳方式吗?
library(sf)
library(terra)
tmp <- expand.grid(x=1:10,y=1:10)
tmp$z <- runif(100)
foo_sf <- st_as_sf(tmp,coords=c("x","y"))
# convert to a df and then to SpatRaster?
foo_df <- data.frame(st_coordinates(foo_sf),z=foo_sf$z)
foo_rast <- rast(foo_df)
这是一种选择。第二个是将
tmp_sf
转换为 terra::vect()
对象,对其进行光栅化并赋值:
library(sf)
#> Linking to GEOS 3.11.1, GDAL 3.6.2, PROJ 9.1.1; sf_use_s2() is TRUE
library(terra)
#> terra 1.7.71
tmp <- expand.grid(x=1:10,y=1:10)
tmp$z <- runif(100)
foo_sf <- st_as_sf(tmp,coords=c("x","y"))
r <- foo_sf |>
terra::vect() |>
terra::rast()
terra::values(r) <- foo_sf$z
terra::plot(r)
创建于 2024-03-27,使用 reprex v2.1.0
请注意,有
terra::rasterize()
功能可让您将空间几何图形栅格化为栅格,但这更多地适用于非等距几何图形:)。