平台:vsC# 2008 ,net3.5
[主要实现的功能]:浏览双狐图形数据的结构,导出点(X Y Text)、线(X Y ID)、等值线数据(X Y Z)。数据格式可以导入IES PetroMod,Trinity等软件中。Zmap边界文件,散点文件(包括带值),Geomap等值线文件自动生成双狐文件(2007版格式)
[程序实现说明]:
1.双狐2007图形数据结构说明 [简化]
//版本说明
Version[版本号]
//符号定义
New[符号定义]
…
EndNew
//图层信息
Class [类名,图层信息]
例如:
Class Layer
Layer M 0
Layer ViewAndEdit
Layer M 构造信息\确定等值线\
Layer ViewAndEdit
Layer M 构造信息\断层
Layer ViewAndEdit
Layer M 构造信息\地层尖灭线
Layer ViewAndEdit
//曲线共性修饰
HowToViewCurve(曲线共性修饰开始)
……
[修饰参数]
....
Layer M 层名 //起作用的图层
Layer HowToViewCurve(曲线共性修饰结束)
//点类共性修饰
HowToViewPoint(点类共性修饰开始)
……
[修饰参数]
……
Layer M 层名 //起作用的图层
Layer HowToViewPoint (点类共性修饰结束)
//曲线定义
Layer M 层名 //曲线所在的图层
Pline[.线名]
<W [宽度]> (曲线的原始属性:宽度)
[X1],[X1]<,Z1,L1>(x,y,z为坐标,L为桩号)
[X2],[Y2]<,Z2,L2>
……
[Xn],[Yn]<,Zn,Ln>
<线型>(曲线的原始属性:充填、闭合等)
[空行] (表示一条线的结束)
Layer M 层名’ //上一类曲线结束标志
//空间点定义
Layer M 层名
3dPoint [X],[Y],[Z] [角度] [点名]
...
Layer M 层名’ //上一类空间点结束标志
2.数据分类读取
根据双狐2007数据格式的说明,要读取双狐图形文件的树形结构,只需要读取位于文件顶部的Class声明及Layer声明。能过C#的文件流(StreamWriter)来读取双狐图形数据时,我们需要跳过 New-EndNew(符号定义区)之间的数据区,如果碰到Class即是图层类定义,再往下就是Layer,即各个图层类下面的图层数据。
如:
EndNew //符号定义结束~
//空行,下面是图层类信息
Class 图层类
例如:
Class Layer
Layer M 0 //各个图层名
Layer ViewAndEdit
Layer M 构造信息\确定等值线\
Layer ViewAndEdit
Layer M 构造信息\断层
Layer ViewAndEdit
Layer M 构造信息\地层尖灭线
Layer ViewAndEdit
[C# 代码示例]
if (line == "New") //跳过符号定义区
{
while (line.Contains("EndNew") == false)
{
line = sr.ReadLine();
if (line.Contains("EndNew") == true)
break;
}
}
if (line == "Class") //开始读取图形数据树形结构,并加载到TreeView的节点中
{
while (line != "")
{
classStr[classIdx] = lineStr[1];
LayerTree.Nodes.Add(lineStr[1]);
classIdx = classIdx + 1;
line = sr.ReadLine();
lineStr = line.Split(new char[] { ' ' });
line = lineStr[0];
}
line = sr.ReadLine();
classNum = classIdx;
.....
.....
}
3.geomap 等值线数据格式说明及读取(正则表达式的用法)
4.Zmap ASCII文本格式的读取(非Grid)
5.C#基础使用
待续....
回复Comments
作者:
{commentrecontent}