APP下载

燃气管网矢量化绘图插件技术的研究与实现

2014-07-13唐蜜戴蕾岳元旺

电脑知识与技术 2014年5期
关键词:矢量化燃气管插件

唐蜜 戴蕾 岳元旺

摘要:燃气管网矢量化绘图插件技术研究与实现,提出了一套基于AutoCAD软件进行燃气管网矢量化工艺中图形绘制的插件技术开发方法,指出了一个全面采用统一软件过程实施软件项目的研究方向,采用RUP的规范进行项目管理、运用UML进行业务和系统的建模与设计,并用面向对象的思想进行编码和设计。通过多个实际项目的应用表明:采用本文提供的插件开发技术和设计思路,研发的矢量化绘图软件系统,能很好地满足燃气领域对管网GIS的数据管理需求、提高项目实施效率、降低项目实施成本。

关键词:GIS;矢量化;插件技术;燃气管网;统一软件过程;UML;面向对象;时序图

中图分类号:TP399 文献标识码:A 文章编号:1009-3044(2014)05-1108-07

Gas Pipe Network GIS Vector Drawing Based on AutoCAD Plug-in Technology Research

TANG Mi, DAI Lei,YUE Yuan-wang

(School of Science Eng. AND Info.,South West Petroleum Univ.,Chengdu 610065,China)

Abstract: Research and Implementation of the gas pipe network GIS vector drawing based on AutoCAD plug-in technology, proposed a new set of plug-ins based on AutoCAD software vectorization process gas network graphing technology development, pointed out that a comprehensive implementation of the unified software processthe research direction of the software project, the RUP norms for project management, the use of UML for business modeling and system design, detailed design and coding using object-oriented technology. This article provides a plug-in development technology and design ideas, vector drawing software R & D system, to meet the data management needs of the gas field pipe network GIS, shorten the project cycle vectorization show that the application of a number of practical projects:The implementation of the project, reduce costs.

Key words: GIS; vectorization; plug-in technology; gas pipeline network; unified Process; the UML; object-oriented; timing diagram

矢量化,是将纸质设计图转化成电子格式、并对其处理的过程,其在计算机显示出的图形为矢量图。矢量图为一系列由点、线、多边形和弧线等组成的图形,可通过计算机指令来描述和记录。此外,矢量图具有存储量小,易于编辑,易进行放大或压缩处理等优点,因此常用于计算机的辅助设计中。常见的矢量图处理软件有CoreDRAW、AutoCAD、FreeHand等。

燃气管网矢量化,是将燃气管网的相关地图、管线、管件等资料,经过计算机图形或者图像系统光—电转换,量化为点阵数字图像,再经图像处理和曲线矢量化,生成可显示的地理信息系统地图数据文件,并对文件可以进行计算、修改、漫游、标注、管理和打印的处理功能。

初期设计的燃气管网常用的开发方案有三种:一、在大型的GIS平台上进行开发,其优点是地图信息的显示和地理信息的共享等处理非常方便,但由于对城市的地理信息系统依赖较高,没法独立实施;二、 基于底层开发,缺点是开发成本高,工作量大,且开发出来的性能也不及GIS系统;三、采用AutoCAD绘图软件进行开发,虽然AutoCAD只提供的图形数据管理等有限功能,但可以在其基础上开发一套合適的软件,这不仅可以减少开发成本,而且对城市的地理信息系统没有依赖性,可离网独立实施。在对三种进行对比分析后,采用第三种开发方式。

1 总体设计方案简述

燃气管网矢量化整个实施过程包含管网绘制、图形处理、数据转换、数据检验等环节,上一环节的结果是下一个的数据来源,在每完成一次管网的绘制和图形处理环节,都将按照已制定的业务规则和质量标准,对该阶段成果进行检验,达到数据质量管理标准方能进入下一个处理环节,若经数据检验未达标,则返还数据进行修正,直至合格,同时记录返还次数,着重标出返还次数多的数据,在统计查询模块中有按返回次数排序功能,以便于提示。

