问题标签 [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.
r - 如何在 Robinson 投影中使用 tmap 绘制全局栅格而没有重复区域?
我最近主要使用栅格和 tmap 绘制了一些全球栅格。我想用罗宾逊投影而不是经纬度来绘制地图。然而,从下图(阿拉斯加、西伯利亚、新西兰)可以看出,对 Robinson 的简单投影会复制地图边缘的某些区域。
以前,我发现了一种使用 PROJ.4 代码参数“+over”的解决方法,如here和here中所述。
随着使用 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 版开始使用星星。
感谢您提供任何见解 - 希望其他人正在考虑这个问题!
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 上的第一个问题,所以如果我的问题没有清楚地描述,我深表歉意。我不知道如何提供大型数据集的可重现示例。
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:
r-stars - 删除 emtpy 光栅 - 星星包 R
我已经使用stars
包加载了一个栅格,然后在栅格上创建了切片。现在我根据这些图块对栅格进行子集化。
这r
是使用加载的栅格read_stars("filename.tif")
。
现在我想删除crop_tiles
空的。即栅格值为 NA 的图块
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
都丢失了,因为我必须手动重新创建它们。
如何根据另一个维度或属性正确定义星星对象的新维度?
r - 如何使用带有 R 星包的多边形从栅格中提取值?
使用该stars
包,该st_extract()
函数可以从定义位置的栅格中提取值。
我想做的是在这些点周围使用缓冲区并提取,比如说,mean
缓冲区内的值。创建缓冲区
现在我们有多边形
问题就在这里,该st_extract()
函数仅使用点而不使用多边形。
有没有办法在多边形下提取信息?
由reprex 包于 2021-02-19 创建(v1.0.0)
r - 按网格区域规范化 R 星对象?
第一篇文章:)
我一直在将我的 R 代码从 sp() 转换为 sf()/stars(),而我仍在努力掌握的一件事是考虑我的网格中的区域。
这是一个示例代码来解释我的意思。
我尝试从这个小插图(https://github.com/r-spatial/stars/blob/master/vignettes/stars5.Rmd)松散地采用代码来将 x 中的每个值除以其网格区域,它没有按预期工作(也许是因为我的对象是星星而不是科幻?)
似乎有效的方法如下。
以下是我对这段代码的担忧。
我担心当我将 x_area$area(一个矩阵,纬度/经度的区域)转换为数字向量时,我可能会弄乱网格与其区域之间的纬度/经度匹配。我做了一些粗略的测试,看看这些区域是否符合我的预期,但我无法避免担心这可能会导致难以捕捉的错误。
我以正确的单位从“x_area”开始,只是在计算过程中删除然后再次设置单位,这似乎并不干净。
有人可以为我正在尝试做的事情建议一个“更清洁”的实现,即在保持整个单位的同时将网格乘以或除以其面积?或者说服我我的代码没问题?
谢谢!
r-raster - 如何重新分配 R 星对象中的单元格/像素值
我是 R 中的 stars 包的新手,我正在尝试研究如何为二维星对象中的单元格分配新值(光栅包中的光栅)。使用光栅我可以执行以下操作
根据 stars 包手册中的 st_subset 说明,分配遵循 'x[i]<-value' 但我很难理解在这种情况下使用 'i'。我失败的尝试如下,但我希望有人可以提供一个可行的替代方案。
非常感谢