爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4360|回复: 2

[源程序] MATLAB读取iff文件,压缩以及地理信息读取

[复制链接]

新浪微博达人勋

发表于 2017-8-11 15:36:06 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
最近得到一张TIFF图,要求我把图中要素信息的精度从1km降低至100km的,现在介绍一下我的做法
(边摸索边完成,如果有不对的地方还请大家指正)
第一步,了解文件:
            拿到一张TIFF和两个没见过的描述文件,有点抓瞎,先看一下他们的地理描述信息
             info=geotiffinfo('f_name.tif');
             这个时候系统会反馈一串列表信息,里面包含了这套数据的名字、修改时间等基本信息和间隔单位、坐标等基础地理信息,详情help
第二步,文件读取:
             TIFF的文件读取方式有两种,一种是当做普通图片,之间用imread()就可以读取图片数据
             第二种则是用TIFF库进行操作:
             pic=Tiff('f_name.tif','r+');%r+表示新打开文件读取或写,r是读取,w是新建,a是在原有基础上增加,具体见help
             pic.setDirectory(1)                  %设置FID,可以不用1哈,随意。
             pic_data{1}=pic.read()           %得到tif的图片数据,注意哈,这里是一个cell。
重点,精度修改
           这里用到了一个blockpro()函数,解释起来就是我把一整张图分成若干100*100的小块分别处理了,详情help
          fun=@(k)sum(sum(k.data)); 函数必须要用结构体!
          Modify=blockpro(img,[100 100],fun);%%fun是要对【100*100】这个像素块进行的处理,我这里是累加
           嗯,然后就处理完了,不用自己找坐标或者位置去循环,我觉得自己牛逼坏了。
最后,图片储存
          你得到了一张全新的,模糊得不要不要的图哦,可以image(Modify)看它有多丑,当然imshow()也没有问题
          然后你要把它存起来,这里存的是.jpg格式
          imwrite(Modify,'ChouDeYiB.jpg');
大功完成~撒花~
         为什么不存成.TIF呢? 因为我还在研究坐标系咋么变过来,然后用Tiff('new.tif','w');t.wirte(Modify);t.writeDirecyory();来把它存好。。。
          求各位网友生出援手,教教我下一步咋弄。。。因为图片分辨率不一样了,坐标肯定有区别的!悲伤。
          那么~原图上点的位置坐标经纬度又怎么读呢?



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-8-11 15:40:48 | 显示全部楼层
本帖最后由 影形 于 2017-9-1 11:13 编辑

点错了,我就接着写了哈。。。
首先,确定你想查的点在哪行哪列。上文中我们得到了IMG这个cell,可以看到图片的行列数哈
比如我要找第100-200行,低600-700列的点的坐标,那么:
info=geotiffinfo('f_name.tif');
[x,y]=pix2map(info.RefMatrix,100:200,600:700);
[lat,lon]=projinv(info,x,y);
就可以啦~
会得到lat:101×1;lon:101×1;两行你想要的经纬度信息~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-8-11 15:44:52 | 显示全部楼层
补充一下:给你的tiff写入地理信息的命令:
geotiffwrite('shanghai.tif',Y,R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);%write image with spatially referenced

转载至MATLAB中文论坛http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=213403
我在气象家园写是为了以后我也能看,经常忘记自己用过的函数,现在开始记录一下,也供大家讨论哈

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表