r 语言 处理栅格数据

作为新手,记录自己学到的一些东西,也希望能对需要的人有稍许帮助

常用的包

  • raster #处理栅格数据
  • rasterVis #栅格数据可视化
  • RColorBrewer #颜色设置
  • ncdf4 #nc数据的读取

常用的数据类型

  • tiff
  • nc

数据导入和简单的可视化

  • tiff数据读取

    • 读取一个tiff文件 raster() 函数

      ## 导入使用的包
      library(raster)
      library(rasterVis)
      library(RColorBrewer)
      library(ncdf4)n_data_path <- dir('数据存放地址',full.names = TRUE)
      n_deposition <- raster(n_data_path[19])
      plot(n_deposition) # 使用基础的plot函数
      levelplot(n_deposition, margin = list(FUN = 'median'),par.settings=RdBuTheme) # 使用levelplot函数
      


    • 读取多个tiff文件 stack() 函数

      n_depo_all <- stack(n_data_path[c(1,6,11,16)])
      plot(n_depo_all) # 使用基础的plot函数
      levelplot(n_depo_all)  # 使用levelplot函数
      


  • nc数据读取
    同样使用 raster()stack() 函数

    sif_nc <- nc_open(dir('数据存放地址',full.names = TRUE)[2]) # 读取nc文件
    names(sif_nc$var)  # 获取nc文件中的变量名## 读取一个时间点的数据(假设z轴为时间)
    sif_raster <-  raster(dir('数据存放地址',full.names = TRUE)[2], varname = 'all_daily_sif',band=45)
    plot(sif_raster)## 读取所有时间点的数据
    sif_raster_5 <-  stack(dir('数据存放地址',full.names = TRUE)[2], varname = 'all_daily_sif',bands=40:43)

栅格数据的简单计算

  • 计算所有年份的氮沉降均值 (还可以使用 sum,min,max等函数)

    n_depo_ave <- mean(n_depo_all,na.rm=TRUE)
    plot(n_depo_ave)
    

