转载自百度文库

   /// <summary>/// 读取头文件信息/// </summary>/// <param name="strFileName"></param>头文件路径和名称/// <param name="iColumnsCount"></param>像素列数/// <param name="iLinesCount"></param>像素行数/// <param name="iBandsCount"></param>波段数/// <param name="iType"></param>基本数据类型代码/// <param name="strInterLeave"></param>文件组织格式/// <returns></returns>返回是否读取成功public static bool ReadHDR(string strFileName, out int iColumnsCount, out int iLinesCount, out int iBandsCount, out int iType, out string strInterLeave){bool blnSuccess = false;iColumnsCount = -1;iLinesCount = -1;iBandsCount = -1;iType = -1;strInterLeave = "";//初始化各个变量StreamReader hdrfile = null;try{hdrfile = new StreamReader(strFileName);string content = "";while (hdrfile.EndOfStream != true){//获取像素列数content = hdrfile.ReadLine();if (content.Contains("samples")){String samples = content.Substring(content.IndexOf("=") + 1, content.Length - content.IndexOf("=") - 1).Trim();iColumnsCount = Convert.ToInt32(samples);System.Console.WriteLine(samples);break;}}while (hdrfile.EndOfStream != true){//获取像素行数content = hdrfile.ReadLine();if (content.Contains("lines")){String lines = content.Substring(content.IndexOf("=") + 1, content.Length - content.IndexOf("=") - 1).Trim();iLinesCount = Convert.ToInt32(lines);System.Console.WriteLine(lines);break;}}while (hdrfile.EndOfStream != true){//获取波段个数content = hdrfile.ReadLine();if (content.Contains("bands")){String bands = content.Substring(content.IndexOf("=") + 1, content.Length - content.IndexOf("=") - 1).Trim();iBandsCount = Convert.ToInt32(bands);System.Console.WriteLine(bands);break;}}while (hdrfile.EndOfStream != true){ //获取数据种类content = hdrfile.ReadLine();if (content.Contains("data type")){String type = content.Substring(content.IndexOf("=") + 1, content.Length - content.IndexOf("=") - 1).Trim();iType = Convert.ToInt32(type);System.Console.WriteLine(type);break;}}while (hdrfile.EndOfStream != true){ //获取数据解译方式content = hdrfile.ReadLine();if (content.Contains("interleave")){String interleve = content.Substring(content.IndexOf("=") + 1, content.Length - content.IndexOf("=") - 1).Trim();strInterLeave = interleve;System.Console.WriteLine(interleve);blnSuccess = true;break;}}}catch{//读取失败hdrfile.Close();hdrfile.Dispose();return false;}hdrfile.Close();hdrfile.Dispose();//关闭文件流,释放内存return blnSuccess;}/// <summary>/// bip转换为bsq/// </summary>/// <param name="strInputFile"></param>源文件名称与路径/// <param name="strOutputFile"></param>目标文件名称与路径/// <param name="pixComCounts"></param>像素行数/// <param name="pixLineCounts"></param>像素列数/// <param name="bands"></param>波段数/// <param name="type"></param>基本数据类型代码/// <returns></returns>是否转换成功public static bool BipToBsq(string strInputFile, string strOutputFile, int pixComCounts, int pixLineCounts, int bands, int type){bool blnSuccess = true;FileStream inputF = new FileStream(strInputFile, FileMode.Open);FileStream outputF = new FileStream(strOutputFile, FileMode.CreateNew);int totalsize = pixComCounts * pixLineCounts * bands * type;//计算输入文件总字节数if (totalsize != inputF.Length){return false;}byte[] bts = new byte[totalsize];int num = 0, bt;while ((bt = inputF.ReadByte()) > -1){//读取出全部字节数据,存储在数组中bts[num] = (byte)bt;num++;}for (int bandnum = 0; bandnum < bands; bandnum++){//读取波段写入for (int row = 0; row < pixLineCounts; row++){//按行写入for (int columnum = 0; columnum < pixComCounts; columnum++){ //读取列写入int startpos = pixComCounts * type * bands * row + columnum * type * bands + bandnum * type;for (int typenum = 0; typenum < type; typenum++){//读取数据基本单元类型输入数据outputF.WriteByte(bts[startpos + typenum]);}}}}outputF.Flush();//保存缓存文件outputF.Close();//关闭撤销变量文件outputF.Dispose();inputF.Close();inputF.Dispose();return blnSuccess;}/// <summary>/// bsq转换为bil/// </summary>/// <param name="strInputFile"></param>源文件名称与路径/// <param name="strOutputFile"></param>目标文件名称与路径/// <param name="pixComCounts"></param>像素行数/// <param name="pixLineCounts"></param>像素列数/// <param name="bands"></param>波段数/// <param name="type"></param>基本数据类型代码/// <returns></returns>是否转换成功public static bool BsqToBil(string strInputFile, string strOutputFile, int pixComCounts, int pixLineCounts, int bands, int type){bool blnSuccess = true;FileStream inputF = new FileStream(strInputFile, FileMode.Open);FileStream outputF = new FileStream(strOutputFile, FileMode.CreateNew);int totalsize = pixComCounts * pixLineCounts * bands * type;//计算输入文件总字节数if (totalsize != inputF.Length){return false;}byte[] bts = new byte[totalsize];int num = 0, bt;while ((bt = inputF.ReadByte()) > -1){//读取出全部字节数据,存储在数组中bts[num] = (byte)bt;num++;}for (int row = 0; row < pixLineCounts; row++){//按行写入数据for (int bandnum = 0; bandnum < bands; bandnum++){//按波段写入数据int startpos = pixComCounts * pixLineCounts * type * bandnum + row * pixComCounts * type;for (int columnum = 0; columnum < pixComCounts; columnum++){ //写入没一列数据for (int typenum = 0; typenum < type; typenum++){//按数据基本单元类型输入数据outputF.WriteByte(bts[startpos + columnum * type + typenum]);}}}}outputF.Flush();//保存缓存文件outputF.Close();//关闭撤销变量文件outputF.Dispose();inputF.Close();inputF.Dispose();return blnSuccess;}/// <summary>/// bil转换为bip/// </summary>/// <param name="strInputFile"></param>源文件名称与路径/// <param name="strOutputFile"></param>目标文件名称与路径/// <param name="pixComCounts"></param>像素行数/// <param name="pixLineCounts"></param>像素列数/// <param name="bands"></param>波段数/// <param name="type"></param>基本数据类型代码/// <returns></returns>是否转换成功public static bool BilToBip(string strInputFile, string strOutputFile, int pixComCounts, int pixLineCounts, int bands, int type){bool blnSuccess = true;FileStream inputF = new FileStream(strInputFile, FileMode.Open);FileStream outputF = new FileStream(strOutputFile, FileMode.CreateNew);int totalsize = pixComCounts * pixLineCounts * bands * type;//计算输入文件总字节数if (totalsize != inputF.Length){return false;}byte[] bts = new byte[totalsize];int num = 0, bt;bt = inputF.ReadByte();while (bt > -1){//读取出全部字节数据,存储在数组中bts[num] = (byte)bt;bt = inputF.ReadByte();num++;}for (int row = 0; row < pixLineCounts; row++){//按行写入for (int columnum = 0; columnum < pixComCounts; columnum++){ //读取列写入for (int bandnum = 0; bandnum < bands; bandnum++){//读取波段写入int startpos = pixComCounts * type * row * bands + pixComCounts * type * bandnum + type * columnum;//获取基准位置for (int typenum = 0; typenum < type; typenum++){//读取数据基本单元类型输入数据outputF.WriteByte(bts[startpos + typenum]);}}}}outputF.Flush();//保存缓存文件outputF.Close();//关闭撤销变量文件outputF.Dispose();inputF.Close();inputF.Dispose();return blnSuccess;}

