MATLAB中对tif格式栅格影像读取-保存,点滴学习,贵在记录。

MATLAB中对tif格式栅格影像读取-保存

在做水质反演的过程中,用到了MATLAB,但对这个工具一无所知。研究的总体思路是先建立整体构架,然后查阅每一步的具体实现的语法,结合MATLAB help,逐渐实现每一步。

geotiffwrite

基础语法
geotiffwrite(filename,A,R)
geotiffwrite(filename,X,cmap,R)
geotiffwrite(…,Name,Value)

输入参数变量释义:
filename:输入文件的名称和位置,文件扩展名必须是 “.tif” 或者 “.TIF”,变量类型为字符向量。

A:要导出的影像数据,为MNP的矩阵。坐标系为地理坐标,且默认为WGS-84,指定坐标可通过’GeoKeyDirectoryTag’和’CoordRefSysCode’实现。数据类型
数据类型 double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | logical

R:空间参考信息。
空间引用信息,指定为地理栅格引用对象、引用矩阵或引用向量。
如果您正在处理投影坐标系中的图像坐标,而R是一个地图栅格引用对象或引用矩阵,则相应地指定“GeoKeyDirectoryTag”或“CoordRefSysCode”。

X:待补充

cmap:RGB图像,为M*3的矩阵

示例

% 影像的读取
basename = 'boston_ovr';
imagefile = [basename '.jpg'];
RGB = imread(imagefile);
worldfile = getworldfilename(imagefile);
R = worldfileread(worldfile, 'geographic', size(RGB)); %读取空间参考信息
%导出影像
filename = [basename '.tif'];
geotiffwrite(filename, RGB, R)
% 显示影像
figure
usamap(RGB, R)
geoshow(filename)

示例2 读取tif处理后保存tif

