Surfer Grid 明码文件(ASCII)格式解析

最近有一批数据需要处理,格式为Surfer Grid明码文件(*.grd),用记事本打开后发现文件格式比较简单,无论用程序去读还是经过简单处理后导入到Excel中、GIS软件中都比较方便,在这里就这类文件做一下格式说明。

Surfer Grid文件是存储(X,Y,Z)网格化数据的理想文件格式之一,明码GRD文件用记事本打开内容如下:

DSAA
11 20
0 1
0 1.9
-1.000 0.989
0.95 0.72 0.92 0.70 -0.55 0.99 0.38 -0.54 -0.96 -0.96 -0.76
0.72 0.75 -0.91 -0.29 -0.72 0.19 0.96 0.12 -0.68 -0.99 -0.94
0.92 -0.91 0.91 0.32 -0.54 -0.23 0.99 0.49 -0.39 -0.89 -1.00
0.70 -0.29 0.32 0.69 -0.98 0.01 0.99 0.58 -0.25 -0.81 -1.00
-0.55 -0.72 -0.54 -0.98 -0.54 0.60 0.99 0.47 -0.28 -0.80 -0.99
0.99 0.19 -0.23 0.01 0.60 0.99 0.80 0.20 -0.43 -0.84 -1.00
0.38 0.96 0.99 0.99 0.99 0.80 0.37 -0.16 -0.63 -0.91 -1.00
-0.54 0.12 0.49 0.58 0.47 0.20 -0.16 -0.54 -0.83 -0.98 -0.99
-0.96 -0.68 -0.39 -0.25 -0.28 -0.43 -0.63 -0.83 -0.96 -1.00 -0.95
-0.96 -0.99 -0.89 -0.81 -0.80 -0.84 -0.91 -0.98 -1.00 -0.96 -0.87
-0.76 -0.94 -1.00 -1.00 -0.99 -1.00 -1.00 -0.99 -0.95 -0.87 -0.76
-0.48 -0.71 -0.85 -0.92 -0.95 -0.95 -0.93 -0.89 -0.82 -0.73 -0.61
-0.19 -0.43 -0.60 -0.70 -0.76 -0.77 -0.76 -0.71 -0.65 -0.56 -0.45
0.06 -0.15 -0.32 -0.44 -0.51 -0.54 -0.54 -0.50 -0.45 -0.37 -0.27
0.28 0.10 -0.06 -0.17 -0.25 -0.29 -0.30 -0.28 -0.24 -0.18 -0.10
0.46 0.30 0.17 0.06 -0.01 -0.06 -0.08 -0.07 -0.04 0.00 0.06
0.60 0.48 0.36 0.27 0.20 0.15 0.13 0.12 0.14 0.17 0.22
0.71 0.61 0.52 0.44 0.38 0.33 0.31 0.30 0.30 0.32 0.36

用通用的形式表示如下:

DSAA
Ncolumns Mrows
Xmin Xmax
Ymin Ymax
Zmin Zmax
Row 1: Z11 Z12 Z13 … Z1n
Row 2: Z21 Z22 Z23 … Z2n
Row 3: Z31 Z32 Z33 … Z3n

Row M: ZM1 ZM2 ZM3 … ZMn

第一行文件头,就是固定的四个字母DSAA

第二行描述了数据的总列数和总行数

第三行描述了X值的最小值和最大值

第四行描述了Y值的最小值和最大值

第五行描述了Z值的最小值和最大值

再往下的所有行构成了数据区域,数据区域列出了所有的Z值,在Surfer软件读取过程中,数据区域的第一行是Y值最小的那一行数据的Z值,举个栗子,如果你的XYZ值分别代表若干点的经度(X)、纬度(Y)和高程(Z),则数据区域的第一行就是纬度最小的那些点的高程值,同理,每一行的最左侧的值表示X值最小的那些点的Z值。

需要特别注意的是,在Surfer软件中,如果网格数据中的某个点没有Z值,不能设置为0(0也是值),而是需要设置为1.7014100E+038。

熟悉了以上规则,就可以自己编写程序实现Surfer Grid文件的批量处理啦,或者如果你手中有一批XYZ数据需要处理或展示,就可以按照如上结构整理成Surfer Grid文件格式,然后在Surfer软件中方便的处理了。

决赛之后

在卡迪夫的千年球场,我所追随的球队又一次倒在了决赛赛场,这是看球以来第三次输掉欧冠决赛,虽不再像前两次那么痛彻心扉,可还是心有不甘,心疼场上那些老将,眼看梦寐以求的奖杯就在眼前,那么近,却又那么远,一个赛季的努力付诸东流。

