加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【教程】在使用arcmap之前,用R语言处理tiff格式地理信息图层中的数据

(2017-09-08 09:48:59)
标签:

杂谈

分类: 教程
使用R语言来查看并修改tiff格式地理信息图层中的数据


补充:在arcmap里,用计算器或python应该也可以做到。然而我不会!

准备工作:
安装相应R包:
正常的Rgui。用Rstudio更舒服。
install.packages("raster") 
install.packages("rgdal")
注意:不可以用“rtiff”,那个是为了普通tiff照片准备的。

打开工作环境:

载入上述R包
library('raster') 
library('rgdal')

设置工作文件夹:
setwd(choose.dir())

查看tiff文件的基本信息:

读入tiff文件。运行代码,在弹出的窗口中选择要读入的tiff文件。
注意:弹出的窗口可能不是当前窗口,而是压在Studio主界面后面!
raster(choose.files()) -> mytiff
查看基本信息:
mytiff
会列出以下信息:
class : RasterLayer 
dimensions : 3600, 8640, 31104000 (nrow, ncol, ncell) 
resolution : 0.04166667, 0.04166667 (x, y) 
extent : -180, 180, -60, 90 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs  
data source : C:\lab\GeoData\past\cclgmbi_2-5m\cclgmbi4.tif 
names : cclgmbi4 
values : 62, 23856 (min, max)
其中dimensions是矩阵长宽和数据总个数,extent是坐标范围,
coord.ref是所属的坐标系信息,values是最大最小值。
查看数据分布的柱状图:
hist(mytiff)
这一步可能要等很久。
查看数据中都有哪些数值:
factor(getValues(mytiff)) -> myfactors
levels(myfactors) -> mylevels
mylevels
进一步可以对mylevels进行检查,看看里面有没有异常值,或者如果是浮点数,小数最多有几位。

修改tiff中数据,并存入新的tiff文件中:
在R里新建一个raster:
raster(mytiff) -> newtiff
获得blocksize:
bs <- blockSize(mytiff)
把所有的数据分成很多个block,每个block含有很多个row。这样便于处理大数据。

开始写新的tiff文件:
newtiff <- writeStart(newtiff, filename = choose.files(), overwrite = T)
仍然弹出一个窗口,在窗口里调整到适当地址新建一个空白tiff文件。
也可以把choose.files()直接换成想存的文件名"新文件名.tiff"。
分批处理数据,并写入新文件中:
for (i in 1:bs$n) 
 
 v <- getValues(mytiff, row = bs$row[i], nrows = bs$nrows[i]) 
#下面这一行是修改数据用的,效果是把所有小于等于0的数据改成NA
v[v <= 0] <- NA 
 writeValues(newtiff, v, bs$row[i]) 
 }
其他可能的处理数据代码:
所有数据乘以10000
v <- v*10000
所有数据向上取整
v <- ceiling(v)
更复杂的处理,可能要用循环与挨个处理v中的数值。

结束写入:
newtiff <- writeStop(newtiff)

大功告成! 



PS:

有些地理信息图层中,数值是浮点数,导致分析及在arcmap中上色出问题。

解决方法:直接把里面的数值乘上1000000……,变成整数。

另外也有一些其他问题也可以用修改tiff的方法解决,如把tiff文件中的0都换成NA,或者去掉异常值等。

PSS:这些也都可以用arctoolbox里的数学工具完成。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有