Golden Software系列软件中Surfer软件是物探中经常用到的绘图软件,其绘图功能强大、操作简单等优点深受物探科技人员的喜爱。Surfer软件最基础的数据格式是grd网格数据文件,其后缀为*.grd。到Surfer16版本,grd文件主要包括三种格式,即:1.GRD Surfer6 Text Grid,2.GRD Surfer6 Binary Grid,3.GRD Surfer7 Binary Grid,其中1为ASII文件格式,2和3为二进制文件格式。今天贴出的代码是基于VC,读取Surfer7 Binary文件,写出为Surfer6 Binary 文件。代码中使用了Eigen库,可查阅相关资料。

1.GRD Surfer6 Binary Grid格式说明

2.GRD Surfer7 Binary Grid格式说明

其他文件格式大家可以参考Surfer帮助文档,里面有很详细的说明。

3.下面给出控制台代码。

#include "stdafx.h"#include <afx.h>  #include <iostream>#include <fstream>#include <Eigen/Dense>using namespace std;using namespace Eigen;void GetGrdDate(CString FileName,MatrixXd& Data,double &Xmin,double &Ymin,double &Xmax,double &Ymax,double &Dx,double &Dy){int nRow,nCol;double Zmin,Zmax;ifstream  fin(FileName,ios::in | ios::binary);if(fin){fin.seekg(20, 0);int inx, iny;fin.read((char *)&nRow, 4);   //nRowfin.read((char *)&nCol, 4);   //Coldouble stemp;fin.read((char *)&Xmin, 8); //xLLfin.read((char *)&Ymin, 8); //yLLfin.read((char *)&Dx, 8); // xSizefin.read((char *)&Dy, 8); //ySizefin.read((char *)&Zmin, 8); //zMinfin.read((char *)&Zmax, 8);  //zMaxfin.read((char *)&stemp, 8);fin.read((char *)&stemp, 8);fin.read((char *)&iny, 4);fin.read((char *)&inx, 4);Xmax=Xmin+(nCol-1)*Dx;Ymax=Ymin+(nRow-1)*Dy;double *tmp = new double [nCol];Data.resize(nRow,nCol);VectorXd v(nCol);for(int i=0;i<nRow;i++){fin.read((char *)  v.data() , sizeof(double)*nCol);Data.row(i) = v;}}fin.close();}void OutGrd(CString filename,MatrixXd Data,double Xmin,double Ymin,double Xmax,double Ymax,double Dx,double Dy){short int nRow = Data.rows();short int nCol = Data.cols(); ofstream fout(filename, ios::binary | ios::out);char flag[4] = { 'D','S','B','B' };fout.write((char *)flag, 4);fout.write((char *)&nCol, 2);fout.write((char *)&nRow, 2);fout.write((char *)&Xmin, 8);fout.write((char *)&Xmax, 8);fout.write((char *)&Ymin, 8);fout.write((char *)&Ymax, 8);double z1 = Data.minCoeff();double z2 = Data.maxCoeff();fout.write((char *)&z1, 8);fout.write((char *)&z2, 8);float *v = new float[nCol];for (int i = 0; i < nRow; i++){for (int j = 0; j < nCol; j++)v[j] = Data(i,j);fout.write((char*)v, sizeof(float)*nCol);}delete []v;fout.close();}int _tmain(int argc, _TCHAR* argv[]){double Xmin, Ymin,Xmax,Ymax,Dx,Dy;int nRow,nCol;MatrixXd Data;GetGrdDate("In.grd",Data,Xmin, Ymin,Xmax,Ymax,Dx,Dy);nRow = Data.rows();nCol = Data.cols();VectorXd Row1d(nCol);MatrixXd outData(nRow,nCol);OutGrd("Out.grd",outData,Xmin, Ymin,Xmax,Ymax,Dx,Dy);return 0;}

Surfer网格文件的VC读写代码​相关推荐

  1. php如何写文件缓存,PHP代码篇(八)--php实现文件缓存的读写

    标签:mod   bool   重写   lin   function   防止   value   files   写入文件 说,近期接手的论坛项目,因为对于代码,不是特别熟悉,有个地方需要用到缓存 ...

  2. c语言生成随机坐标,C语言 文件的随机读写详解及示例代码

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  3. PPM图片格式及其C读写代码

    PPM(Portable Pixmap Format)还有两位兄长,大哥名叫「PBM」,二哥人称「PGM」,他们三兄弟各有所长,下面为你们一一介绍: PBM 是位图(bitmap),仅有黑与白,没有灰 ...

  4. python读写文件函数_Python读写文件

    转载自:http://blog.csdn.net/adupt/article/details/4435615 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用 ...

  5. Java8读文件仅需一行代码

    版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. https://blog.csdn.net/chszs/article/details/44023039 Java8读文件仅需一行代码 ...

  6. python读取数据文件-python多种读写excel等数据文件的方式(收藏篇)

    前言: python处理数据文件的途径有很多种,可以操作的文件类型主要包括文本文件(csv.txt.json等).excel文件.数据库文件.api等其他数据文件.下面小编整理下python到底有哪些 ...

  7. python代码大全表解释-python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...

  8. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )

    文章目录 一.追加键值对数据 二.更新键值对数据 三.完整代码示例 一.追加键值对数据 在上一篇博客 [C 语言]文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取 ...

  9. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

最新文章

  1. 鲜为人知的静态、命令式编程语言——Nimrod
  2. 嵌入式学习笔记之一:嵌入式linux中混合编译入门
  3. SpringAOP静态代理和动态代理
  4. [iOS] UITextField隐藏软键盘心得(隐藏自身软键盘、点击Return自动转到下个文本框、轻触背景隐藏软键盘)...
  5. android弹窗不能手动关闭_Android app(Service)如何在后台随时随地弹出/关闭悬浮窗?...
  6. HTTPS 路径配置
  7. 关于ics lab8 performance中的rotate
  8. 消息称苹果正开发基于自研ARM芯片的游戏主机
  9. 笔记-返回到前一个页面时显示前一个页面中ajax获取的数据
  10. mybatis利用mapper代理的方法实现多条件查询
  11. 电力系统技术导则_《电力系统安全稳定导则(征求意见稿)》发布
  12. 谷歌Chrome紧急更新补丁0day漏洞
  13. vasp 模拟退火_【转】vasp的分子动力学模拟 - 第一原理 - 小木虫 - 学术 科研 互动社区...
  14. 移动测试工程师必须知道的10个开源框架
  15. linux下cat命令,关于cat >file 、cat <file <<EOF、cat <<-EOF的区别
  16. 前端json数据的解析遍历
  17. 美摄SDK Alpha产品说明书
  18. 问题解决: PythonStudy 环境搭建
  19. 莫尔斯翻译器编码 c语言,翻译莫尔斯电码
  20. 废物利用: 动手将笔记本的显示器改成多功能显示器 可用于电视盒子以及嵌入式开发

热门文章

  1. 多媒体技术(大计基复习资料)
  2. 移动运营商ipcc文件_如何在苹果官网提取IPCC文件?
  3. 计算机播放声音时进行模数转换,音频的基础知识.ppt
  4. GMV下滑归因分析-基于pest模型
  5. 我的 Docker 卡死了,怎么办?在线等
  6. C#在 Visual Studio 中快捷生成toString方法重写
  7. AutoDYN学习笔记---Part_1
  8. EtherCAT使用与解析-关于PDO映射
  9. MUI----mui.init()和mui.plusReady()
  10. 看美剧学英语之场景记忆法