Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >RasterStack数学和条件语句的限制

RasterStack数学和条件语句的限制
EN

Stack Overflow用户
提问于 2020-03-25 18:34:13
回答 1查看 85关注 0票数 0

我有一个很大的RasterStack (114个geotiff图像),我已经成功地对其进行了地理处理(屏蔽等)。在R中,但是我很难让它对每个栅格应用一个简单的条件语句(所有栅格层都是相同的范围,分辨率,并且是共同注册的)。我希望将所有小于每个栅格最大值的95%的像素值设置为NA。例如,如果图层的最大值为85,则像素值< 80.75 = NA。下面是我的代码:

代码语言:javascript
运行
AI代码解释
复制
#Get max value from each raster layer
r_max <- maxValue(rstack)

#Set all values < 95% of max to NA
rstack[rstack < (r_max * 0.95)] = NA

当我在整个栅格堆栈上运行这段代码时,我得到"Error in valuej,:Error number of dimensions“。但是,如果我在一个较小的集合(14个左右)上运行它,它完全可以正常工作。因为我已经成功地执行了许多类似的操作(其他条件语句、掩码等)在没有错误的整个堆栈上,我不确定它为什么现在抛出这个错误。有什么想法吗?

如果之前已经讨论过这个问题,我很抱歉,但我找不到这样的帖子。如果它确实存在,请指给我那个方向。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-26 04:06:41

请始终包含一个可重现的最小示例,如下所示:

代码语言:javascript
运行
AI代码解释
复制
library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster")) 
cutoff <- maxValue(s) * .95
cutoff
#[1] 242.25 242.25 242.25

现在你可以做

代码语言:javascript
运行
AI代码解释
复制
s[s < cutoff] = NA
s
#class      : RasterBrick 
#dimensions : 77, 101, 7777, 3  (nrow, ncol, ncell, nlayers)
#resolution : 1, 1  (x, y)
#extent     : 0, 101, 0, 77  (xmin, xmax, ymin, ymax)
#crs        : +proj=merc +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#source     : memory
#names      : red, green, blue 
#min values : 243,   243,  243 
#max values : 255,   255,  255 

但是,当RasterStack很大(并且需要写入文件)时,会出现一个bug -这就是您偶然发现的。我们可以用rasterOptions(todisk=TRUE)来模拟这种情况

代码语言:javascript
运行
AI代码解释
复制
 rasterOptions(todisk=TRUE)
 s[s < cutoff] = NA
 #Error in value[j, ] : incorrect number of dimensions

我会试着解决这个问题。以下是解决方法

代码语言:javascript
运行
AI代码解释
复制
s <- stack(system.file("external/rlogo.grd", package="raster")) 
cutoff <- maxValue(s) * .95
x <- sapply(1:nlayers(s), function(i) reclassify(s[[i]], cbind(-Inf, cutoff[i], NA)))
x <- stack(x)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60855190