关于遥感bil bsq bip三种格式互换相关推荐

  1. c++实现PCA(BIL, BSQ, BIP三种格式数据)

    pca主成份分析:将协方差变形: cov(x,y) = 1/(n-1)*( 求和xi*yi - n*x*y) BSQ格式: //将协方差变形: cov(x,y) = 1/(n-1)*( 求和xi*yi ...

  2. 关于遥感中影像数据的组织方法BIL/BSQ/BIP

    BIL/BSQ/BIP是我们常见的三种遥感影像的数据组织格式,是原始二进制数据文件,有对应的ASCII文本头文件(.hdr)来指示行.列.位深度等,此外还可能伴随可选的统计文件stx.分辨率文件blw ...

  3. mysql binlog_format 三种格式 详解 ---摘抄

    MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点. MySQL ...

  4. ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式)

    ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式) 目录 输出结果 设计思路 核心代码 输出 ...

  5. 安卓版kindle电子书位置_安卓手机APP如何打开三种格式的电子书文件

    首先登陆网站,在电脑端下载三种格式的<手把手教你玩脱口秀>,分别是epub ./mobi./pdf.格式. 一.epub.格式 1.在电脑端下载好后,直接把文件(电子书)发到手机上,在手机 ...

  6. Ajax响应处理数据的三种格式(主要使用gson包)

    Ajax响应处理数据的三种格式 A.普通文本(重点)后台:sevletresp.getWriter().print("Ajax响应成功");前台:jspvar text= xhr. ...

  7. Python数据处理(一):处理 JSON、XML、CSV 三种格式数据

    Python 数据处理系列博客来啦! 本系列将以<Python数据处理>这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理.书中有些地方讲的不太详细,我会查阅其他 ...

  8. Matlab用三种格式来表示日期与时间

    Matlab用三种格式来表示日期与时间 转自http://www.360doc.com/content/14/1206/16/16363452_430844776.shtml (1)双精度型日期数字: ...

  9. SIM卡中UCS2编码的三种格式(80,81,82)分析

    为什么手机短信长度限制70个中文.160个英文??? (2012-04-15 00:15:26) 转载▼ 标签: 杂谈 分类:Android 手机短信的长度是由编码决定的,根据国际标准,每条短信最多发 ...