本文中的燃气管网GIS矢量化绘图软件, 其主要功能为实现管件、管线、阀门、调压设施等管网设施的数据管理和图形绘制,存储方式为图形或关系数据库。

由于专业的大型GIS系统和单一的矢量化绘图软件的开发成本高、周期长并且常无法离网实施,所以在AutoCAD矢量化绘图软件上,开发同时满足燃气管网矢量化数据存储需求和能提高工程实施的实施效率和降低成本效用的全新的矢量化绘图插件。具体做法如下,采用两套数据库系统进行图-数关联存储信息的保存:用文件数据库SQLite存储管网设施业务数据,用AutoCAD矢量化文件中的dwg存储图形数据,另在图形数据库中用图形元素对应的属性数据库表的主键来对应图-数之间的关系,将矢量化信息与业务属性联系起来。

燃气管网GIS矢量化绘图插件,在概述中提到的开发方法的基础上,该文采用了COM(组件对象模型)和数据库技术对系统进行了开发,采用面向对象技术进行软件系统的分析、设计,采纳统一软件过程(RUP)的规范来组织软件项目的开发实施,运用UML进行软件系统的需求分析、业务建模、逻辑设计。编码的语言为Microsoft 的C#语言,CAD开发驱动和图形GIS算法基础库为Autodesk开发包,并基于AtuoCAD2010版本进行设计和开发。

2 系统框架设计

2.1 核心类设计

遵照系统架构设计的分层设计要求,结合面向对象系统设计的指导原则,燃气管网GIS矢量化绘图插件的内部核心对象分交互界面层、应用算法层、实体对象层和驱动层共4个层次进行类设计。

交互界面层,按照用户操作和外部交互的要求抽象出CommandEntry、frmProject、frmPipe、frmPipeRiser、frmPipeFitting、frmBooster、frmGauge、frmValve、frmStation等主要交互类,实现AutoCAD命令解析与响应,提供工程、管线、管件、立管、阀门、计量设备、调压设施等管网设施的属性操作界面。

应用算法层,按照燃气管网设施图形处理、属性读写应用算法的要求抽象出ProjectManager、FileManager、LayerManager、LayerConfig、SpatialOperator、AttributeRule、GISRule等核心算法类,实现对文件管理、工程管理、CAD图层配置与管理、属性规则检查、图形规则检查等核心算法的封装。

实体对象层,按照燃气管网设施图形、属性信息的存储要求抽象出DBProject、DBPipe、DBPipeFit、DBBooster、DBValve、DBGauge等主要属性类,以及GISPoint、GISLine、GISPolyLine、GeometryMediator等主要图形类,实现对图形、属性的存取、数据校验等业务实体数据及功能的封装。

驱动层,按照插件与外部的软件系统、驱动程序、数据库和文件的交互要求抽象出DBSQLite、ImgFile、LogFile、Geometry、CADDriver等驱动接口类,实现对SQLite数据库、图像文件、工程管理日志、GIS基础算法库、AutoCAD软件的接口封装。

燃气管网GIS矢量化绘图插件的类设计总图如图1所示。

2.2 体系架构设计

燃气管网GIS矢量化绘图插件,其分层架构设计在逻辑上划分为交互界面层、应用算法层、实体对象层和驱动层4个层次。交互界面层,是用户对燃气管网设施进行绘制操作的界面及所有AutoCAD命令解析和功能接口。应用算法层封装所有的燃气点、线、面设施的图形和属性的关联存储和加载显示算法,不仅可接收来自交互界面层的操作请求,还可组合调用实体对象层中各实体类的public方法,构造出一个个复杂的应用算法。实体对象层,分为图形对象和属性对象,包含有燃气管网中各个具体的点、线、面设施,属性对象封装管网设施的业务信息,对应SQLite属性数据库,包括工程、管件、管线、立管、阀门、调压设施、计量设备等;图形对象封装管网设施的GIS信息,对应AutoCAD的dwg文件,包括点、线、面等图形元素。驱动层包括对SQLite数据库操作访问的封装、外部文件、GIS基础算法库接口的封装和AutoCAD二次开发接口的封装,为应用算法层、实体对象层提供数据库操作、图形计算、CAD命令响应和操作控制的接口,完成矢量化绘图插件与所有外部的软件系统、驱动程序、数据库和文件等交互的统一管理。