其实赛季初并没有人看好这支球队能够走到决赛,核心队员的流失,新球员还未完全融入球队体系,阿囧二期第一年能够守住联赛冠军就不错了,可球队还是实现了国内赛场的双冠王,欧冠打进了决赛,已经超出了赛季初的期待,不是吗?外人很难理解我们对于欧冠奖杯的渴望,不仅仅是能够满足一下小小的虚荣心,更是弥补队内功勋将士们职业生涯的缺憾,从03年内德维德的眼泪,到07年乙级联赛的炼狱,再到15年重进决赛的崛起,十几年来那一拨人始终在努力,看着他们从小将变成老将,我也从孩子成长到而立之年,自己的青春,已经烙印上了他们的身影。十几年对于冠军杯的执念,成了青春年代的一个遗憾。

有些东西,并不是你渴望就能得到,遗憾,也是人生的一部分。作为尤文球迷,我真正感到骄傲的,不是陪你经过了那些荣耀,而是陪你走过了那些黯淡无光的日子。FORZA JUVE!

ENVI终于开放FLAASH二次开发接口

ENVI中的FLAASH模块(Fast Line-of-sight Atmospheric Analysis of Hypercubes,大气校正)的开发者本来是Spectral Sciences和Air Force Research Labs,被ITT公司收购后由ITTVIS整合到ENVI软件中并做了可视化界面,因此,虽然ENVI中大多数模块均已提供了二次开发接口,但是FLAASH模块的二次开发接口却迟迟没有放开(出于商业考虑?),ITT被ESRI收购后更是没了下文。终于,在广大用户们不断地敦促下(尤其是我们的于博士),官方终于在前天公开发布了二次开发接口的调用方式(查看原文),小伙伴们再也不用为批量操作时频繁地重输参数所头疼了。

写在年末

匆忙又一年,明天就要放假回家了,日子过得也太快了。前两周写本年度工作总结的时候,拿出前一年的工作总结对比,像刚写完似的,每一行字都还很熟悉。只当是记忆力和时间没有同步。

看完病就好了

从春节后到现在往医院跑了不下十趟了,先是有段时间喉咙难受,只要有吞咽的动作就会疼得厉害,哪怕是喝水也这样,没办法,做胃镜看一下里边是啥情况,结果出来后也没发现什么,开了点抑制胃酸的药,药还没吃不适感就消失了,不知道什么原因引起的吞咽困难;又有一次连续四五天早晨起来头晕,去医院检查好几次,CT、耳、前庭功能都做了检查,结果出来后也没发现什么,眩晕感在检查后一两天就消失了,最终也不知道是什么原因。

干打雷,不下雨

老家那边下暴雨了,看朋友圈里都是各种被淹的照片,一片狼藉,身在帝都的我深表同情,北京已经连续高温好多天了,白天气温30多度不在话下,空气闷热潮湿,像极了武汉那令人难以忍受的桑拿天,天气预报说本周有雨,却一直是干打雷不下雨,反反复复烤验着人的忍耐极限。

不会整理房间

今天又把卧室重新布置了一遍,记不清这是半年以来第几次大规模布置卧室了,总是觉得桌椅柜子怎么摆放都不顺眼,今天整理完了,还是不顺眼,囧RZ。。。

匆匆2014

稀里哗啦的一年,过得太快,想不起来有哪些闪光点,为自己感到羞愧 :cry:

工作按部就班,没有明显的突破

技术学习进度太慢。。太慢。。。

花销逐渐合理,存了一笔钱,明年研究理财

羽毛球水平有所提高,但还得继续努力

和同事组了乐队,架子鼓成了又一个爱好

离开学校后工作的完整一年,给自己打70分,表现平平,希望第二年能够更有收获,日记还是要写的,哪怕断断续续的也是有意义的,免得下一个年底回想时又是一片空白。明年在保持兴趣爱好的基础上,工作和学习要有所突破,年内要通过两个考试,职称英语、系统分析师,再参加一个数据库培训,必须要强制自己学习,不然和别人的差距就越拉越大了。

昨天买了台电视放在卧室里,接上有线,瞬间有了家的感觉,遥控器在手,天下我有。。。

就这样给2014年的博客画个句号吧,有更重要的事情要去做啦~元旦快乐~

Oracle透明网关配置过程中遇到的两个问题

Oracle透明网关(Transparent Gateway)能够方便地解决异构数据库系统之间的数据共享问题,使得基于Oracle环境的应用系统/程序在访问非Oracle数据库中的数据时不需要另外再做代码开发工作,大大节省系统开销,提高数据使用的灵活性(功能示意图如下)。最近在进行透明网关的安装和配置过程中遇到了两个问题,网上搜不到解决方案,摸索着解决后写此文总结一下,希望能对遇到同样问题的童鞋有所帮助。