双狐的图形数据是文本格式的,可以用任何文本编辑器打开。下面是双狐(2003)数据中关于等值线的一般格式。双狐本身也提供数据的导出,但是其功能比较弱,不能导出特定格式的数据,因此要在第三方软件中使用双狐图形的数据,必须经过一定的格式转换。当数据体很大时,这将是一件很繁琐的工作。
Layer M contour0.010000 //定义一个等值线的图层,名称为contour0.010000
Layer ViewAndEdit //图层权限的定义,可见+可编辑
Pline.300 //定义一条等值线,其高程值300
20619980.87,4334898.02 //构造等值线的点的坐标
20619980.87,4334898.02
20620049.13,4334919.5
20620229.5,4335003
Pline.400 //另一条等值线定义开始
x,y
从格式上看,如果要提取双狐某一类(等值)线的数据,我们可以预先寻找"Layer M 线名称",然后读取Pline后面的高程值,再将其赋到对应坐标的后面,最后输出的文件格式如下。这样就能为多数软件所识别,或可以很容易转换为其它的格式。
_____________________________
x,y,z(高程)
...,...,...
______________________________
同样的思路,我们可以分别双狐图形数据中的断层线,含油气油气面积等。
从思路上看,应该可以通过编写一个VIM的脚本文件,通过交互方式,自动提取所需要的数据,并格式化成所需要的数据格式。
2007年5月14日 更新
将下列代码保存为 *.vim 然后在Gvim 7中运行脚本即可。
适用:数据体很大,而无法用Excel完全加载处理时。
----------------------------------------------------
"用于删除双弧生成的xyz文件多余信息的删除
"使用说明:用双狐导出xyz数据后,用此文件进行清理。
g/\clayer.*$ /d
"可选代码
let ok=confirm("操作完成","&保存退出\n&取消",0,"Info")
if ok==1
w
quit
elseif ok==2
undo
endif
-----------------------------------------------------
附:双狐生成的xyz数据格式
LAYER M CONTOUR\MARK
LAYER ViewAndEdit
617524.3167,4333153.2247,-2125
617505.9559,4333150.5308,-2125
617494.5179,4333148.8893,-2125
617483.0799,4333147.3238,-2125
617471.6419,4333145.7198,-2125
617460.2039,4333143.9937,-2125
617451.781,4333142.5772,-2125
617448.7659,4333142.0489,-2125
LAYER M CONTOUR\MARK
LAYER ViewAndEdit
x1,y1
x2,y2
...
.....
.....
处理后,将layer等文字信息去掉
2007年5月17日更新
vim脚本还没完全掌握,不过看起来,似乎有点麻烦,不如用Pythont脚本:),下面是用Python写的一个用于提取双狐图形数据中的等值线数据示例。运行环境 python 2.5 +xpsp2(&Ubuntu 7.04)
1 #双狐等值线数据导出 filename: doubleFox-contour-output.py version 1.1 beta
2 #lastUpdate(修正一些错误,适用范围更宽) 2007年5月17日 by 水南
3 import re
4 #import sys
5 flag0=1
6 while flag0:
7 print u"请输入文件名(*.dfd)"
8 flag=1
9 while flag:
10 try:
11 filename=raw_input()
12 inputFile=open(filename,'r') #获取文件名
13 flag=0
14 except IOError:
15 print u"文件不存在,请重新输入!!"
16 flag=1
17 del flag
18 outputFile=open(filename+'_contour.txt','w')#输出文件名
19 del filename
20 print u"计算中,请稍候..."
21 while 1:
22 line=inputFile.readline()
23 if not line: break
24 while re.search(r'^Layer\sM\scontour',line):
25 line=inputFile.readline()
26 line=inputFile.readline()
27 while re.search(r'^Pline\.',line):
28 tmpStr=line[6:]
29 line=inputFile.readline()
30 if re.search(r'^W\s\d',line):line=inputFile.readline()
31 while not line=='\n':
32 outputFile.write(line[:-1]+','+tmpStr)
33 line=inputFile.readline()
34 if not line: break
35 line=inputFile.readline()
36 del line,tmpStr
37 inputFile.close
38 outputFile.close
39 del inputFile
40 del outputFile
41 print u"操作完成"
42 print u"继续处理下一个文件:y / n ?"
43 flag1=raw_input()
44 if flag1=='n' or flag1=='N':
45 flag0=0
46 del flag0,flag1
2007年9月13日更新(利用双狐本身的功能)
1.只显示要导出的图形
2.文件|保存选择数据|到文件
3.利用相应的文本处理软件如Vim去掉相关的文件信息
4.如果导出的等值线数据不是XYZ格式,批量编辑|曲线|名称变为Z值,再执行以上步骤即可。