首页 > 其他分享 >R语言求取大量遥感影像的平均值、标准差:raster库

R语言求取大量遥感影像的平均值、标准差:raster库

时间:2024-06-19 13:21:14浏览次数:17  
标签:raster 遥感 栅格 求取 标准差 图像 影像

  本文介绍基于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格式的结果数据,如下图所示。

image

  接下来,我们通过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()函数的第一个参数表示我们将要保存的栅格数据,第二个参数表示保存栅格文件的路径与名称,第三个参数表示,如果第二个参数指定的路径与名称已经有文件存在了,是否直接对其加以覆盖。

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

  至此,大功告成。

标签:raster,遥感,栅格,求取,标准差,图像,影像
From: https://www.cnblogs.com/fkxxgis/p/18256051

相关文章

  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
        之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库import......
  • 【Python&RS】基于Rasterio库裁剪栅格数据&压缩栅格影像
    ​     之前分享过【Python&RS】Rasterio库安装+基础函数使用教程,大家有兴趣的可以去看看。由于最近有涉及到栅格裁剪和压缩的问题,所以研究了一下今天和大家分享分享。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1需要的库imp......
  • 数理统计(数值修约、0.5修约、0.2修约、有效数字运算、平均值、中位数、极差、标准差
    数理统计(数值修约、0.5修约、0.2修约、有效数字运算、平均值、中位数、极差、标准差、变异系数)原文:数理统计(数值修约、0.5修约、0.2修约、有效数字运算、平均值、中位数、极差、标准差、变异系数)_修约到0.5怎么修约-CSDN博客一、数值修约:口诀:四舍六入五考虑,五后非零则进......
  • 用 R 中的 ggmap 绘制 SpatRaster
    感谢这个帖子,我已经能够计算出一些KUD,并将其屏蔽到形状文件的区域中,然后使用terra软件包中的ggplot和SpatRaster绘制这些图形不过,我想将其映射到ggmap上。我当前的代码如下。#从shapefile创建sf对象,项目到WGS84UTMzone31N......
  • GEE 27 高级栅格可视化 Advanced Raster Visualization(Part6)
    Overview ThischaptershouldhelpusersofEarthEnginetobetterunderstandrasterdatabyapplyingvisualizationalgorithmssuchashillshading,hillshadows,andcustomcolormaps.Wewillalsolearnhowimagecollectiondatasetscanbeexploredbyani......
  • flutter开发ios15出现name = 'io.flutter.1.raster', stop reason = signal SIGABRT崩
    1.问题描述为了适应ios上架要求,我们项目升级了flutter升级到3.19.6的,但是莫名其妙出现了这个崩溃,最关键的是没有关键的崩溃日志,不管是flutter侧还是ios原生侧都看不出哪行代码引起的2.问题排查首先,通过崩溃日志的关键字'io.flutter.1.raster',其实的raster就是光栅化的意思......
  • 【代码更新】标准差
     【代码更新】标准差每513个点中,对前512个取其标准差,最后一个点不在计算范围内;具体的过程是,将512点的平方和均值,减去,512个点的均值的平方方差=用平方和的均值减去均值的平方得到方差1//用平方和的均值减去均值的平方得到方差23moduledownSampling(4inp......
  • ArcMap分别求取矢量要素各区域的面积
      本文介绍基于ArcMap软件,自动批量计算矢量图层中各个要素的面积的方法。  一次,遇到一个问题,需要分别计算ArcMap软件中一个图层的所有面要素的面积。如图,这个图层中包括多个省级行政区矢量面要素,现在需要分别计算其中每一个要素各自的面积。  这里有一个方便的办法。 ......
  • 方差与标准差
    标准差,反映了一组数与平均值的紧密关系。举例,有一组数,4,5,9,11,16。第一步:求出平均值。(4+5+9+11+16)÷5=9第二步:求出各数与平均数的差分别为,-5,-4,0,2,7第三步:把差平方一下(目的就是转成正数)结果为,25,16,0,4,49第四步:把平方后的数求一个平均。(25+16+0+4+49)÷5=18.8第五步:把18.......
  • Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)
    Lecture06Rasterization2(AntialiasingandZ-Buffering)Antialiasing反走样采样理论发生在不同位置(如照相)发生在不同时间(如动画)SamplingArtifacts(指图形学中的错误、看上去不对的地方、瑕疵)锯齿摩尔纹Wagonwheeleffect行进的车轮看起来似乎是向后转的......