标签: r-stars

针对此警告,我实际上应该做什么?“请注意,rgdal 将于 2023 年底退役”

当我加载 rgdal 包时,我一直注意到这条消息:

“请注意,rgdal 将于 2023 年底退役,计划尽早使用 GDAL 和 PROJ 过渡到 sf/stars/terra 功能。”

我不知道这意味着什么。这是否意味着有一些 sf/stars/terra 函数使用 rgdal 而其他函数则不使用?或者这是否意味着 sf/stars/terra 根本不使用 rgdal,并且我应该使用这些软件包而不是其他依赖 rgdal 的软件包?

哪些依赖 rgdal 的常见软件包会受到影响?

r rgdal r-sf r-stars terra

11
推荐指数
1
解决办法
4752
查看次数

星星包:如何根据属性(文件名)定义附加维度?

我有一组光栅文件(在本例中是从http://www.paleoclim.org/下载的),我正在使用 star 包将其读入 R 中。

library("tidyverse")
library("fs")
library("stars")

data_path <- "./paleoclim"
(data_files <- list.files(data_path, pattern = "*.tif"))
#>   [1] "BA_v1_2_5m_bio_1_badia.tif"             
#>   [2] "BA_v1_2_5m_bio_10_badia.tif"            
#>   [3] "BA_v1_2_5m_bio_11_badia.tif"   
#> [...]         
#>  [39] "EH_v1_2_5m_bio_1_badia.tif"             
#>  [40] "EH_v1_2_5m_bio_10_badia.tif"            
#>  [41] "EH_v1_2_5m_bio_11_badia.tif"       
#> [...]         
#>  [58] "HS1_v1_2_5m_bio_1_badia.tif"            
#>  [59] "HS1_v1_2_5m_bio_10_badia.tif"           
#>  [60] "HS1_v1_2_5m_bio_11_badia.tif"           
#> [...]         

(paleoclim <- read_stars(path(data_path, data_files)))
#> stars object with 2 dimensions and 133 attributes
#> attribute(s):
#>  BA_v1_2_5m_bio_1_badia.tif  BA_v1_2_5m_bio_10_badia.tif 
#>  Min.   :101.0               Min.   :213.0               
#>  1st Qu.:166.0               1st Qu.:278.0 …
Run Code Online (Sandbox Code Playgroud)

r spatial r-raster tidyverse r-stars

4
推荐指数
1
解决办法
1017
查看次数

在 R 中从大栅格创建多边形

我有一个大的光栅文件(5GB),仅包含 1 和 NA。我想将其转换为包含 1 的区域的多多边形,并将相邻单元格溶解为一个多边形。

我已使用将文件导入到 R

r = raster::raster(my_filename)
r
class      : RasterLayer 
dimensions : 17452, 45000, 785340000  (nrow, ncol, ncell)
resolution : 0.008, 0.008  (x, y)
extent     : -180, 180, -55.9875, 83.6285  (xmin, xmax, ymin, ymax)
crs        : NA 
source     : C://...binary_X01_januarysnow.asc 
names      : binary_X01_januarysnow 
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法来创建多边形:

  • 来自光栅的 rasterToPolygons 并带有溶解==TRUE选项(R崩溃)
  • isoband 来自 isoband 包(R 崩溃),

当我在栅格覆盖 appr 的子集上尝试时,这两种方法都按预期工作。西班牙地区,所以我认为问题仅在于数据的大小,而不是我的代码。

  • 然后我尝试使用 read_stars 读取我的栅格,并使用stars::st_as_sf(st, as_points = FALSE, merge = TRUE, connect8 = TRUE). 这返回了一个空多边形,可能是因为该文件被读取为星星代理对象,但我不确定,我在网上找不到任何有关该信息的信息。然后我通过使用将栅格强制读取为星形而不是星形代理,read_stars(my_filename, proxy=FALSE)并尝试使用st_as_sf上面的命令,但收到消息“错误:无法分配大小为 …

r geospatial large-data r-raster r-stars

3
推荐指数
1
解决办法
3063
查看次数

R 程序星中曲线数据的空间运算

我是该包的新手starsR正在尝试使用曲线数据进行基本的空间操作。我正在使用 netCDF 气候数据。我能够将 netcdf 与 shapefile 一起读入 r 中,我想用它来指定我想要进行分析的区域。我尝试直接使用裁剪文件,st_crop()但收到以下错误:

Warning message:
In st_crop.stars(test, wrst) : crop only crops regular grids
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用如下代码来扭曲星星对象:

warp <- test %>% st_set_crs(3338) %>% st_warp(st_as_stars(st_bbox(), dx = 2))
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

Error in colrow_from_xy(pts, x, NA_outside = TRUE) : 
  colrow_from_xy not supported for curvilinear objects
Run Code Online (Sandbox Code Playgroud)

我是否需要“展平”曲线网格才能在给定区域进行分析?如果是这样,我该怎么做?或者,相反,如果我能够进行类似st_crop()或等效的操作或使用曲线网格的raster操作,有人可以为我指出正确的方向吗?非常感谢。calc()stackApply()

r r-raster r-sf r-stars

3
推荐指数
1
解决办法
603
查看次数

如何重新分配 R 星对象中的单元格/像素值

我是 R 中的 star 包的新手,并且正在尝试弄清楚如何为二维 star 对象(栅格包中的栅格)中的单元格分配新值。使用光栅我可以执行以下操作

\n
> library("raster")\n> library('stars')\n> tif = system.file("tif/L7_ETMs.tif", package = "stars")\n> ras<-brick(tif)[[2]] #create raster layer from 2nd layer of multilayer tif\n> ras[1,1:5] #see first 5 values of top row of ras\n[1] 56 57 52 45 52\n> ras[1,1:4] <-100 #replace first 4 values of top row of ras\n> ras[1,1:5]\n[1] 100 100 100 100  52\n
Run Code Online (Sandbox Code Playgroud)\n

根据 star 包手册中的 st_subset 说明,分配遵循 \xe2\x80\x98x[i]<-value\xe2\x80\x99 但我很难理解 \xe2\x80\x98i\xe2\x80\ 的使用x99 在这种情况下。我失败的尝试如下,但我希望有人可以提供可行的替代方案。

\n
> tif = system.file("tif/L7_ETMs.tif", package = "stars")\n> st<-read_stars(tif)[,,,2] #create …
Run Code Online (Sandbox Code Playgroud)

r-raster r-stars

2
推荐指数
1
解决办法
1501
查看次数

标签 统计

r-stars ×5

r ×4

r-raster ×4

r-sf ×2

geospatial ×1

large-data ×1

rgdal ×1

spatial ×1

terra ×1

tidyverse ×1