r 语言 处理栅格数据
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'))
栅格数据的剪切和重采样
读取的物候数据与氮沉降数据的分辨率和范围都不一样
- 使用 resample() 函数以氮沉降数据为标准对物候数据进行重采样
- 使用 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)
栅格重分类
- 建立重分类矩阵
- 使用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 语言 处理栅格数据相关推荐
- R语言之空间数据操作
文章目录 前言 知识目录 栅格数据读取 栅格数据处理 1.栅格数据的四则运算 2.栅格数据的均值.最值.求和计算 3.栅格重分类 矢量数据的读取 5.栅格裁剪(Crop) 6.栅格掩膜(Mask) 裁 ...
- r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...
- r语言worldclim数据_R语言空间数据分析(五):栅格数据处理
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)
前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...
- 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9
055B-1 视频附带资料下载和密码:软件-数据-文献下载-持续更新 055B-2 ENMTools软件下载安装 055B-3 R软件和工具包安装 055B-4 生物气候因子的精度说明与选择方法(理论 ...
- 基于R语言或Matlab直接读取压缩包中的数据
写在前面 以gosif网站上的tiff数据为例. 该数据是地学上常用的一种数据,希望读取该网站上的gosif数据:http://data.globalecology.unh.edu/data/GOSI ...
- 带南海九段线分位数地图可视化(R语言版)
今天带来一篇承诺虾神的可视化博客.内容是使用R语言进行带南海九段线分位数地图可视化.虾神的原博文地址如下(Python版). Python实现带南海九段线分位数地图完整可视化版本(附代码及数据) 19 ...
- R语言学堂推文索引-2022年12月
专注系列化.高质量的R语言教程 推文索引 | 联系小编 | 付费合集 更新时间: 2022.12.12 0 前言 1 数据处理通识专辑 1.1 R语言基础与base-R 1.2 数据处理与tidy-R ...
- 空间数据可视化地图绘制R语言可复现
空间数据可视化&地图绘制&R语言可复现 绘制地理空间数据是一项常见的可视化任务,需要专门的工具.通常,问题可以分解为两个问题: 使用一个数据源绘制地图 将来自另一个信息源的元数据添加到 ...
最新文章
- 【怎样写代码】实现对象的复用 -- 享元模式(一):问题案例
- Spring MVC-表单(Form)标签-单选按钮集合(RadioButtons)示例(转载实践)
- display:inline-block+text-align:justify实现列表元素的两端对齐
- vue-router(2)
- linux的mysql修改用户密码与忘记密码的方法
- Linux提权CVE-2022-0847分析
- Sqlite SQL格式化输入函数splite3_mprintf
- 人工智障学习笔记——机器学习(8)K均值聚类
- Android编程中dp、px和sp的区别
- python 生成器原理_python生成器
- 如何更方便地调试javascript代码
- MacOS六个常用的终端命令
- 尽量干净地卸载360
- 交互式反汇编器 linux,Carbon:交互式反汇编工具
- 《游戏设计理论》参考版
- 海航科技集团要寻人才去火星喽!
- 企业应该怎么运营微信公众号?
- 控制面板打印机显示不出来的解决办法
- 【刷题】BZOJ 2959 长跑
- 计算机大连理工三年级下册教案,大连理工大学版信息技术三年级上册教案.doc...
热门文章
- 2022-2-27 Leetcode 122.买卖股票的最 佳时机 II
- [Python]调用百度地图API对地点进行搜索,利用 JSON 返回纬度/行政区域编号
- JSP和Servlet的区别(servlet生命周期)
- SpringBoot集成LibreOffice+jodconverter做文件预览(office转pdf)
- c++11 is_copy_assignable说明
- E都市(福州)地图分析
- HDU 1522 Marriage is Stable (稳定婚姻匹配)
- mysql无法安装 server 2008 r2_【运维】windows server 2008 R2 Standard中如何安装 mysql8.0
- java class arraylist_Java:如何用arraylist添加并调用CLASS
- 12 路由器静态路由配置