可视化进阶

  • 颜色的设置

    plot(n_deposition,xlim=c(-130,-60),ylim=c(25,50),      col=colorRampPalette(c("blue","white","red"))(255))

  • 色卡的设置
    设置色卡的间断点
    建立色卡

    # 由于原始值分布不均,因此先将大于20的值设置为22
    n_depo_ave_reclassify <- n_depo_ave
    n_depo_ave_reclassify[n_depo_ave_reclassify>20] <- 22
    cutpts <- c(0,2,4,6,8,10,12,14,16,18,20,22)
    my_labels <- paste(cutpts[1:10],cutpts[2:11],sep = '-')
    myColorkey <- list(at=cutpts, ## where the colors changelabels=list(labels=c(my_labels,'>20',''), ## labelsat=cutpts+1 ## where to print labels))
    levelplot(n_depo_ave_reclassify,margin=FALSE,colorkey=myColorkey,col.regions=(colorRampPalette(c('#f3e5f5','#9c27b0',"#6a1b9a"))))
    

  • 在栅格数据上叠加边界 使用 rgdal::readOGR() 函数读取shp

    us_border <- rgdal::readOGR('数据存放地址')
    p <- levelplot(n_depo_all, layers = 1, margin = list(FUN = 'median'))
    p+layer(sp.lines(us_border,lwd=0.8,col='black'))
    

栅格数据的剪切和重采样

读取的物候数据与氮沉降数据的分辨率和范围都不一样

  1. 使用 resample() 函数以氮沉降数据为标准对物候数据进行重采样
  2. 使用 mask() 截取氮沉降数据范围内的物候数据
pheno_data_path <- dir('数据存放地址',full.names = TRUE,pattern = 'EOS')
eos <- raster(pheno_data_path[19]) # 读取物候数据## 使用eos的栅格分辨率,使用n_depo_ave的范围
std_raster <- resample(n_depo_ave,eos[[1]])  # 以eos对氮沉降进行重采样
std_raster <- crop(std_raster,n_depo_ave)
eos_with_ndepo <- crop(eos[[1]],std_raster)
eos_with_ndepo <- mask(eos_with_ndepo,std_raster)  # 用氮沉降数据范围截取eos
plot(eos_with_ndepo)

栅格重分类

  1. 建立重分类矩阵
  2. 使用reclassify() 函数
# 建立重分类矩阵
reclassmatrix <- matrix(c(0,2,1,2,4,2,4,6,3,6,8,4,8,10,5,10,12,6,12,14,7,14,16,8,16,18,9,18,20,10,20,70,11),11,3,byrow = TRUE)
n_depo_ave_reclassify2 <- reclassify(n_depo_ave,rcl = reclassmatrix)
plot(n_depo_ave_reclassify2)

r 语言 处理栅格数据相关推荐

  1. R语言之空间数据操作

    文章目录 前言 知识目录 栅格数据读取 栅格数据处理 1.栅格数据的四则运算 2.栅格数据的均值.最值.求和计算 3.栅格重分类 矢量数据的读取 5.栅格裁剪(Crop) 6.栅格掩膜(Mask) 裁 ...

  2. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf

    ​注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...

  3. r语言worldclim数据_R语言空间数据分析(五):栅格数据处理

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...

  4. raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)

    前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...

  5. 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9

    055B-1 视频附带资料下载和密码:软件-数据-文献下载-持续更新 055B-2 ENMTools软件下载安装 055B-3 R软件和工具包安装 055B-4 生物气候因子的精度说明与选择方法(理论 ...

  6. 基于R语言或Matlab直接读取压缩包中的数据

    写在前面 以gosif网站上的tiff数据为例. 该数据是地学上常用的一种数据,希望读取该网站上的gosif数据:http://data.globalecology.unh.edu/data/GOSI ...

  7. 带南海九段线分位数地图可视化(R语言版)

    今天带来一篇承诺虾神的可视化博客.内容是使用R语言进行带南海九段线分位数地图可视化.虾神的原博文地址如下(Python版). Python实现带南海九段线分位数地图完整可视化版本(附代码及数据) 19 ...

  8. R语言学堂推文索引-2022年12月

    专注系列化.高质量的R语言教程 推文索引 | 联系小编 | 付费合集 更新时间: 2022.12.12 0 前言 1 数据处理通识专辑 1.1 R语言基础与base-R 1.2 数据处理与tidy-R ...

  9. 空间数据可视化地图绘制R语言可复现

    空间数据可视化&地图绘制&R语言可复现 绘制地理空间数据是一项常见的可视化任务,需要专门的工具.通常,问题可以分解为两个问题: 使用一个数据源绘制地图 将来自另一个信息源的元数据添加到 ...

最新文章

  1. 【怎样写代码】实现对象的复用 -- 享元模式(一):问题案例
  2. Spring MVC-表单(Form)标签-单选按钮集合(RadioButtons)示例(转载实践)
  3. display:inline-block+text-align:justify实现列表元素的两端对齐
  4. vue-router(2)
  5. linux的mysql修改用户密码与忘记密码的方法
  6. Linux提权CVE-2022-0847分析
  7. Sqlite SQL格式化输入函数splite3_mprintf
  8. 人工智障学习笔记——机器学习(8)K均值聚类
  9. Android编程中dp、px和sp的区别
  10. python 生成器原理_python生成器
  11. 如何更方便地调试javascript代码
  12. MacOS六个常用的终端命令
  13. 尽量干净地卸载360
  14. 交互式反汇编器 linux,Carbon:交互式反汇编工具
  15. 《游戏设计理论》参考版
  16. 海航科技集团要寻人才去火星喽!
  17. 企业应该怎么运营微信公众号?
  18. 控制面板打印机显示不出来的解决办法
  19. 【刷题】BZOJ 2959 长跑
  20. 计算机大连理工三年级下册教案,大连理工大学版信息技术三年级上册教案.doc...

热门文章

  1. 2022-2-27 Leetcode 122.买卖股票的最 佳时机 II
  2. [Python]调用百度地图API对地点进行搜索,利用 JSON 返回纬度/行政区域编号
  3. JSP和Servlet的区别(servlet生命周期)
  4. SpringBoot集成LibreOffice+jodconverter做文件预览(office转pdf)
  5. c++11 is_copy_assignable说明
  6. E都市(福州)地图分析
  7. HDU 1522 Marriage is Stable (稳定婚姻匹配)
  8. mysql无法安装 server 2008 r2_【运维】windows server 2008 R2 Standard中如何安装 mysql8.0
  9. java class arraylist_Java:如何用arraylist添加并调用CLASS
  10. 12 路由器静态路由配置