C#遥感数据头文件批量生成器

1、长时间序列中国NDVI数据GIMMS(下载地址:寒区旱区科学数据中心),提供Albers投影的tif格式数据集。

2、长时间序列全球NDVI数据GIMMS 3g(下载地址:Ecocast),元数据无投影,格式为VI3g,IE浏览器下载的为.txt格式。GIS软件无法直接打开,Envi
5.1打开,参照:ENVI5.1中快速打开及处理GIMMS数据

Envi5.1中打开二进制(Binary)数据是,需要提供头文件,考虑到该数据集的大小范围都一致,可以共用一个头文件,只需要将头文件的名称与数据文件一致,由于Python和IDL知识的欠缺,最终考虑使用C#批量生成,思想是:每读到一个数据文件,按名称生成一个头文件(.hdr),而头文件的内容是在Envi5.1中打开第一个数据是生成的。

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;  

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string path;
        string path2;
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Trim().Length == 0 || textBox2.Text.Trim().Length == 0)
            {
                MessageBox.Show("请选择数据!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            string name; int n = 0;int  m=0;
            DirectoryInfo TheFolder = new DirectoryInfo(@path);

            foreach (FileInfo NextFile in TheFolder.GetFiles())
                n++;
            progressBar1.Minimum = 0;
            progressBar1.Maximum = n;
            foreach (FileInfo NextFile in TheFolder.GetFiles())
            {
                name=NextFile.Name.Substring(0, NextFile.Name.Length - 4);
                this.listBox2.Items.Add(name);
                if (!File.Exists(path+name + ".hdr"))
                {
                    FileStream myFs = new FileStream(path + name + ".hdr", FileMode.Create);
                    StreamWriter mySw = new StreamWriter(myFs);

                    myFs = new FileStream(path2, FileMode.Open, FileAccess.Read);
                    StreamReader sr = new StreamReader(myFs);
                    sr.BaseStream.Seek(0, SeekOrigin.Begin);
                    string str = sr.ReadToEnd();
                    sr.Close();

                    mySw.WriteLine(str);
                    mySw.Close();
                    myFs.Close();
                    m++;
                    progressBar1.Value = m;
                    label1.Text = "已生成:" + m +"/"+n+ "个";
                }

            }
            MessageBox.Show("生成成功!","恭喜恭喜",MessageBoxButtons.OK,MessageBoxIcon.Information);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                path = folderBrowserDialog1.SelectedPath.ToString()+"\\";
                textBox1.Text = path;
            }
            else
                textBox1.Text = "";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            OpenFileDialog of = new OpenFileDialog();
            if(of.ShowDialog()==DialogResult.OK)
            {
                path2 = of.FileName;
                textBox2.Text = path2;
            }
            else
            {
                textBox2.Text = "";
            }
        }
    }
}
时间: 2024-08-09 19:52:37

C#遥感数据头文件批量生成器的相关文章

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围. <climits>该头文件包含了系统的整数长度的限制,它已取代了头文件<limits.h> <cfloat> 该头文件包含了系统的浮点数的长度限制,它以取代了头文件<float.h> <cfloat> 头文件各字符常量的取值和含义 上图中在程序中

将mp3文件数据转换成.h的头文件的音频数据

使用mp3文件数据转换成.h的头文件的工具 bin2h_v1.01.zip 使用bin2h工具 https://code.google.com/p/bin2h/wiki/bin2h 将bin2h_v1.01.zip解压到bin2h文件夹中 ,输入命令: >bin2h 小苹果.mp3 xiaopingguo.h 生成xiaopingguo.h的头文件,里面是纯pcm的音频数据 版权声明:本文为博主原创文章,未经博主允许不得转载.

postgresql备份恢复数据库和批量导入导出数据到文件方法

备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak 恢复数据库:psql -h localhost -U root -d demo <  demo.bak 备份表:pg_dump -h localhost -U root demo02 -t books > /home/arno/dumps/books.bak 恢复表:psql -h localhost -U root -d demo -t boo

C++编程常用头文件及其包含函数汇总

1. #include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件. 当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现:当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std:这样才能正确使用cout.   2.#include <cstdlib>是C++里面的一个常用函数库, 等价于C中的<stdlib.h>

无需其他工具 Windows 7文件批量更名

某个周日上午,还在赖床的时候被电话吵醒,原来是大学死党,只听电话那头说到"我买的新电脑送来了,过来帮我调教下,中饭我管了".看在路不远还有饭吃的份上,勉为其难的爬起来洗漱洗漱就上路了.赶到那边后一看,哟,曾经对笔记本不屑一顾的哥们儿居然主动买了笔记本,"工作要用,还是笔记本方便些".是啊,上学时候买电脑几乎都是用来玩游戏,台式机性价比又高自然很少选笔记本,如今有了经济能力又考虑到可能需要携带外出,换笔记本也就顺理成章了. 闲话略过,开机看看有哪些需要调整的,一看启动

Facebook App 的头文件会有更多的收获

最近在看一些 App 架构相关的文章,也看了 Facebook 分享的两个不同时期的架构(2013 和 2014),于是就想一窥 Facebook App 的头文件,看看会不会有更多的收获,确实有,还不少.由于在选择 ipa 上的失误,下了个 7.0 版的 Facebook(最新的是 18.1),会稍有过时,不过后来又下了个 18.1 的看了下,发现变动其实不大.以下是我从头文件中获取到的一些信息(20多万行,浏览起来还是挺累的) 让视图组件可以方便地配置 这个在 Facebook 的演讲中也提

C++中的头文件和源文件

一.C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码.C+ +语言支持“分别编译”(separate compilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链

头文件&lt;stdio.h&gt;

头文件<stdio.h>声明了三种类型,一些宏和很多执行输入输出的函数.1.类型:FILE 它是一个对象类型,可以记录控制流需要的所有信息,包括它的文件定位符.指向相关的缓冲的指针.记录是否发生了读/写错误的错误指示符和记录文件是否结束的文件结束符.fpos_t 它是一个对象类型,可以唯一指定文件中的每一个位置所需的所有信息.size_t 这是无符号整数类型,它是sizeof关键字的结果.2.宏:NULL 这个宏是一个空指针常量的值._IOFBF._IOLBF.IONBF 这些宏扩展了带有特定

头文件

1:stdio 就是指 "standard input & output"(标准输入输出),所以,源代码中如用到标准输入输出函数时,就要包含这个头文件! 2:stdlib 头文件即standard library标准库头文件.stdlib.h里面定义了五种类型.一些宏和通用工具函数. 类型例如size_t.wchar_t.div_t.ldiv_t和lldiv_t: 宏例如EXIT_FAILURE.EXIT_SUCCESS.RAND_MAX和MB_CUR_MAX等等: 常用的函数