最新文章

  1. 基于图神经网络的聚类研究与应用
  2. Android --- 知识点记录
  3. 应急响应-Yara规则木马检测
  4. linux xampp nginx,nginx配置教程_如何配置nginx_nginx安装与配置详解
  5. Curator实现分布式锁的基本原理-getTheLock
  6. 软件开发计划_敏捷软件开发实践:估算与计划读书笔记123第21章 关于计划的沟通...
  7. Windows中查找文件被何进程使用
  8. AOP的实现方式比较,cglib vs jdk
  9. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_4 HiddentHttpMethodFilter过滤器
  10. Java设计模式系列之迭代器模式
  11. matlab中的bwdist(Distance Transform of a Binary Image)
  12. 牛人面对面|专访Testin(云测)总裁徐琨
  13. 中英文金额大写转换器
  14. DNS错误不能上网怎么办?电脑dns错误修复方法?
  15. 2021-2025年中国军用浮桥行业市场供需与战略研究报告
  16. ECharts地图使用
  17. 16春季计算机应用基础,西交16春季《计算机应用基础》在线作业及答案
  18. 【Android】SD卡的安全存储问题
  19. 计算机专业教师资格证考什么科目,教师资格证考试科目
  20. w7运行里的计算机怎么设置,W7系统怎么设置开机启动项

热门文章

  1. swi 指令能用在C语言吗,ARM的SWI异常中断处理程序设计
  2. HTML 定位(position)
  3. 既生Mahout,何生Spark MLlib ?
  4. 量子计算机如何预知未来,刘慈欣《镜子》中量子计算机成真?科学家计划用数学预测宇宙未来...
  5. 学习Vue3 第三十四章(Vue3集成Tailwind CSS)
  6. Navicat For MySQL简体中文版 V8.2.20注册码
  7. 19 个强大、有趣、又好玩的 Linux 命令!
  8. 微信小程序注册使用教程
  9. WEB 视频开发-强大的MSE
  10. SkeyeVSS综合安防视频云服务H5无插件直播点播实现HEVC H265 300毫秒以内低延迟播放