燃气管网GIS矢量化绘图插件的体系架构设计如图2所示。

图2 燃气管网GIS矢量化绘图插件的体系架构

3 系统交互设计

燃气管网GIS矢量化绘图插件的主要业务流程包括加载矢量化工程,绘制管件、管线、立管、阀门、调压设施、计量设备,以及检查管网设施属性、工艺关系、几何图形等。根据统一软件过程的面向对象设计思路,采用细化业务流程中各业务对象之间的交互来设计对象的方法和数据,由此完成类的详细设计。列举其中典型的加载矢量化工程、打断管线、管网设施属性检查、管网拓扑关系检查4个业务流程的交互设计。

3.1 加载矢量化工程交互设计

加载矢量化工程的过程为,用户在AutoCAD软件的命令行输入工程加载命令,插件提示用户选择将要加载的工程文件,用户选择文件后再点击确定按钮;矢量化插件打开用户指定的工程文件,首先加载属性数据库SQLite文件,再读取对应的dwg文件到内存中,遍历dwg文件中的矢量化GIS元素,调用CAD驱动程序和GIS基础算法库,依次装载图形元素和属性元素;最后根据矢量化工程的坐标,在相应的坐标区域显示加载的工程。

加载矢量化工程的业务流程涉及CommandEntry、FileManager、DBProject、LiteDBOperation、LayerManager、CADDriver等对象。

加載矢量化工程的交互过程设计如图3所示。

图3 加载矢量化工程的交互过程

3.2 打断管线交互设计

对打断管线的处理为,用户在AutoCAD软件操作界面中,点击工具栏上的“打断管线”按钮,然后选择需被打断的管线;插件将复制所选管线的图形元素和属性元素,从点设施所在坐标重新计算打断后两段管线的长度,并分别设置两段管线的长度;管道打断操作结束后,插件将操作区域自动平移到管道被打断处,并显示操作结果。

打断管线的业务流程涉及CommandEntry、GeometryMediator、DBDevice、LiteDBOperation、CADDriver等对象。

打断管线的交互过程如图4所示。

图4 打断管线的交互过程

3.3 管网设施属性检查交互设计

管网设施属性检查的处理为,通过用户对AutoCAD软件操作界面中的工具栏上的“属性检查”按钮的点击,使插件自动遍历当前矢量化工程的所有图形元素,并加载对应的附属属性,对管件、立管、管线、阀门、计量设备、调压设施等逐一进行属性数据的合法性、一致性和有效性检查;检查过程中自动记录错误信息;属性检查结束时,插件提示检查结果,并在矢量化图上标识出检查到的错误数据,提示用户进行错误数据修改。

管网设施属性检查的业务流程涉及LiteDBOperation、CommandEntry、LayerManager、GeometryMediator、AttributeRule等对象。

管网设施属性检查的交互过程如图5所示。

图5 管网设施属性检查的交互过程

3.4 管网拓扑关系检查交互设计

管网拓扑关系检查的处理过程为,用户在AutoCAD软件操作界面中,点击工具栏上的“拓扑关系检查”按钮,插件自动遍历当前矢量化工程的所有图形元素,对点、线、面等图形元素逐一进行燃气管网拓扑工艺关系检查,包括孤立点、孤立线、点重叠、线重叠、面重叠、线自相交、线同平面相交等情况;检查过程中自动记录错误信息;管网拓扑关系检查结束时,插件提示检查结果,并在矢量化图上标识出检查到的错误数据,提示用户进行错误数据修改。

管网拓扑关系检查的业务流程涉及CommandEntry、LayerManager、GISRule、GeometryMediator、Geometry等对象。

管网拓扑关系检查检查的交互过程设计如图6所示。

4 系统核心算法源码

燃气管网GIS矢量化绘图插件,涉及AutoCAD接口技术、数据库技术、图形处理算法、业务规则引擎等大量复杂的核心技术。列举其中几处典型的代码片段。

