从 sf 点对象制作 SpatRaster

问题描述 投票:0回答:1

我正在使用旧代码将内容从

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)
r geospatial
1个回答
0
投票

这是一种选择。第二个是将

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()
功能可让您将空间几何图形栅格化为栅格,但这更多地适用于非等距几何图形:)。

© www.soinside.com 2019 - 2024. All rights reserved.