爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

NetCDF文件合并

[复制链接]

新浪微博达人勋

 楼主| 发表于 2013-3-26 16:51:56 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-26 16:55:23 | 显示全部楼层
MeteoInfo 发表于 2013-3-26 16:51
是Surfer的二进制格点数据格式吗?

亲!忽略surfer,就是普通的二进制格点数据,配个ctl能在grads中画图的那个~~~~~~~~~~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-26 17:31:12 | 显示全部楼层
MeteoInfo 发表于 2013-3-26 16:51
是Surfer的二进制格点数据格式吗?

所以应该怎么合并呢 觉得用fortran好麻烦~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-26 19:27:11 | 显示全部楼层
哞哞三年半 发表于 2013-3-26 17:31
所以应该怎么合并呢 觉得用fortran好麻烦~

如果每个文件里只有一个格点数据(只有一个变量、一个时次、一个高度),可以简单的用DOS的copy命令合并,比如:

copy /b *.dat newdata.dat

当然ctl文件需要根据合并后的数据情况重新编写。

如果每个文件里的格点数据比较复杂(比如多变量、多时次、多高度),则需要写程序来合并数据,以保证合并后的数据符合GrADS二进制数据格式。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-28 04:53:04 | 显示全部楼层
合并NC文件,如果是二次开发,可以使用MeteoInfoC中的函数查看要合并的nc文件信息,然后使用nco中的命令做实际工作(http://nco.sourceforge.net/)。
上个函数,贴点代码。 这里代码的功能是将新产生的小文件不停地append已有的文件后面。        /// fileout = fileout + filein;
        private void UseNCOToConcatenateFiles(string filein, string fileout)
        {
            // Prepare the process to run
            ProcessStartInfo start = new ProcessStartInfo();

            // Enter in the command line arguments, everything you would enter after the executable name itself
            StringBuilder sb = new StringBuilder();
            sb.Append(" -O --no_tmp_fl ");
            sb.Append(fileout);
            sb.Append(" ");
            sb.Append(filein);
            sb.Append(" -o ");
            sb.Append("test.nc");

            start.Arguments = sb.ToString();
            // Enter the executable to run, including the complete path
            start.FileName = @"nco\ncrcat.exe ";

            // Do you want to show a console window?
            start.WindowStyle = ProcessWindowStyle.Hidden;
            start.CreateNoWindow = true;

            // Run the external process & wait for it to finish
            using (Process proc = Process.Start(start))
            {
                this.Cursor = Cursors.WaitCursor;

                proc.WaitForExit();

                // Retrieve the app's exit code
                int exitCode = proc.ExitCode;

                if (exitCode != 0)
                {
                    string errmessage = "There occured an error.\n Please try again.";
                    MessageBox.Show(errmessage, "Alert");
                }
                else
                {
                    #region Using ncrcat, have to use the following extra file operations.
                    //Sometimes, they are very dangerous. So it'd better backing up firstly.
                    File.Copy(fileout, fileout + ".backup.nc", true);
                    File.Copy("test.nc", fileout, true);
                    File.Delete("test.nc");
                    #endregion End of extra file operations.

                    string message = Path.GetFileName(filein) + " has been concatenated to " + Path.GetFileName(fileout) + " successfully!";
                    MessageBox.Show(message, "Info");
                }

                this.Cursor = Cursors.Default;
            }//end of using
        }



合并前,要用到MeteoInfoC中的nc函数查看是否已经合并过等等。
MeteoInfoC中的函数我就不说了,自己看文档吧

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

新浪微博达人勋

发表于 2013-3-28 04:55:43 | 显示全部楼层
我用nco+MeteoInfoC合并了两个700多M的文件,没有崩溃
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-28 09:08:00 | 显示全部楼层
royalosyin 发表于 2013-3-28 04:55
我用nco+MeteoInfoC合并了两个700多M的文件,没有崩溃

用MeteoInfo脚本也很方便:http://bbs.06climate.com/forum.p ... 298&fromuid=106
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-15 15:53:55 | 显示全部楼层
每天学习一点,感谢分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-2 08:26:50 | 显示全部楼层
“文件合并分为两种情况,一种是合并不同时次的数据文件,要求各文件的维、变量等设置都一样,只是时间不同;”请问这种情况用MeteoInfo如何操作合并啊?
刚才用文中方法合并后发现只有第一个文件的数据保留着,其它的文件数据都没有了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-2 08:42:51 | 显示全部楼层
a1s1 发表于 2014-1-2 08:26
“文件合并分为两种情况,一种是合并不同时次的数据文件,要求各文件的维、变量等设置都一样,只是时间不同 ...

哈,更新了文件,合并没问题了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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