4.1 删除AutoCAD中指定图层

public static void EreaseLayer(string layername)

{

Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;

DocumentLock locker = doc.LockDocument();

using (Transaction tm = doc.Database.TransactionManager.StartTransaction())

{

ObjectId idModel = SymbolUtilityServices.GetBlockModelSpaceId(doc.Database);

BlockTableRecord btr=tm.GetObject(idModel, OpenMode.ForWrite) as BlockTableRecord;

foreach (ObjectId oid in btr)

{

DBObject ob=tm.GetObject(oid, OpenMode.ForWrite);

if (ob == null) continue;

Entity ent = ob as Entity;

if (ent == null) continue;

if (ent.Layer.Equals(layername))

{

ent.Erase();

}}

tm.Commit();

}

locker.Dispose();

}

4.2 判断点是否在线上

public static bool IsPointInLine(Point3d pos, Line line)

{

Point3d spos = line.StartPoint;

Point3d epos = line.EndPoint;

Vector3d v1 = substract(pos, spos);

Vector3d v2 = substract(epos, spos);

Vector3d d = v1.CrossProduct(v2);

Vector3d zeroV = new Vector3d(0, 0, 0);

if (vectorEqual(d,zeroV))

{

double minx = Math.Min(spos.X, epos.X);

double maxx = Math.Max(spos.X, epos.X);

double miny = Math.Min(spos.Y, epos.Y);

double maxy = Math.Max(spos.Y, epos.Y);

if (greatandeqthan(pos.X,minx)&&littleandeqthan(pos.X,maxx)&&greatandeqthan(pos.Y,miny)&&littleandeqthan(pos.Y,maxy))

return true;

}

return false;

}

5 结束语

相对于其他的燃气行业管网GIS矢量化工程,该文阐述了一种矢量化绘图插件开发技术,其中采用面向对象的思想进行架构设计、详细设计和编码,开发出了运行效率不错、成本适中、操作便捷的燃气管网矢量化绘图插件。该文阐述的技术方案不仅对燃气管网矢量化软件系统的开发与实施一定的借鉴作用,对GIS领域其他应用软件的分析与设计都有部分参考价值。

参考文献:

[1] 雅各布森,布谢,朗博.统一软件开发过程[M].周伯生,等,译.北京:机械工业出版社,2002.

[2] 克鲁森.Rational 统一过程实践者指南——软件工程系列[M].徐正生,陈逸,邓启威,译.北京:中国电力出版社,2004.

[3] 福克斯.软件工程设计导论:过程、原理与模式(UML2.0版)[M].韩毅,罗颖,译.北京:清华大学出版社,2007.

[4] 布謝.面向对象分析与设计[M].2版.冯博琴,等,译.北京:机械工业出版社,2003.

[5] Alfred V Aho, Monica S Lam.编译原理[M].2版.北京:机械工业出版社,2012.

[6] 汤国安,赵牡丹.地理信息系统[M].北京:科学出版社,2000.

[7] 苗小莉.城市空间数据生产质量控制[A].数字城市的理论与实践[C].世界图书出版公司,2001.

[8] 内格尔,埃夫琴.C#高级编程[M].7版.李铭,译.北京:清华大学出版社,2010.

[9] 岳元旺.城市燃气管网矢量化技术方案研究[J].制造业自动化,2013,35(3).

[10] 田丹丹.基于AutoCAD的燃气管网GIS矢量化拼接插件技术研究与实现[J].制造业自动化,2013, 35(7).

猜你喜欢

矢量化燃气管插件
燃气管道泄漏主动声学探测方法
2.5 MPa及以上城镇燃气管道与输气管道区别
自编插件完善App Inventor与乐高机器人通信
基于jQUerY的自定义插件开发
PE80燃气管道的应力松弛模型与实验验证
浅谈燃气管道的焊接技术
交互式矢量化技术在水文站网分布图编绘中的应用
MapWindowGIS插件机制及应用
基于VP Studio和CASS的栅格地形图矢量化方法
基于Revit MEP的插件制作探讨