批量处理NC数据

NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,是一个多自变量的单值函数。目前很多数据以nc格式存储,这里从gis角度 ,分别使用Arcgis、IDL批量处理。基础了解见http://blog.renren.com/share/242186498/4248540111

1、将NetCDF文件批量导出为tiff文件:

打开Arcmap——>toolbox——>mutidimension tools——>MakeNetCDFRasterLayer


将上面生成的图像数据导出到自己的文件夹


打开IDL,运行batch.pro(程序下载:https://pan.baidu.com/s/1o7D5mzS    提取码 vw7m)

(上述代码只需要修改输入、输出的数据名称、路径即可)


2.将tiff文件再转为bat文件

等全部数据都导出相应的tiff格式后,打开Arccatalog——>conversion tools——>Raster To Other Format (multiple)

右键选择batch批量处理,加载完成之后点击OK


3.将生成的dat文件,使用c#代码(后面)合并成一个BIP格式的多波段envi文件

在以上文件夹内新建一个文本文档,命名为1.txt,里面输入一行:dir /b *.dat >1.txt

另存为1.bat,此时1.txt内就是该文件夹下所有的dat文件名

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace CompositeImage
{
    class Program
    {
        static void Main(string[] args)
        {

            string TitleLine = @"F:\down\out\et\1.txt";
            //读取文件的路径
            string readFilePath = @"F:\down\out\et\";
            string saveFile = @"F:\down\out\et\MOD16A2_ET_1km_BSQ.img";
            //读取文本中的title
            StreamReader readtitleline = new StreamReader(TitleLine, Encoding.Default);
            //往目标文件写入
            BinaryWriter Bwritefile = new BinaryWriter(new FileStream(saveFile, FileMode.Create));
            //在流中读取,存暂时读取的Title
            string TempLine = readtitleline.ReadLine();
            //60是dat文件个数
            for (int i = 0; i < 60; i++)
            {
                //读文件(哪一个)
                string filepath = readFilePath + TempLine;
                Console.WriteLine("读取{0}", TempLine);
                BinaryReader Breadfile = new BinaryReader(new FileStream(filepath, FileMode.Open));
                //读行列(可在dat文件的额头文件中找到)
                for (int j = 0; j < 7016; j++)
                {
                    for (int k = 0; k < 2400; k++)
                    {
                        //Breadfile.ReadInt16()是根据dat的存储类型来确定,0.1f是文件的scale,如果没有就不乘)
                        Bwritefile.Write(Convert.ToSingle(Breadfile.ReadInt16() * 0.1f));
                    }
                }
                Breadfile.Close();
                TempLine = readtitleline.ReadLine();
            }
            readtitleline.Close();
            Bwritefile.Close();
            Console.WriteLine("完成!");
            Console.Read();
        }
    }
}

后面根据需要,确定是否在envi中将上述的BSQ格式文件转为BIP或进行平均值统计


另外,使用matlab批处理nc数据可参考http://blog.sciencenet.cn/blog-505625-597727.html

           grads批处理可参考http://blog.csdn.net/chht/article/details/5255802

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值