问题标签 [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 - 是否可以在 R 中创建一个星星对象,它是其他两个星星对象的最小值?
我有两个作为 tif 读入 R 的星星对象:
它们覆盖相同的范围并具有相同的分辨率。我知道我可以用对象做代数——例如,要创建一个新对象,它是前两个值的平均值,我可以使用:
但是,我想知道是否可以创建一个从它们中提取最小值的新对象。我已经尝试了几种不同的方法,但我已经用这个碰到了一堵砖墙。有人知道这是否可能吗?
r - 操纵星星物体
我的问题是关于转换“星”类对象。作为时空克里金法的结果,我有一个星星对象,如下所示:
更准确地说,我想做的是将 sfc 维度“拆分”为“x”和“y”坐标。我以一种非常复杂的方式成功地做到了这一点,包括(1)构建四个数据框(每次一个),(2)通过
(3) 使用代码将 4 星对象组装成列表 (4)
用于重新组装具有三个维度的星星对象:
我可以与 ggplot() 一起使用:
这是非常复杂且不优雅的,我相信有一种更直接的方法可以从包含 (x,y) 坐标的 sfc_POINT 对象中获取二维“x”和“y”。
谢谢,罗伯托
r - 我应该怎么做才能响应这个警告?“请注意,rgdal 将于 2023 年底退役”
当我加载 rgdal 包时,我一直注意到这条消息:
“请注意,rgdal 将于 2023 年底退役,计划在您方便的时候尽早使用 GDAL 和 PROJ 过渡到 sf/stars/terra 功能。”
我不知道这是什么意思。这是否意味着有些 sf/stars/terra 函数使用 rgdal 而其他函数不使用?或者这是否意味着 sf/stars/terra 根本不使用 rgdal,我应该使用这些包而不是其他依赖 rgdal 的包?
哪些常见的依赖 rgdal 的软件包会受到影响?
r-stars - 带有值的星对象缺少图层
如果我尝试使用stars::
包从内存中加载 tif 文件,则此对象中没有包含这些值的层。
这是我正在寻找的一个例子:
具有 2 个维度和 1 个属性的星星对象
属性):
分钟。第一曲。中位数平均第三曲。最大限度。
第 1 层 15.75 40.5 41.5 65.25 90
方面):
从到偏移 delta refsys 点值 x/y
x 1 10 -180 36 +proj=longlat +datum=WGS8... NA NULL [x]
y 1 10 90 -18 +proj=longlat +datum=WGS8... NA NULL [y]
在 r_stars 中有一个包含所有值的“层”。但是,如果我使用函数从内存中加载 tif 文件,read_stars()
则输出如下所示:
r_stars <- read_stars("data/dem/dem/1.tif")
r_stars
1 个文件中具有 1 个属性的 stars_proxy 对象:
$
1.tif
[1] "[...]/1.tif"
方面):
从到偏移 delta refsys 点值 x/y
x 1 14400 95 0.000277778 WGS 84 FALSE NULL [x]
y 1 9360 29.6001 -0.000277778 WGS 84 FALSE NULL [y]
缺少“层”。我实际上对如何使用来自星星对象的值一无所知。是否有需要在read_stars()
-function 中指定的参数?
最好的问候,斯滕
r - 如何使用 R 中另一个星星对象的范围从一个星星对象中提取值?
我对在 R 中使用 stars 包很陌生,我无法弄清楚如何创建一个包含来自对象 A 的值但对象 B 的范围的 stars 对象 C。具体来说,我有一张平均弹簧图欧洲的温度(对象 A),我想使用包含落叶阔叶林(对象 B)的单独星星对象来裁剪它。
对象 A:https ://i.stack.imgur.com/DQsZn.jpg
对象 B:https ://i.stack.imgur.com/6dons.jpg
两个对象都使用相同的 bbox 进行裁剪。目标是生成的对象(对象 C)具有 B 的范围,但具有来自 A 的温度值。
tif 文件的 Dropbox 链接:
对象 A:https ://www.dropbox.com/s/lwvdxnis7k38e18/CRU.SpringT.2009.2018_EU.tif?dl=0
对象 B:https ://www.dropbox.com/s/uybxk40z853mu7a/EU%20Dec%20Broadleaf.tif?dl=0
r - 带有裁剪栅格的R中星星栅格的边缘检测
我有一个名为raster
. 我正在尝试对其进行边缘检测,例如:
这很好用,但是当我尝试other_object
使用 sf 对象裁剪光栅时:
由于 NA,我收到错误。有什么方法可以创建裁剪栅格,以使边缘检测方法不会由于图像中缺少区域而引发错误?
r - st_contour - 应该使用 aes 创建映射
我知道“应该使用 aes 创建映射”位已经完成,所以我希望这是一个足够不寻常的案例,因为我试图找出它发生的原因并提出不足。
根据这个线程stars
,我可以使用ggplot
. 我正在尝试将相同的对象绘制为轮廓。有问题的数据文件是All_Rasters_Scaled.asc。ggmap
geom_stars
工作正常。Edzer 告诉我st_contour
返回一个sf
带有轮廓的对象,你必须将它传递给geom_sf
. 所以:
错误:
mapping
必须由aes()
我的印象是,在使用对象时不应该看到这个错误sf
,实际上这在某种程度上是sf
生态系统的重点,因为geometry
存在该列。该对象可能以某种方式被错误地创建并且具有所有 NA:
xmin ymin xmax ymax
呐呐呐呐呐
但是,如果我在没有指定任何参数的情况下创建它:
bbox 输出是一样的。对象中的轮廓最小值/最大值也奇怪地重叠。无论我创建的方式如何mycontour
,我都会遇到同样的aes
错误。尝试指定 aes:
坐标系已经存在。添加新的坐标系,它将替换现有的坐标系。FUN(X[[i]], ...) 中的错误:找不到对象“lon”
或者
警告:忽略未知的美学:x 坐标系已经存在。添加新的坐标系,它将替换现有的坐标系。FUN(X[[i]], ...) 中的错误:找不到对象“纬度”
基本上看起来ggmap
/ggplot
框架不理解mycontour
, 创建者geom_contour
是一个sf
对象,并且它的aes
映射是geometry
列。
任何建议都非常感谢。我不确定是否存在geom_contour
无法正确创建对象的潜在问题,因此所有值都是NA
,并且我不知道如何从对象中提取geometry
数据。sf
mymap
对象的代码ggmap
是:
但是sf
对象通常可以在空白处正常工作ggplot()+
提前致谢!
编辑:添加更多细节:
“sf” “data.frame”
为 1 个特征设置的几何图形
几何类型:MULTIPOLYGON
尺寸:XY
边界框: xmin: NA ymin: NA xmax: NA ymax: NA
大地 CRS:WGS 84
多多边形((((NA NA,NA NA,NA NA,NA NA,NA ...
更多编辑:
工作正常,创建:
xmin ymin xmax ymax
-79.28970 25.68331 -79.21143 25.78939
即看起来也不错。
All_Rasters_Scaled.asc 36270 -none- numeric
包括或不包括在内不x=
应该st_contour()
(并且,经过测试,不会)有所作为。我知道这是不必要的,但我喜欢这样做有两个原因:
明确表达很少会受到伤害,尤其是在共享代码和教他人时。
使用 RStudio 的代码完成宏,您可以在函数中点击选项卡,它会为您提供可供选择的参数列表。我尝试按顺序使用它们。此外,如果您明确使用
x
(或任何默认的第一个参数),那么宏将停止为您提供该参数选项。虽然所有次要语义:)
lemons.ras$All_Rasters_Scaled.asc
是一个矩阵数组,大小为 155x234,值范围从 0 到 1(它已被缩放,因此得名)。所以从概念上讲,mycontour
from中的任何值都不st_contour
应该是NA
.
st_contour
的参数na.rm
是默认的,因此我觉得无论如何TRUE
都应该删除这些s。NA
我越来越觉得有问题st_contour
...
根据getGDALVersionInfo()
有“GDAL 3.2.2,于 2021/03/05 发布”
@lovelery 的测试代码:
工作正常:
l
使用它创建st_contour(x, contour_lines = TRUE, ...)
多线串特征而不是多面特征。如果我对 执行相同操作lemons.ras
,则结果mycontour
具有所有 NA 值,这可能与问题有关。l
:
mycontour
:
创建它们的文件是st_contour
: x
:
lemons.ras
(注意这里有值,从 0 到 1):
差异:
x$L7_ETMs.tif
值是整数。但是将值放大lemons.ras
为整数,mycontour
仍然失败。x$L7_ETMs.tif
是 3 维 [50 x 50 x 2],lemons.ras$All_Rasters_Scales.asc
是 2 维 [155 x 234]。但是代码可以使用plot(l[1])
,plot(l)
所以额外的带/尺寸应该无关紧要,对吧?!
编辑:如果我从 , 中删除1:2
,x = read_stars
效果plot(l)
相同。但是:x 现在是类型:列表 [50 x 50 x 6]。之前是 [50 x 50 x 2]。好的,这是因为输入文件 ,L7_ETMs.tif
是 [349 x 352 x 6] 并且索引将其read_stars(tif)[, 1:50, 1:50, 1:2]
限制为 2 个波段。
st_dimensions(x)
给出:
st_dimensions(lemons.ras)
给出:
所以这可能是问题的根源。即使lemons.rasplot
已作为栅格导入并读入stars
,但它似乎缺少band
属性,老实说,这些属性看起来并没有添加太多东西,但也许st_contour
代码期望它们存在并且没有他们。
实际上看 st_dimensions 的直接输出可能更有启发性:对于 x:
对于柠檬.ras:
相比x
,lemons.ras
有NA
offset
,delta
和point
。x
有NULL
value
s,所以我猜x/y
几何数据x
在 中band
,而对于lemons.ras
它在value
s 中。LAWD 栅格数据令人困惑。
再次阅读星星介绍,看起来拆分和合并属性band
首先需要存在。所以这个问题看起来越来越多地是由于lemons.ras
输入栅格没有band
维度。
该文件是使用以下内容创建的:
我不知道选择是否ascii
意味着没有乐队信息?我对此表示怀疑?在代码前面创建原始栅格后,它具有以下属性:
类:光栅层
尺寸:3270、3245、10611150(nrow、ncol、ncell)
分辨率:50, 50 (x, y)
范围:594830.7、757080.7、2763971、2927471(xmin、xmax、ymin、ymax)
crs : +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs
来源:记忆
名称:层
值:1、1(最小值、最大值)
在创建此文件期间,看起来band
或未layer
使用参数。这必然是一个单层/波段栅格,显然输出足够成功,可以在遇到这个问题之前经历多轮处理、编辑、连接、应用等。在创建栅格后使用setValues
. 上面有“名称:层”条目。
今天早上的中间结论:
我的输入栅格没有波段属性,只是一个普通/平面栅格,这对于简单的绘图来说很好,但显然不是星星所期望的丰富格式。然而,stars 将使用此文件并将其转换为(弱)stars 对象,但随后它将在 st_contour 中失败,可能是由于缺少乐队。
r - R 包中缺少“拆分”功能
stars
尝试使用split
函数拆分stars
栅格对象时,我遇到了包问题。我使用的是stars
0.5-4 版本(要求安装时会自动安装stars
)。根据包文档,应该有一个用于拆分对象的函数split
(实际上,它可能是通用 R 函数的方法)。但是,当我尝试使用它时,我的 R 说命名空间中没有这样的功能。该功能真的缺失并且文档错误吗?或者这可能是由命名空间的其他问题引起的?split
stars
stars
但是当我输入
我split
从stars
. 有人可以解释一下吗?
提前致谢!
编辑:现在可以了,不知道是什么问题。
r - 为什么我可以绘制我的 stars_proxy 对象但不能写出来
我是明星新手,所以希望这是一个简单的答案,只是我无法正确理解明星工作流程。
R 版本:4.1.1
星星版本:0.5-5
然后我从我的环境中清除对象并重新启动 R 会话。
尝试写出文件会导致以下错误:
如果我不是写出文件,而是绘制栅格,它就可以正常工作/按预期工作。也许问题只是我未能理解这个答案也适用于我: How to reassign cell/pixel values in R stars objects