用Matlab读写单波段遥感影像

1 篇文章 0 订阅

一、几点背景知识:

1.matlab提供了许多将影响读写为矩阵的函数,例如imread/imwrite、tiff等;

2.运用imread/imwrite函数能较为方便的处理.jpg, .bmp,.png等格式数据。但是对tiff影像则不适用,系统会出现:“无法输出single的图

   像······“的报错提示。若将数据强制转换为double,则在ENVI等软件中显示为空白影像,且无法保存影像的空间位置信息。

二、geotiffread和geotiffwrite

1.运用geotiffread和geotiffwrite对遥感影像进行读写的基本语句为:

                                                                                 [A, R]= geotiffread(’filename‘);    % A为影像的矩阵文件,R为影像的地理参考

                                                                                 B = A.* 100;                                 %对原始影像进行操作         
                                                                                 geotiffwrite(‘newfilename',B,R);   %对操作结果进行写入操作

2.若按照上述程序执行,则会出现如下报错:

          

Error usinggeotiffwrite>validateR (line 838)

The input, R, is a map.rasterref.MapCellsReference object indicating that you are working in a projected coordinate system. If so, then specify a projected coordinate system by setting the appropriate values for the 'CoordRefSysCode' or 'GeoKeyDirectoryTag' optional parameters.提示为:以投影坐标系作为地理参考,在保存之时geotiffwrite函数中应指明CoordRefSysCode’或‘GeoKeyDirectoryTag’,两者二选其一。

3.关于’CoordRefSysCode’或‘GeoKeyDirectoryTag

官方文档给出的说明是:CoordRefSysCode’指的是一个整型、正数标量,特指数据的投影参考编码。投影编码详见http://geotiff.maptools.org/spec/geotiff6.html#6.3.2.1。使用这种方式的代码如下:

                                                                                         [A, R]=geotiffread('filename');
                                                                                                  info=geotiffinfo('filename');
                                                                                          EPSG=32650;                                                                              % EPSG=32650, UTM zone 50N
                                                                                        geotiffwrite('Newfilename', A, R, 'CoordRefSysCode', EPSG);

GeoKeyDirectoryTag’可以从GeoTIFF信息结构获得geotiffinfo返回的当前影像的投影信息,省去了查找投影编码的过程。使用这种方式的代码如下

                                               [A, R]=geotiffread('filename');

                                              info=geotiffinfo('filename');

                                             geotiffwrite('newfilename', image, geo, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag)



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值