| 利用ObjectARX.NET技术的地下管线成图及属性管理软件的实现及应用 |
2. 义乌市勘测设计研究院,浙江 义乌,322000
2. Yiwu Design and Research Institute of Exploration and Surveying, Yiwu 322000, China
城市地下管线是城市的生命线,它的安全运行是现代化城市发展的重要基础保障。随着国民经济的迅速发展,城市基础设施更新频率加快,城市有机更新和道路拓宽改造更是愈加迫切。从规划决策部门到施工建设部门对地下管线数据的要求越来越高,传统的纸质专题地图已经无法满足社会需求[1-4]。目前,城市地下管线系统提供的管线图大多数是以AutoCAD为存储平台,往往只能从CAD(computer aided design)图上读出管线位置、埋深、点号等常规标注信息,受AutoCAD版面限制,想进一步标注详细信息,易出现标注压盖混淆现象[5-8],且利用成本高不太适宜普通用户。若采用CAD图结合EXCEL表格提供数据,内业数据制作周期长,同时用户查询相关属性信息繁琐,容易出错。
本文以ObjectARX.NET为技术支撑[9, 10],以管线测绘部门采集提交的mdb数据库为基础,程序根据数据库自动绘制成图,将属性数据库封装于CAD图形内,最终仅需提供给用户动态链接库文件(dynamic link library,DLL),用户直接根据AutoCAD平台的相关调用命令,即可查询管线相关属性信息,达到GIS软件的数据查询功能。
1 地下管线成图及属性管理软件设计及关键技术 1.1 软件设计地下管线成图及属性管理软件建设目标是利用ObjectARX.NET技术,将符合《义乌市地下管线建库标准》的mdb数据库直接转换成CAD的标准dwg格式,在自动成图后,对于各管线点、管线段,用户能够直接获取其相应的属性信息,将属性数据存储于CAD图形内。用户根据AutoCAD平台的相关调用命令,即可查询管线相关属性信息。其软件主要包括应用层、交互层、数据层3个层次,如图 1所示。
![]() |
| 图 1 地下管线成图及属性管理软件层次结构 Fig.1 Flow Chart ofUnderground Pipeline Mapping and Attribute Management Software |
1) 数据层。数据层是软件建设中的基础层,数据源的结构关系到整个软件的运行速度及效果。数据源包括测量的原始数据(包括点线的相关坐标、埋深、埋设方式、埋设类型、权属关系等),各种元器件的图例图块,各类管线在CAD图形中的线型及颜色值数据。
2) 交互层。交互层是对数据层转换成CAD图形核心技术层,需要调用大量的开发接口实现数据格式交换。微软公司提供了ACCESS的二次开发接口OLEDB,可以通过对其调用实现数据库内容的读取转换,需要注意ACCESS2003与2007提供的接口略有区别。AutoCAD 2007版本以前是不支持.net平台开发,Autodesk公司在AutoCAD 2008中提供的API有缺陷,进行相应开发需要P/Invoke技术。通过AutoCAD 2008 Type Library和Autodesk AutoCAD Mechanical 1.0 Type Library可以实现外部调用AutoCAD 2008程序及实现下拉菜单设计。
3) 应用层。为了方便用户的操作,直接调用AutoCAD 2008动态链接库DLL文件,实现对话框、面板、菜单选项进行人机交互,直接根据需求进行管线类别输出,快速实现管线属性查询等功能。
1.2 关键技术1) 数据库建设。数据库的设计关系到整个程序最终的实现效果,本程序主要涉及mdb数据库及CAD图形数据库。mdb数据库主要是按照《义乌市地下管线建库标准》进行相关设计,实现测量成果与最终成图数据的无缝对接,按照管种类型分为:给水、排水、燃气、电力、通讯、热力、工业等7大类,二级子类又细分27个小类,对综合管廊、人防、注记进行单独细分。对各类管线又进一步细分管点表、管线表。其核心结构如表 1和表 2所示。
| 表 1 管点部分数据库表结构 Tab.1 Structure of Table of Pipeline Point Database |
![]() |
| 表 2 管线部分数据库表结构 Tab.2 Structure of Table of Pipeline Database |
![]() |
CAD对图形是采用数据库方式进行管理,存储于CAD数据库中的数据称为数据库对象,CAD中基本的数据库对象为点、线、注记等可视化对象和非可视化对象符合表和数据字典等。CAD数据库至少包含9个符合表(块表、层表、文字样式表、线型表、视图表、UCS表、视口表、注册应用程序表、标注样式表)。CAD图形数据库的结构如图 2所示。
![]() |
| 图 2 CAD图形数据库结构 Fig.2 Structure of CAD Graphics Database |
2) CAD成图技术。CAD不支持直接导入mdb数据库格式,只能通过ACCESS的二次开发接口OLEDB将数据库通过中间表进行过渡,最终调用ObjectARX.NET相关函数进行CAD成图。首先,将mdb数据库转成中间过渡表过程中,需要对数据库中的点表、线表进行相关的逻辑检查,即管线线表中起点、终点的相应点位信息在对应的管线点表中必须有记录,否则无法完成线层输出。其次,CAD图形的图层、颜色、线型,各种元器件的图例的设置,必须制定规范模板,将指定的管线类型呈现于指定图层中。每类管线分为3个数据层:管线点层、管线线层、注记层。图层颜色在创建管线图层时进行相应颜色设置,ObjectARX.NET提供的函数接口为SetLayerColor( )。元器件的图例采用预制CAD图块,将图例库存放在CAD安装目录下,通过管线点表中特征及附属物属性对相应的图块进行调用,调用图块的函数为ReadDwgFile( )。对管线成图线型有相应的规范,但CAD默认线型无法满足专业管线的成图要求,必须重新编写CAD安装目录下的acadiso.lin文件,相应调用线型函数接口为LoadLineTypeFile( ),线型结构表如表 3所示。最后,将mdb数据库中的每个点、实体添加到CAD图形中,通过Document doc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;//获取CAD图形数据库,通过Transaction trans=db.TransactionManager.StartTransaction( );//获取当前操作对象空间。根据中间过渡表中的数据进行相应的点表制图,添加注记,txt.VerticalMode=TextVerticalMode.TextVerticalMid; txt.AlignmentPoint=new Point3d(x、y、z); 因线表中无直接指定起始点坐标,相应根据相应的点号关联点表中的X、Y坐标值,需要应用LINQ(language integrated query)技术,编写相应的关联调用函数。通过以上技术,可以获取管线线段的两端端点坐标,再根据ObjectARX.NET提供的函数进行线形绘制。Point3d startp=new Point3d(startx, straty, startz); Point3d endp=new Point3d(endx, endy, endz); Line line=new Line(startp, endp); 遍历中间表中所有线记录,直至完成所有线形的绘制工作。
| 表 3 管线线型样式 Tab.3 Table of Pipeline Style |
![]() |
3) 属性数据赋值。Autodesk公司从早期的CAD版本就提供了属性赋值功能,但由于其涉及一些编程知识,不被广大用户所熟悉,在CAD早期版本中,可以通过DXF组码格式来进行属性数据的赋值和读取功能,可以在VISUAL LISP控制平台中键入setq函数完成相关工作。在高版本中,CAD允许应用程序在实体上添加扩展数据XData,来为图形实体提供相应的属性数据。扩展数据能添加到任意实体上,并随CAD图形一起保存,但需要注意每个实体上附加的扩展数据不能超过16 KB。
管线属性数据赋值可以通过实体的XData属性指定,构造一个ResultBuffer类对象,定义ResultBuffer对象时,必须提供“数据对”,每个“数据对”包含一个数据类型描述和一个属性值,这类似于数据字典的构造。ResultBuffer rb=new ResultBuffer( ); rb.add(new typevalue((int)dxfcode.extendeddatareal, 85.67)); //赋予高程值。
XData类提供属性赋值的同时,也提供了属性获取的函数GetXData,它可以将实体数据中的扩展数据提取出来。获取得到的XData需要转成数组格(AsArray),在对实体赋属性时,其写入格式需要统一,不然获取的数组为无序数组,无法满足后期属性数据获取的程序设计。
2 地下管线成图及属性管理软件的实现地下管线成图及属性管理软件利用ObjectARX.NET技术,开发平台为Microsoft Visual Studio 2010,编程语言采用C#,运行环境为AutoCAD 2008。
2.1 CAD成图功能在管线成图对象框中,可以根据mdb数据库生成管线种类,本程序提供了8种管线类型,可以标注:地面高程、埋深、管顶标高、线注记,如图 3所示。
![]() |
| 图 3 管线成图对话框 Fig.3 Dialog Box of Pipeline Drawing |
2.2 管线属性数据查询功能
选取相应CAD实体中的点、线实体,管点可以查询到物探点号、特征、附属物、材质、规格、井底深、坐标、道路、图幅号、入库时间等相关属性。管线可查询到起终点物探点号、起终点埋深、起终点管顶高程、材质、埋设类型、管径、建设年代、流向、长度等等相关属性信息,如图 4所示。
![]() |
| 图 4 管点属性 Fig.4 Attribute of Pipeline Point |
3 结束语
本文利用ObjectARX.NET技术实现了管线的自动化建库成图以及属性数据管理的功能。在实际生产中,测量部门提交的数据库中是否缺失相应管点数据,在成图时一目了然,如缺少相应管点,程序会自动提示错误,无法进行下一步成图工作,从而便于测量成果的质检工作。此外,内业制图人员可以根据用户需求,快速生产需要的管线种类专题图,可绘制埋设、管顶高程等相应属性信息于CAD图形上,将管线属性数据库封装于CAD图形中,对存储影响极小。与传统管线数据提供相比,此种方法为用户提供了更加完善的管线数据资料,用户仅需调用一个动态链接库文件,即可查询相关管线属性信息。与专业管线软件相比,动态链接库文件在管线数据提供时免费获取,减少用户成本。
| [1] |
王鲁米, 曹永桃, 黄虎文. ObjectARX.NET技术在地下管网属性管理中的应用[J]. 地理空间信息, 2018, 16(1): 104-106. DOI:10.3969/j.issn.1672-4623.2018.01.031 |
| [2] |
黄开鑫, 赵兴友, 吴轩. AutoCAD二维图形中高程点属性赋值的程序设计[J]. 江西测绘, 2013(3): 41-43. |
| [3] |
董娟, 徐泮林. 地下管线信息系统中CAD文件的导入与导出[J]. 北京测绘, 2017(5): 119-122. |
| [4] |
贺军政, 罗凌燕. Excel与C#在地下管线数据处理的应用[J]. 城市勘测, 2011(1): 116-119. DOI:10.3969/j.issn.1672-8262.2011.01.033 |
| [5] |
李伟干, 江启双. 基于中望CAD二次开发实现地下管线数据处理的图库联动[J]. 测绘通报, 2016(S1): 225-227. |
| [6] |
周炤, 刘海砚, 赵鹏. 基于ObjectARX技术的AutoCAD数据格式转换[J]. 地理空间信息, 2006(6): 30-32. DOI:10.3969/j.issn.1672-4623.2006.06.011 |
| [7] |
薛军山, 王波. 基于AutoCAD的徐州市地下管线信息系统开发与实现[J]. 软件导刊, 2012, 11(5): 64-67. |
| [8] |
陈凤, 康停军, 古敏聪, 等. 基于CAD技术的地下管线规划辅助决策平台实现[J]. 测绘与空间地理信息, 2017, 40(5): 68-70. |
| [9] |
张建新, 王良民, 汪显如. ObjectARX宗地四至提取算法的实现[J]. 测绘地理信息, 2018, 43(4): 124-126. |
| [10] |
刘仁峰, 艾驰, 聂智龙, 等. 基于AutoCAD数据采编平台开发与实现[J]. 测绘地理信息, 2013, 38(2): 76-78. |
2021, Vol. 46








