栅格数据的四舍五入

ArcGIS的栅格计算器很奇怪,取整包括int()绝对值向下取整再加入符号,roundup()向上取整,rounddown()向下取整,唯独没有round()四舍五入这个命令,下列步骤可实现栅格数据的四舍五入:

  1. 首先载入数据,查看数据类型

2. 打开R语言

#下载栅格的工具包
install.packages("rgdal")
install.packages("raster")
#载入栅格的工具包
library(rgdal)
library(raster)
#设置工作目录
setwd("E:\\raster_k")

#######将tif进行四舍五入########
#读入栅格数据
k_float<-raster("k_float.tif")
#绘制栅格数据
plot(k_float)
#四舍五入##注round()是先对绝对值四舍五入再加入数据原本的正负号###
k_round<-round(k_float)
plot(k_round)
summary(k_round)
#将空值设为9999,数据存在空值会报错:Error in .local(.Object, ...) : 
k_round[is.na(k_round)]=9999 
summary(k_round)
#导出整数k的tiff,filename="filepath\\k_round",filepath为数据想存储的路径,没有的话会直接存到目前的工作目录
k_round<- writeRaster(k_round, filename="filepath\\k_round", format="GTiff", overwrite=TRUE)

3. 将K_round.tif加入到GIS中,发现最大值为我们设置9999,在栅格计算器setnull一下就可以了,即SetNull("k_round.tif" == 9999,"k_round.tif"),保存为k_round_setnull.tif。Identify一下检查四舍五入是否正确。

4.如果有很多tif要四舍五入,批量计算可以在R中写个循环,不会写循环没关系,可以将数据名称在word中替换,复制粘贴回R即可。

在GIS中批量setnull使用model builder

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页