问题标签 [r-stars]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
84 浏览

r - 什么会导致聚合多边形和栅格数据的缺失值?

多边形数据与栅格数据的聚合(带有sf::aggregate())会生成一系列规则的缺失数据。

在此处输入图像描述

请考虑以下代码:

请注意,r这两个变量中不包含任何缺失数据

0.08376 4.79556 9.77700 14.13988 18.06134 196.88487

0.05215 2.08035 4.39209 5.51724 7.46488 54.89545

0 投票
1 回答
343 浏览

r - 如何在 Robinson 投影中使用 tmap 绘制全局栅格而没有重复区域?

我最近主要使用栅格和 tmap 绘制了一些全球栅格。我想用罗宾逊投影而不是经纬度来绘制地图。然而,从下图(阿拉斯加、西伯利亚、新西兰)可以看出,对 Robinson 的简单投影会复制地图边缘的某些区域。

以前,我发现了一种使用 PROJ.4 代码参数“+over”的解决方法,如herehere中所述。

随着使用 GDAL > 3 和 PROJ >= 6 对 rgdal 的最新更改,此解决方法似乎已过时。有没有人找到一种新方法来绘制 Robinson/Eckert IV/Mollweide 中的全球栅格而没有重复区域?

我在 macOS Catalina 10.15.4 上运行 R 4.0.1、tmap 3.1、stars 0.4-3、raster 3.3-7、rgdal 1.5-12、sp 1.4-2、GDAL 3.1.1 和 PROJ 6.3.1

在此处输入图像描述

我尝试对星星而不是光栅做同样的事情,但没有找到分辨率,据说是因为 tmap 从 3.0 版开始使用星星。

感谢您提供任何见解 - 希望其他人正在考虑这个问题!

0 投票
1 回答
752 浏览

r - 从R中的大栅格创建多边形

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

我已使用将文件导入 R

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

  • 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命令,但收到消息“错误:无法分配大小为 2.9 Gb 的向量”

我知道在最坏的情况下,我可能会降低光栅分辨率并因此降低尺寸,并且能够创建我想要的多边形(但分辨率较低),但我想知道是否有人有其他建议我可以尝试?1 和 NA 都位于大的连续区域中,因此如果有帮助的话,在边缘具有高分辨率就足够了。

PS 这是我在 StackOverflow 上的第一个问题,所以如果我的问题没有清楚地描述,我深表歉意。我不知道如何提供大型数据集的可重现示例。

0 投票
0 回答
123 浏览

gis - 将大星星对象转换为 sf 对象

我的最终目标是将土地覆盖栅格 (.tif) 对象转换为 sf 对象,该对象表示栅格网格和每个几何图形中每个单元格的原始值。我已经能够为较小的栅格执行以下操作:

然而,在较大的栅格中(例如,我最大的栅格当前是 11482x12607 像元),read_stars() 函数将栅格导入为“星代理”,这是包处理大型栅格数据集的一个步骤。虽然函数不接受星号代理对象st_as_sf,但可以在函数中设置“proxy = FALSE”。但是,如果我在最大的数据集中执行此操作,则st_as_sf(landcover_stars)使用生成的对象运行会使我的笔记本电脑崩溃 {16 GB RAM,i7 2.70GHz 处理器}。

在将非常大的星形对象转换为 sf 时,有没有办法可以减轻机器上的负载?

另外 - 可能是它实际上是新生成的 sf 对象正在耗尽我的机器吗?

如果您想测试它,这是一个虚拟栅格,整数值随机生成,范围从 1 到 10:

0 投票
1 回答
38 浏览

r-stars - 删除 emtpy 光栅 - 星星包 R

我已经使用stars包加载了一个栅格,然后在栅格上创建了​​切片。现在我根据这些图块对栅格进行子集化。

r是使用加载的栅格read_stars("filename.tif")

现在我想删除crop_tiles空的。即栅格值为 NA 的图块

0 投票
1 回答
334 浏览

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

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

reprex 包(v0.3.0)于 2020-12-07 创建

文件名包含两条信息,我想将它们表示为星星对象的维度,例如HS1 _v1_2_5m_ bio_1 _badia.tif 指的是时期“HS1”和生物气候变量“bio_1”。

我已经用它st_redimension()来创建新的维度和级别:

但这实际上并没有将属性(文件名)的值映射到新维度的级别。x此外,关于原始和尺寸的大部分信息(例如 CRS)y都丢失了,因为我必须手动重新创建它们。

如何根据另一个维度或属性正确定义星星对象的新维度?

0 投票
1 回答
287 浏览

r - 在第二层/属性上提取具有缓冲条件的栅格的平均值

在此处输入图像描述 在此处输入图像描述

我有这个星星对象(也可以格式化为光栅):

其中有 2 个属性(在栅格的情况下为图层):温度和海拔。使用温度,我想选择落在缓冲区内的像素并返回平均值,仅适用于每次与所考虑的高度差小于 90 米的像素。

任何想法如何做到这一点?计算缓冲区内像素的平均值非常容易,但我找不到为它们设置任何条件的方法。

我将非常感谢您的帮助和建议。使用其他软件包satrs的方法也非常受欢迎:)

0 投票
1 回答
389 浏览

r - 如何使用带有 R 星包的多边形从栅格中提取值?

使用该stars包,该st_extract()函数可以从定义位置的栅格中提取值。

我想做的是在这些点周围使用缓冲区并提取,比如说,mean缓冲区内的值。创建缓冲区

现在我们有多边形

问题就在这里,该st_extract()函数仅使用点而不使用多边形。

有没有办法在多边形下提取信息?

reprex 包于 2021-02-19 创建(v1.0.0)

0 投票
1 回答
111 浏览

r - 按网格区域规范化 R 星对象?

第一篇文章:)

我一直在将我的 R 代码从 sp() 转换为 sf()/stars(),而我仍在努力掌握的一件事是考虑我的网格中的区域。

这是一个示例代码来解释我的意思。

我尝试从这个小插图(https://github.com/r-spatial/stars/blob/master/vignettes/stars5.Rmd)松散地采用代码来将 x 中的每个值除以其网格区域,它没有按预期工作(也许是因为我的对象是星星而不是科幻?)

似乎有效的方法如下。

以下是我对这段代码的担忧。

  1. 我担心当我将 x_area$area(一个矩阵,纬度/经度的区域)转换为数字向量时,我可能会弄乱网格与其区域之间的纬度/经度匹配。我做了一些粗略的测试,看看这些区域是否符合我的预期,但我无法避免担心这可能会导致难以捕捉的错误。

  2. 我以正确的单位从“x_area”开始,只是在计算过程中删除然后再次设置单位,这似乎并不干净。

有人可以为我正在尝试做的事情建议一个“更清洁”的实现,即在保持整个单位的同时将网格乘以或除以其面积?或者说服我我的代码没问题?

谢谢!

0 投票
1 回答
470 浏览

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

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

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

非常感谢