本文介绍基于R语言中的raster包,批量读取多张栅格图像,对多个栅格图像计算平均值标准差,并将所得新的栅格结果图像保存的方法。

  在文章基于R语言的raster包读取遥感影像中,我们介绍了基于R语言raster包,对单张或多张栅格图像加以平均值标准差计算的方法;但这一篇文章中的标准差计算方法仅仅可以对一张栅格图像的全部像元加以计算,即标准差计算结果是一个具体的数值,而不是一景结果影像;无法对多张、多时相的栅格图像进行计算。本文就介绍另一种方法,可以对多个时相的大量栅格影像加以逐像元平均值、标准差的计算,从而使得最终的结果是一景表示各个像元在全部时相的图像中的平均值或标准差的图像

  首先,我们按照文章基于R语言的raster包读取遥感影像中提到的方法,配置、加载raster包,并通过stack()函数读取同一文件夹下的全部栅格图像,具体代码如下所示。其中,代码的含义我们在上述这一篇文章中已经加以介绍,这里就不再赘述。

library(raster)
tif_file_path <- list.files(r"(E:\02_Project\01_Chlorophyll\LCC_SC_2020\SD)", pattern = ".tif$", full.names = TRUE, ignore.case = TRUE)
tif_file_all <- stack(tif_file_path)

  运行上述代码,可以看到已经得到了RasterStack格式的结果数据,如下图所示。

  接下来,我们通过calc()函数,对多时相栅格遥感影像数据加以计算;其中,其第一个参数tif_file_all就是需要加以计算的多个栅格图像,而第二个参数fun = sd表示我们需要计算标准差;如果我们需要计算平均值,那么就将第二个参数修改为fun = mean即可,我们这里就以标准差为例介绍后续的操作。当然,前述提到的文章基于R语言的raster包读取遥感影像中的方法也是可以对多个栅格图像计算平均值的。

tif_sd <- calc(tif_file_all, fun = sd)
plot(tif_sd)

  此外,上述代码在calc()函数运行时,若某一空间位置上的像元多张栅格遥感影像中,存在至少一个无效值(NoData值),则这一像元在最终的结果图像中同样为无效值;若希望忽略无效值的这一影响,可以将上述第一句代码修改为如下格式。其中,na.rm = TRUE就表示若某一景栅格遥感影像中某像元为无效值,则忽略这一景影像中的这一个像元。

tif_sd <- calc(tif_file_all, fun = sd, na.rm = TRUE)

  运行calc()函数后,我们可以通过plot()函数将结果图像绘制出来,如下图所示。

  上图即为多个栅格图像的像元数值时间序列依次计算标准差所得的结果。

  此外,由于我这里的栅格像元数据实际表达的数值之间有一个缩放系数0.01,因此通过下述代码将其像元值恢复为实际含义的数值。

tif_sd_new <- tif_sd / 100
plot(tif_sd_new)

  随后,重新绘制结果图;确认无误后,即可依据writeRaster()函数,通过如下代码保存我们刚刚得到的标准差结果栅格图像。

rf <- writeRaster(tif_sd_new, filename = r"(E:\02_Project\01_Chlorophyll\LCC_SC_2020\SD\LCC_SD.tif)", overwrite = TRUE)

  运行代码后,如下图所示。其中,writeRaster()函数的第一个参数表示我们将要保存的栅格数据,第二个参数表示保存栅格文件的路径与名称,第三个参数表示,如果第二个参数指定的路径与名称已经有文件存在了,是否直接对其加以覆盖。

  随后,我们即可在指定的路径下找到我们刚刚计算得到的多个栅格图像的标准差结果。

  至此,大功告成。

R语言求取大量遥感影像的平均值、标准差:raster库的更多相关文章

  1. 用R语言求置信区间

    用R语言求置信区间 用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了. 如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了 首先,输入da=c(你的数据,用英文 ...

  2. R语言爬取动态网页之环境准备

    在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...

  3. 写论文,没数据?R语言抓取网页大数据

    写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...

  4. R语言求根

    求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法.牛顿-拉富生算法.割线法和二分法. 不动点迭代法 所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化 ...

  5. R语言爬虫:使用R语言爬取豆瓣电影数据

    豆瓣排名前25电影及评价爬取 url <-'http://movie.douban.com/top250?format=text' # 获取网页原代码,以行的形式存放在web 变量中 web & ...

  6. R语言实战(第二版)-part 1笔记

    说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...

  7. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

  8. 基于R语言的数据分析和挖掘方法总结——描述性统计

    1.1 方法简介 描述性统计包含多种基本描述统计量,让用户对于数据结构可以有一个初步的认识.在此所提供之统计量包含: 基本信息:样本数.总和 集中趋势:均值.中位数.众数 离散趋势:方差(标准差).变 ...

  9. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  10. R 语言实现求导

    前言 高等数学是每个大学生都要学习的一门数学基础课,同时也可能是考完试后最容易忘记的一门知识.我在学习高数的时候绞尽脑汁,但始终都不知道为何而学.生活和工作基本用不到,就算是在计算机行业和金融行业,能 ...

随机推荐

  1. 用python编写向通信产品发送AT指令的程序实例

    一.安装pyserial包pip install pyserial 二.实例代码 # -*- coding: utf-8 -*- import time import hashlib from ser ...

  2. dotnet Multi-platform App UI 多平台应用 UI 框架简介

    现在可以使用 .NET 构建一切应用.富有生产力的 .NET 是当前数百万的开发者选择这个平台的理由.在 .NET 5 微软统一了整个 .NET 平台,将 .NET Core 和 Mono 以及基于 ...

  3. petalinux 报错总结

    Failed to menu config project component.... 解决办法 此处是由于Terminal(终端)的界面太窄导致的,把Terminal(终端)界面拉宽即可:重新执行命 ...

  4. XOps笔记

    当前是 Ops盛行的时代,在互联网圈内的你一定经常都会听到这些名词,DevOps.DevSecOps.GitOps.NetOps.ItOps.Aiops.DataOps.MLOps.NoOps:无论是 ...

  5. Oracle细粒度审计策略

    场景:经常需要查看某些表做了哪些操作. Oracle中,可以添加细粒度策略来获取,如下: begin dbms_fga.add_policy(object_schema => 'portxx', ...

  6. windows系统桌面壁纸切换的三种csharp办法,兼容win10及旧版,还有一个现成桌面小程序

    我自己用这些代码做的小app如下: 最新版本已经改成了服务的方式,也可以选择性添加系统的右键菜单,并且我自己使用的源码库已经开源到了nuget,大家可以直接拿来做二次开发, 新版的下载地址为:http ...

  7. PyTorch的安装与使用

    技术背景 PyTorch是一个非常常用的AI框架,主要归功于其简单易用的特点,深受广大科研人员的喜爱.在前面的一篇文章中我们介绍过制作PyTorch的Singularity镜像的方法,这里我们单独抽出 ...

  8. rubymineIDE配置启动

    debug启动 debug启动 安装插件 报错: 网络问题 下载 ruby-debug-ide-2.3.1 解压到 /home/haima/.rvm/gems/ruby-2.3.8/gems/

  9. python教程6.2-OS模块random模块

    OS模块  random模块

  10. IDEA 2020 版配置VUE

    找到IDE工具栏,就是启动项目的run那里 点击下拉框,找到Eidt Confiuration,选择 选择小加号 选取npm 设置npm页,完成后,点击apply run npm ,如图选择run或者 ...