Matlab和GMT展示水体变化的栅格影像

在利用遥感手段监测水体、植被的变化时,有时候需要对比前后多期遥感影像的变化情况。当然我们可以在ArcGIS或者ENVI里面实现,但是考虑到后期制作多子图调整时,利用GMT或者matlab将更加方便。接下来我会分别介绍Matlab和GMT6中怎样将不同时期的水体栅格数据叠加在一起。在进行绘图之前,我们首先需要在ArcGIS中利用栅格计算器计算水体指数栅格影像,然后导出tif结果。

(1)Matlab

在利用matlab绘制水体栅格数据的叠加时,我们先利用geotiffread函数读取导出的遥感影像,然后得到影像的灰度矩阵和对应的空间参考信息。具体的matlab代码如下:其中的A为灰度矩阵,B为空间参考信息,里面提供了栅格行列数,栅格大小。需要注意的是使得栅格的行列的步长会使得得到的数量比实际的灰度矩阵大一个,因此需要减少一个。代码中的41.710487740245995+0.000269494585235856就是这个意思。

[A,B] = geotiffread('Extract_c20012.tif');
[A1,B1] = geotiffread('Extract_c20211.tif');
A = double(A);
A1 = double(A1);
A(A==255)=NaN;
A1(A1==127)=NaN;
x = [41.710487740245995+0.000269494585235856:0.000269494585235856:42.244356513598230];
y = [86.381847543046830+0.000269494585235856:0.000269494585235856:87.642273718194930];
[x,y] = meshgrid(y,x);
o.lon = x;
o.lat = y;
o.rg = flipud(A);
o1.lon = x;
o1.lat = y;
o1.rg = flipud(A1);
rg_plot(o)
hold on
rg_plot(o1)

读出的空间参考信息。

Matlab和GMT展示水体变化的栅格影像_第1张图片

Matlab和GMT展示水体变化的栅格影像_第2张图片

 

(2)GMT6

在利用GMT读取遥感影像,我之前写过专栏关于读取遥感影像的方法。具体的代码如下:

gmt basemap -R77.5/78.3/43.6/43.9 -JX12c/8c -Bf0.2a0.2 -BWneS -X14c -Y0c
gmt makecpt -Crainbow -T0/16/1 -Z
@REM gdalwarp lake2_2016.tif lake22016.tif -ot Float32 -dstnodata 127
gmt grdimage lake22016.tif -Q
gmt makecpt -Crainbow -T0/40/1 -Z
@REM gdalwarp lake2_2014.tif lake22014.tif -ot Float32 -dstnodata 127
gmt grdimage lake22014.tif -Q
echo 78.22 43.63 (i) | gmt text -R77.5/78.3/43.6/43.9 -JX12c/8c -F+f24p,4

注意:1.gdalwarp lake2_2016.tif lake22016.tif -ot Float32 -dstnodata 127 是转换栅格的格式,其中的127是将栅格中127数值替换为NaN;

2.gmt grdimage lake22014.tif -Q中的Q是不显示NaN。【关键】

Matlab和GMT展示水体变化的栅格影像_第3张图片

 不使用-Q将会出现灰色的NaN值。

Matlab和GMT展示水体变化的栅格影像_第4张图片

P.S.通常对于图像的边界不是非常复杂、非常细碎的情况下,我会选择将其转成散点,然后在GMT中用-G填充即可。

@欢迎点赞收藏!!

你可能感兴趣的:(arcgis)