% 读取tif及空间坐标信息
[A, R] = geotiffread('F:\boston.tif');
info = geotiffinfo('F:\boston.tif');
% 保存tif并使用原始数据空间坐标信息
subimage = A;
subR = R;
filename = 'boston_subimage.tif';
geotiffwrite(filename, subImage, subR,  ...'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
figure
mapshow(filename);

其他参数较多,可以从原始影像中读取,也可以自定义。
‘CoordRefSysCode’ :坐标系,默认EPSG:4326(即WGS84坐标系)
使用方法:'CoordRefSysCode',4326
小知识,EPSG:4326是web map中用来表示地图坐标的代码,每个坐标都有一个对应的EPSG代码,常用的WGS84代码为EPSG:4326,伪墨卡托投影代码为EPSG:3857

‘TiffTags’:结构体,内容有以下

Compression 压缩类型,默认‘PackBits’,其他的包括‘LZWZ’,‘Deflate’,‘none’
PhotometricInterpretation 一般不需要设置。官方介绍如下:字段名称可以缩短为光度控制。该值是根据输入图像特征设置的,使用以下算法:如果A是[M-by-N-by-3],并且是类类型uint8或uint16,则该值为“RGB”。对于所有其他大小和数据类型,该值为“miniBlack”。如果提供了X,CMAP语法,则值为“palete”。如果该值设置为“RGB”,而A不是[M-by-N-by-3],则会发出错误。允许的值为“miniBlack”、“RGB”、“Palette”、“Separated”。
Software 可忽略,,,,文件的软件制造商。该值设置为“MATLAB,Mapping Toolbox,The MathWorks,Inc.”的值。要删除该值,请将标记设置为空字符串或字符向量(’’)。
RowsPerStrip 一个标量正整数值,指定输出文件中每个条带所需的行数。如果A的大小小于[160 x 160],geotiffwrite将RowsPerStrip设置为1。如果指定RowsPerStrip和TileWidth,无论是否使用tillelength,geotiffwrite都会发出错误。
TileWidth 标量正整数值和16的倍数,指定分片的宽度。如果A的大小大于[160 x 160],则设置平铺宽度。如果是,则该值将创建最多[10×10]个平铺。如果同时指定RowsPerStrip和TileWidth,geotiffwrite将发出错误。
TileLength 同上,长度

使用方法:tifftags = sturct('Compression','LZW')

重点!!!

之前跑数据时,发现超过4GB的数据无法写入保存,这是因为geotiff有两种格式,一种是classictiff,另外一种是针对大数据的bigtiff。解决此办法就是加入字段geotiffwrite(name,out,R,....,'TiffType','bigtiff','Tifftags',tifftags)
老版本的没有这个,如果报错,请注意版本问题。目前用的19a没有问题

MATLAB中对tif格式栅格影像读取-保存相关推荐

  1. 【ArcGIS】ArcGIS10中根据shapefile裁剪栅格影像

    已经有很多博文介绍操作,此处仅为自己总结 数据如下: 中国:shapefile(polygon) F141998.v4b_web.stable_lights.avg_vis.tif:栅格影像(灯光数据 ...

  2. matlab制作动画并保存,[转载]Matlab中动画的实现、制作和保存(转载Matlab技术论坛)...

    Matlab中动画的实现.制作和保存(转载Matlab技术论坛) 本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-592-1-1.html 光 ...

  3. matlab中mat文件的生成和读取

    在命令窗口输入数据. 1.mat文件的生成 (1)保存单一矩阵数据 如图所示,输入数据,生成数组.最后输入save x1 x.该语句表示将敲入的数组x生成数据x1.mat文件. (2)如果矩阵A.B都 ...

  4. matlab.mat文件读取,matlab中mat文件的生成和读取

    1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...

  5. Python 处理 Matlab中的 mat 格式文件

    Deal with .mat files from Matlab. 有时候需要读取并处理Matlab程序中的一些变量和数据. 在Matlab中保存数据 在Matlab程序中保存变量数据可以使用下面的语 ...

  6. matlab里open命令,告诉你Ununtu下在Matlab中读写OpenEXR格式的图片的方法及命令

    由于最近有需求对OpenEXR格式的图片进行处理,而Matlab本身并不支持OpenEXR格式的图片读写.发现在网上有一个插件,使用该插件可以在Matlab中直接使用exrread/exrwrite对 ...

  7. 不用插件,如何将tif格式的影像精准导入到CAD中?

    谷歌影像图有清晰的纹理与准确的位置信息广泛用于各行各业中,可以用于影像图画小比例尺的地形图.工程控制网点分布图.水准路线图.点之记的示意图.CAD图中等. 那么无需插件辅助,如何将影像数据与CAD数据 ...

  8. Matlab常用函数集合(各类文件读取/保存、数据转换、处理)——持续更新中

    目录 一.各类文件读取.显示.保存 0.文件/文件夹 0.1.判断文件是否存在 1.图像文件 1.1.图片读取 1.2.图片显示 1.3.图片保存 2.音频文件 2.1 音频文件读取 2.2 音频文件 ...

  9. matlab中分号,使用分号分隔数据读取CSV,并在matlab中使用逗号作为十进制标记

    EDIT3(接受的答案):使用主工具栏的变量部分中的导入数据按钮,可以自定义数据的导入方式.完成后,您可以单击箭头下方的导入选择,并生成将遵循导入数据窗口中定义的相同规则的脚本或函数. ------- ...

  10. ArcGIS怎么批量将tif格式的影像转换成png/jpg格式

    1.首先打开ArcGIS,打开工具箱 2.选择:转换工具-转为栅格-栅格转其他格式 3.依次按下面操作就可以了

最新文章

  1. spring mvc 接收页面表单List
  2. linux服务器的搭建配置与应用,linux服务器的搭建与配置
  3. 对称加密实现重要日志上报Openresty接口服务
  4. 事件触发控制_前端性能优化:事件的节流throttle与防抖debounce
  5. 白领必看的十种职场致命毒药
  6. java中随机数Random和ThreadLocalRandom()用法与区别
  7. TYAN联合AMD举办线上研讨会,分享最新第三代AMD EPYC服务器产品
  8. cr2格式缩略图不显示_cr2缩略图补丁 佳能相机RAW文件CR2原片格式缩略图显示补丁- 游侠下载站...
  9. php ziparchive类,PHP Zip ZipArchive 类_编程学问网
  10. 【查找资料】冰点文档下载免费下载百度、豆丁、丁香、畅享、MBALib、道客巴巴、Book118等文库文档
  11. MeteoInfoLab脚本示例:数据投影-FLEXPART
  12. 没有人脉如何靠内推进大厂?内推真的那么神吗?带你搞透内推到底是什么
  13. 2020:可视化的视觉问答LRTA: A Transparent Neural-Symbolic Reasoning Framework with Modular Supervision
  14. 数据产品经理该懂的python技术
  15. 30天自制操作系统——第八天鼠标控制与32位模式切换
  16. C语言在一个数组中查找一个数字
  17. SQLite3在IOS中的用法
  18. 康奈尔大学计算机生物学是,康奈尔大学计算生物学难进吗?
  19. 关于include的正确理解和用法
  20. [加载XlUE组件失败,迅雷看看桌面图标已损坏,请重新安装。]问题处理

热门文章

  1. 【渝粤教育】电大中专常见病药物治疗 (2)_1作业 题库
  2. sat考试用计算机,干货:SAT考试计算器选择指南
  3. ECS云服务器搭建自己的博客网站worldpress
  4. 如何使用CH340G模块给51单片机下载程序
  5. python输出两个元素空格隔开_python实现将一串字符每两个一组,中间用空格隔开...
  6. 全智通A+常见问题汇总解答—A+维修管理—维修领料,修改领料单材料归属到了另一个维修单下
  7. 探究:软件工程中的test oracle到底是什么意思?
  8. Linux内核模块最简驱动
  9. 传销三级的认定标准_主观明知在传销犯罪中有那么重要吗?
  10. 数据库文件放在服务器哪里,服务器上数据库文件存放位置