在用arcgis矢量裁剪分类结果图(栅格数据)之前,分类结果中numpy数组先保存为.mat格式,这样就可以在matlab中load该mat文件 ,由于mat文件是struct ,不能直接imwrite成tif,所以要先转换成矩阵形式,再imwrite
S1 = load('vscnnnopca1.mat');
BP1 = struct2cell(S1);
Mymat1 = cell2mat(BP1);
imwrite(uint8(Mymat1),'image.tif','tif' )%记住加unit8,否则图像会是二值图像了
%如果超过0-255的范围,用unit16
以下是我保存为tif的错误尝试:
1.曾尝试在分类结果里的numpy(二维,与图像高宽尺寸一致)直接spectral.save_rgb保存为tif,但是保存的tif加上坐标后 用arcmap裁剪并不会出现7种类别信息,只是按shp边界裁剪出了形状而已。
spectral.save_rgb("jiaozuo.tif", outputs.astype(int), colors=spectral.spy_colors)
2.曾尝试imshow mat,然后再出来的图那里文件-》另存为tif,但是这样的保存结果与原来的图的尺寸不一样,又尝试用windows附件-》画图工具修改图像尺寸,也尝试用ps修改tif图像大小,但是这样修改之后加上坐标在arcmap中打开就会出现问题:图像中的想要的区域和shp大小不重合 裁剪不了。
所以还是得保存numpy成mat 再转tif 加上坐标之后就是完整的栅格数据了,在arcmap再打开shp矢量数据,用掩膜截取,就能得到想要的区域并且含有类别信息,进一步可以双击更换每一类的颜色。