复制
相关文章
HQL语句中加limit()的限制条件
query.setFirstResult(startIndex);//开始索引 query.setMaxResults(maxSize);//取几条 如 limit 1,5  HQL: query.setFirstResult(1); query.setMaxResults(5);
似水的流年
2019/12/10
1.9K0
HQL语句中加limit()的限制条件
query.setFirstResult(startIndex);//开始索引 query.setMaxResults(maxSize);//取几条 如 limit 1,5  HQL: query.setFirstResult(1); query.setMaxResults(5);
似水的流年
2018/01/12
1.6K0
Python 条件和 if 语句
在这个示例中,我们使用了两个变量a和b,它们被用作if语句的一部分,以测试b是否大于a。由于a是33,b是200,我们知道200大于33,因此我们打印到屏幕上:"b is greater than a"。
小万哥
2023/10/20
2110
Python 条件和 if 语句
数学杂谈:限制条件下的均匀分布考察
这个问题其实感觉比上述连续的情况还要简单一些,我们只需要将其视为排列组合问题即可进行解答,即视为分堆问题,将
codename_cys
2022/11/29
7370
数学杂谈:限制条件下的均匀分布考察
python的条件语句和循环
# 4.py #code=utf-8 # python的条件语句和循环 # if 语句 age = 40 if age > 18: print 'your age is ', age print 'adult' # if else 语句 age = 40 if age > 18: print 'adult' else: print 'no adult' # if elseif else 语句 age = 40 if age > 18: print 'adult' el
公众号-利志分享
2022/04/25
1.2K0
python语句--条件语句
>>> print(2,3,4)    //python2.x (2, 3, 4) >>>
py3study
2020/01/13
3.5K0
条件语句
其实这里所谓的判断就是条件语句,即条件成立执行某些代码,条件不成立则不执行这些代码。
生信喵实验柴
2023/09/04
2050
条件语句
if 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。 Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… else: 执行语句…… 其中”判断条件”成立时(非零),则执行后面的语句,而执行内容可以多行,以”四个空格“来区分表示同一范围。 else 为可选语句,当
老七Linux
2018/05/09
1.6K0
Python爬虫基础五:循环语句和条件语句
一、前言 本系列文章,代码运行展示,将使用PyCharn进行运行。 二、循环语句 1、遍历循环 格式: for 变量 in range(stop) ==>遍历0~stop-1 for 变量 in range(start,stop) ==>遍历start~stop-1 for 变量 in range(start,stop,step) ==>遍历start~stop-1,默认步长为1 例如: print('格式1结果') for i in range(4): print(i) print('格式二
远方的星
2021/08/05
9360
Python爬虫基础五:循环语句和条件语句
【组合数学】非降路径问题 ( 限制条件的非降路径数 )
1 . 计算原理 , 先计算对角线下方的非降路径 : 这里只计数在对角线下方的非降路径数 , 因为 对角线上下的非降路径是对称的 , 因此这里 先将对角线下方的非降路径计算出来 ;
韩曙亮
2023/03/28
7920
【组合数学】非降路径问题 ( 限制条件的非降路径数 )
条件语句与查询语句
到目前为止我们所使用的语句操作几乎都是对每一行都进行操作,那么能不能但对某一行,或者某几行进行操作呢?这个时候就需要使用到条件语句关键字WHERE,介绍一下关系运算符:
端碗吹水
2020/09/23
2.5K0
条件语句与查询语句
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
在讲诉条件语句之前,需要先补充语句块的知识。语句块并非一种语句,它是在条件为真时执行一次或执行多次的一组语句,在代码前放置空格缩进即可创建语句块。它类似于C、C++、Java等语言的大括号({ })来表示一个语句块的开始和结束。
Eastmount
2021/12/02
8130
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。
Eastmount
2021/02/20
9130
【Python】第二章(条件语句和循环语句)
各位小伙伴们大家好,在此之前我跟大家介绍过[python]的第一章,如果还没有看的小伙伴们可以去看看,这是链接:[Python]第一章(建议收藏)_泽奀的博客-CSDN博客,蟹蟹支持。那么本篇博客讲的就是如标题一样的内容,如果觉得对你有帮助的话,请点赞+收藏支持一波博主。博主在这里真的是非常感谢,蟹蟹大家一路下来对博主的支持。那么我博主话不多说直接开始今天的文章内容......那么在这里我跟大家先分别说下什么是判断语句以及循环语句。
謓泽
2022/12/12
8330
【Python】第二章(条件语句和循环语句)
Go 控制结构篇:条件语句、分支语句、循环语句和跳转语句
流程控制主要用于设定计算执行的次序,建立程序的逻辑结构。Go 语言的流程控制和其他编程语言类似,支持如下几种流程控制语句:
学院君
2023/03/03
1.6K0
Go 控制结构篇:条件语句、分支语句、循环语句和跳转语句
python学习之if条件和for循环语句
从控制台获取一个成绩,根据成绩判断:如果>80 优秀,>70良好,>60及格,<60不及格
吾爱乐享
2019/12/30
8840
JavaScript——条件语句
1. 条件语句的介绍 条件语句就是通过条件来控制程序的走向 2. 条件语句语法 if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if....else 语句 - 使用该语句来判断多条件,执行条件成立的语句 3. 比较运算符 假如 x = 5, 查看比较后的结果: 比较运算符 描述 例子 == 等于 x == 8 为 false === 全等(值和类型) x === 5
落雨
2022/04/14
30K0
python条件语句
2.循环(for,while,嵌套循环)  #for用在已知循环次数  while用在不确定循环次数和死循环
py3study
2020/01/17
1.2K0
java条件语句
使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。
taoli
2022/10/08
1.4K0
java条件语句
python 条件语句、循环语句
if (n>0and n<5) or (n>10andn<15) ()优选级运算符
py3study
2020/01/14
2.7K0

相似问题

条件RasterStack图的顶部和侧面条

10

用条件语句计算省道数学

11

数学条件语句,结果为空。

11

LINQ选择语句中的条件数学

49

限制中的MySQL数学和计数(*)

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档