grad用fwrite生成的二进制文件大小和ncl用fbinwrite生成的不一样,相差有8个字节,参考了以下网页,问题出在顺序存取和直接存取的差异。 以下是我的理解,欢迎指正:
 
  1. Fortran里面,二进制文件的存储方式有sequential(顺序存取)和direct(直接存取)两种。其中,"顺序存取"不需要每次存取的数据(也称"记录“)的长度一致,而是在每笔记录两端加上了记录该记录所占长度的标识符。而"直接存取"要求每一笔记录的长度相同。
  2. Fortran文件的存放方式

    顺序文件存放方式:
    [length 1][记录1][length 1]   [length 2][记录2][length 2] …… [length n][记录n][length n]…

    每一笔记录的两端都有一个占四个字节位的整数(length),记录了该笔记录所占的长度(单位字节)。

    直接文件
    存放方式:
    [记录1]  [记录2] …… [记录n] …

    每一笔记录长度是固定(相同)的。打开文件时,需要指定RECL= ???字段,告诉编译器每一笔记录的长度。因为每笔记录的长度都一致(可以认为是有格式文件),还需要加上form="formatted"这一参数描述。

  3. GrADS 用fwrite命令写的二进制文件的存放方式
    fwrite命令写的二进制文件(比如grd文件)的方式很特别。它是按顺序(从前到后写的方式)写数据。但是,与fortran顺序文件的存放方式不同,每个记录的两端没有长度指示符。所以需要有相应的数据描述文件(*.ctl)对数据的存放格式进行描述。

    需要注意的是,一些代码中form="binary”这个参数描述,不是标准的fortran语法,一些编译器(如gfortran)可能无法通过编译。

    关于二进制文件读取,有一种流文件读取的方法很好在open语句里面添加access='stream',读文件的时候根据form=???字段指定的文件格式(有格式/无格式),自动用该类文件的读取方式读取数据详见http://fcode.cn/guide-86-1.html

  4. 用NCL读取二进制文件的数据
    在读数据之前需要知道文件的存取方式,是直接存取还是顺序存取的。根据相应的存取方式使用对应的函数读取数据。
    此外,二进制文件存放的字节序 还有大小端(Big_Endian和Little_Endian)的区别。一些数据(如wrfout)是用Big_Endian 形式存储的,需要注意。

grads,fortran,ncl二进制文件的更多相关文章

  1. GrADS,NCL一些经验

    GrADS画特定经线方法 set clevs 23.5; d lat set clevs 120;d lon GrADS 查看多个打开文件的ctl q ctlinfo 1 q ctlinfo 2 .. ...

  2. 目前比较流行的Python科学计算发行版

    经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...

  3. 地图绘制之basemap第一弹 basemap选择与安装

    作为一个测绘GIS专业的学生,会有很多绘制地图的需求,一般情况使用ArcGIS.QGIS就可以解决,但是在绘制如论文插图时需要使用更加专业可定制化程度更高的工具,专业传统一般使用GMT,几经比较,最终 ...

  4. [转载:]Fortran 二进制文件读写

    一些朋友总是咨询关于二进制文件的读写和转化.这里就我自己的理解说一说. 一).一般问题 二进制文件与我们通常使用的文本文件储存方式有根本的不同.这样的不同很难用言语表达,自己亲自看一看,理解起来会容易 ...

  5. 用matlab将nc数据读出来,写成二进制文件,然后用grads画图

    clear,clc nt=735;ny=73;    %2.5*2.5格点的nx=144;    %2.5*2.5格点的f=netcdf('air.mon.mean.nc','nowrite');tt ...

  6. Intel Visual Fortran Compiler 11调用lapack库实现并行多处理计算

    采用fortran进行数值计算的朋友们都应该听说过大名鼎鼎的lapack库,我就不多做介绍了,在此,我只是介绍一个编译好的lapack二进制包ACML(AMD Core Math Library),并 ...

  7. 使用gfortran将数据写成Grads格式的代码示例

    使用gfortran将数据写成Grads格式的代码示例: !-----'Fortran4Grads.f90' program Fortran4Grads implicit none integer,p ...

  8. c和fortran混编(基于GNU/Linux,转自 linzch)

    网 上说要分c为主程序和fortran为主程序两种情况讨论,其实我觉得不用,只要你了解生成可执行文件的机制.这个机制就是:不论是单一语言模块之间的 链接还是不同语言之间的混合链接,本质目的都是要链接器 ...

  9. Java———较大二进制文件的读、写

    由于项目需要,需要对二进制文件进行读写.转换. 文件说明:由其他程序得到的二进制文件,文件内容为:包含23543个三角形.13270个顶点的三角网所对应的721组流速矢量(u.v)文件,通俗些说,一条 ...

随机推荐

  1. Nginx-基础配置

    正文 本文转载自:http://www.ha97.com/5194.html 文章经过我排版和润色再加工,更加易读.实在是了解nignx配置的基础好文章. 正文 定义Nginx运行的用户和用户组 us ...

  2. Word、rss、HTML解析等dll

    RSS.NET.dll RSS.NET是一款操作RSS feeds的开源.NET类库.它为解析和编写RSS feeds提供了一个可重用的对象模型.它完全兼容RSS 0.90, 0.91, 0.92, ...

  3. November 6th 2016 Week 46th Sunday

    The starting point of all achievements is desire. 成功的第一步是渴望. Those who make great achievements are o ...

  4. <Lord don’t move that mountain>

    <Lord don’t move that mountain> Lord, don't move that mountain(主,不要移走高山) Give me strength to c ...

  5. ZT 人生真的是一场马拉松吗?

    中国合伙人:孟晓俊:生活应该是什么样的?自己提出的问题应该由自己来回答,别人的回答是别人的答案,是别人的生活,而你应该过自己的生活,不是别人的生活.     人生真的是一场马拉松吗? 投递人 itwr ...

  6. 题解 P1894 【[USACO4.2]完美的牛栏The Perfect Stall】

    题面 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...

  7. php解决约瑟夫环的问题

    php里面解决约瑟夫环还是比较方面的,但是下面的方法太费空间 <?php class SelectKing{ private $m;//幅度 private $n;//总数 public fun ...

  8. java Date日期类和SimpleDateFormat日期类格式

    ~Date表示特定的时间,精确到毫秒~构造方法:public Date()//构造Date对象并初始化为当前系统的时间public Date(long date) //1970-1-1 0:0:0到指 ...

  9. Oracle 空间查询, 数据类型为 sdo_geometry

    因网上搜索到的相关资料大部分都是关于sdo_geometry的介绍和以及通过sql语句添加要素,查询要素等等.没有找到存储过程相关的例子,所以只好自己动手啦. 准备 环境:windowsxp系统,安装 ...

  10. 怎么在移动端模拟pc端进行web开发调试日志

    由于移动端开发,许多地方需要进行手势交互开发,而在pc模拟手机浏览器中不能进行模拟手势,所以无法查看日志,于是网上找了一个,腾讯vConsole,感觉还可以,分享给大家安装也方便 我的项目是基于vue ...