双狐图形数据浏览与导出

      科研工具 2008-12-2 20:46:00

平台: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 构造信息\确定等值线\10m

        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>xyz为坐标,L为桩号)

[X2],[Y2]<,Z2,L2>

       ……

[Xn],[Yn]<,ZnLn>

<线型>(曲线的原始属性:充填、闭合等)

[空行] (表示一条线的结束)

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 构造信息\确定等值线\10m

        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#基础使用

待续....

标签集:TAGS:双狐 C#
回复Comments() 点击Count()
喜欢就顶一下

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}