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中打开第一个数据是生成的。

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

代码:

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 = "";
            }
        }
    }
}



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

上一篇:windows server 2008 iis7 伪静态URL中带特殊符号空格无法访问


下一篇:ServiceStack 项目实例 010 ServiceStack.Northwind - 2