【教程】在使用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)
#下面这一行是修改数据用的,效果是把所有小于等于0的数据改成NA
v[v <= 0] <-
NA
其他可能的处理数据代码:
所有数据乘以10000
v <- v*10000
所有数据向上取整
v <- ceiling(v)
更复杂的处理,可能要用循环与挨个处理v中的数值。
结束写入:
newtiff <-
writeStop(newtiff)
大功告成!
PS:
有些地理信息图层中,数值是浮点数,导致分析及在arcmap中上色出问题。
解决方法:直接把里面的数值乘上1000000……,变成整数。
另外也有一些其他问题也可以用修改tiff的方法解决,如把tiff文件中的0都换成NA,或者去掉异常值等。
PSS:这些也都可以用arctoolbox里的数学工具完成。
前一篇:【王朗植物分类】5.豆科
后一篇:【王朗植物分类】7.车前科