Micaps格式卫星云图转换BMP---不用编程,一句DOS命令完成

    不借助其它工具,一句DOS命令实现Micaps云图转换BMP图片?不要怀疑,就是只需一句COPY命令。

    为了增加你的信心,我将转换命令写成了批处理,连同所需数据打包上传,可以先下载试试:      http://download.csdn.net/source/2881453

 

一、转换原理:

    Micaps格式的卫星云图,是气象部门最常用的卫星云图格式,在Micaps定义为第13类格式,Micaps云图有一个128字节的文件头,后面为一个像素一个字节的点阵,数据格式描述如下:

========================================================================================================

第十三类数据格式:图象数据(卫星云图、雷达拼图、地形图)

文件头:(文件头为TEXT格式)

diamond 8个字符)13 3个字符) 数据说明(40个字符)

年 (5个字符)月(3个字符)日 (3个字符)时次 (3个字符)X方向图象大小 (5个字符)Y方向图象大小 (5个字符)图象左下角经度坐标(8个字符)图象左下角纬度坐标 (8个字符)投影方式(2个字符,1-lambert  2-mecator  3-北半球  4-南半球) 放缩系数(5个字符)图象类型(2个字符,1—红外云图 2—雷达拼图 3—地形图 4—可见光云图 5—水汽图)象素值与相应物理量对照表文件名(12个字符)中心经度(8个字符)、中心纬度(8个字符)

(文件头部分共128个字符) 

数据:(数据格式为二进制数据)

一个象素点占一个字节,先沿X方向后Y方向。

========================================================================================================

    BMP文件,大家应该很熟悉了,这里我就不再啰嗦了,格式参考这里:http://baike.baidu.com/view/189487.htm

 

    先来做个试验,用photoshop把它显示出来看看。!!!!photoshop能打开Micaps云图?不要怀疑,就是photoshop。

    启动photoshop,菜单“文件”-“打开为”,出现打开文件对话框,在最下面“打开为”组合框里选“RAW(*.RAW)”类型,任选一个Micaps云图文件,出现“RAW选项”对话框,填写:高度:512,宽度:512,通道:1,颜色深度:8位,标题大小:128,

 

 

    试验证明,Micaps卫星云图点阵数据实际上与8位BMP点阵数据是一样的。 

    看到这里,大家应该能明白,Micaps云图除了128个字节的文件头和BMP不一样,后面的点阵数据格式是完全一致的。所以,我们可以用大小颜色深度与Micaps一致的BMP文件头代替Micaps的文件头,即可完成转换。 

二、、实践:

    思路有了,但如何才能用一句COPY命令就实现转换呢?

    用过DOS的人应该知道COPY命令,它是用来拷贝文件的,但它还有一个功能,就是连接文件,就是把两个文件合并成一个文件,COPY命令的说明如下:

========================================================================================================

C:/Documents and Settings/Administrator>copy/?
将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] sou
     [+ source [/A | /B] [+ ...]] [destination [/A

  source       指定要复制的文件。
  /A           表示一个 ASCII 文本文件。
  /B           表示一个二进位文件。
  /D           允许解密要创建的目标文件
  destination  为新文件指定目录和/或文件名。
  /V           验证新文件写入是否正确。
  /N           复制带有非 8dot3 名称的文件时,
               尽可能使用短文件名。
  /Y           不使用确认是否要改写现有目标文件
               的提示。
  /-Y          使用确认是否要改写现有目标文件
               的提示。
  /Z           用可重新启动模式复制已联网的文件。

========================================================================================================

    可以看到,copy中使用"+"号,即可把两个文件合并成一个,因为Micaps云图和BMP都是二进制文件,参数中还应该加上“/B”。

    为了使用copy命令连接BMP文件头和Micaps数据,我们需要做一个BMP文件头。用Windows“画图”新建一个BMP,改变图像大小为512*513,另存为“256色位图”,再用UltraEdit或者HexEdit等16进制编辑器删除该BMP文件的点阵数据部分保存为cloudhead.dat。为啥图像大小是512*513而不是512*512呢,因为为了简单,我们把Micaps云图所有内容都当做点阵数据,包括128字节的文件头,所以给BMP增加了一个扫描行,制作cloudhead.dat时也要给它后面再加上(512-128)字节空数据。另外,画图默认调色板不太适合显示卫星云图,最好能用卫星云图调色板代替cloudehead.dat中的调色板。这些过程还是挺麻烦的,不过不用担心,下载的包中已经包含制作好的cloudhead.dat,直接使用就是了。

     最后,这句DOS命令隆重登场:

    copy cloudhead.dat/b+1011260130.000/b 1011260130.bmp

    其中,"1011260130.000"为要转换的Micaps格式云图,1011260130.bmp为转换后的BMP云图。 

    为了再简单些,再给大家提供一个批处理“Cloud2Bmp2.bat”,可以用命令行跟参数的形式转换:

    Cloud2Bmp2.bat 

    其实,它也只有一行命令,利用批处理参数可以让大家少输一次文件名,命令如下:

    copy/b cloudhead.dat/b+%1.000/b %1.bmp

三、总结:

    转换过程就是这么简单,实际上就是给Micaps云图加上BMP文件头。只要研究清楚原理,就可以举一反三。Micaps下还有传真图,也可以用类似方法进行转换。

    最后,你可能还要问,如何给它叠加上地图?这个工作用批处理就没法完成,需要写程序了,你可以在图上划线,还可以在上面叠加一层透明地图.....

   

   

 

你可能感兴趣的:(Micaps格式卫星云图转换BMP---不用编程,一句DOS命令完成)