tiftomat mattotif 通过georasterref

tiftomat mattotif 通过georasterref

将mat文件存为tif(使用georasterref) 再从tif存为mat会发生变化吗?
在这里插入图片描述

答案是不会的 但是显示可能会造成假象
Mathworks并不推荐我们使用这个创建tif 原因会在后面揭晓
原因在这里:运行环境为matlab2018b
1.我们先把mat数据存为tif

      S = load(‘G:\a.mat’);
       BP = struct2cell(S);
       prec1 = cell2mat(BP);
    outp='G:\201831512rot.tif';
    %我这个mat就是全世界的降水数据 所以我的经纬度【-180 180】 【-90 90】
    refference=georasterref('RasterSize',size(prec1),'Lonlim',[-180 180],'Latlim',[-90,90])
    geotiffwrite(outp,prec1,refference)

运行我们看看refference,长什么样子
在这里插入图片描述我们可以看到我们的refference是从-180 -90 西经南纬开始的 但是我的数据真实是从西经北纬开始的。所以切记切记,使用函数要注意参数的意义,故上述代码是错误的。
真正用法 官方文档【分辨率 0 起始点中心值经度;0 分辨率 起始点中心值纬度】
[lonspacing 0 lon; 0 latspacing lat],其中:
lonspacing为正, RowsStartFrom为’west’。当 lonspacing为负时, RowsStartFrom是’east’。
latspacing为正, ColumnsStartFrom为’south’。当 latspacing为负时, ColumnsStartFrom是 ‘north’。
lat和lon分别是第一个单元中心或发布点的纬度和经度坐标。对于空间参考栅格A,第一个像元中心或发布点是与 关联的空间位置 A(1,1,:)。
世界文件矩阵定义了将固有坐标映射到地理坐标的变换
在这里插入图片描述
我的mat文件第一行第一列对应的是 -180,90 ,value值为0
正确代码

    W =[0.1 0 -179.95; 0 -0.1 89.95]
   R = georasterref (W,[1800 3600], "cells" )
%  refference=georasterref('RasterSize',size(prec1),'Lonlim',[-180 180],'Latlim',[-90,90])
    geotiffwrite(outp,prec1,R)
    
    outp='G:\201831512rot2.tif';
% refference=georasterref('RasterSize',size(p2),'Lonlim',[-180 180],'Latlim',[-90,90])
    geotiffwrite(outp,p2,R)

mat文件 我的mat文件起始点坐标是 -180,90 对应的是0
在这里插入图片描述
在ArcGIS加载该tif 这时左上角是西经180 北纬90

这个tif 列起始是北,将这个tif加载的ArcGIS中, ArcGIS是上北下南,故平铺完全符合
在这里插入图片描述
然后我们再把这个tif转为mat

  filename =FileList(i,1).name; 
    dir_filename  = [goaldir filename]
    data1=strrep(filename,'.tif','.mat')

     [SS,R] = geotiffread(dir_filename);  %SS为tif数据的信息,是一个二维数组,R是tif数据的地理信息
     info = geotiffinfo(dir_filename);  % 读取tif数据的地理信息,为后面导出为tif数据提供地理信息
    img = imread(dir_filename);
    data2=strcat(path,'\',data1);
    save(data2,'img');

在这里插入图片描述
在这里插入图片描述

是同一个mat
一定要注意 在ArcGIS 是上北下南 如果你的数据行头是南纬 将会被翻转

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值