规划审批数据在AutoCAD与ArcSDE间互操作的实现
2013-03-03邹艳红习文凤
邹艳红,习文凤
(中南大学有色金属成矿预测教育部重点实验室,地球科学与信息物理学院,湖南长沙 410083)
规划审批数据在AutoCAD与ArcSDE间互操作的实现
邹艳红∗,习文凤
(中南大学有色金属成矿预测教育部重点实验室,地球科学与信息物理学院,湖南长沙 410083)
针对规划审批数据处理后入库和入库后再调用过程中AutoCAD与ArcSDE数据频繁转换的问题,基于C#.Net和ObjectArx SDK工具对AutoCAD进行二次开发,研究了二者实时数据转换互操作功能的开发实现过程。数据互操作功能包括取图和上图两个模块,前者将数据从ArcSDE中加载到AutoCAD中并编辑,后者将AutoCAD数据通过ArcSDE保存到关系数据库中。作为实例研究,两模块已经整合到岳阳市规划审批数据处理与辅助入库系统中,有效地提高了规划审批数据入库和查询调用的效率。
规划审批数据;AutoCAD数据;ArcSDE数据;互操作
1 引 言
AutoCAD具有强大的绘图功能和矢量图形处理能力,广泛应用于测绘、规划、国土资源等领域,尤其在规划行业,基本地形图、业务审批等图形都是运用Auto-CAD绘制。但是在规划行业中,规划人员在进行业务审批时,常需要调用历史规划审批数据进行对比,虽然CAD格式数据作为空间信息的主要数据源,但它在空间数据信息的描述和分析功能方面却存在诸多不足[1,2]。而规划审批及其相关数据具有海量数据的特征[3],如果规划人员挨个文件去找,将耗费很多的时间,降低了规划人员的工作效率。ArcSDE是ArcGIS与商用关系型数据库(如Oracle,Microsoft Sql Server等)之间专门用于存储、读取和检索空间数据的GIS通道[4],它采用统一的DBMS存储空间数据和属性数据,在标准的关系数据库上增加一个空间数据管理层,它的基本任务是作为存储在RDBMS中的空间数据的GIS网关[5]。这种模型省去了空间数据库和属性数据库之间繁琐的连接,空间数据存取速度较快,同时也有利于保证空间数据与属性数据间的完整性。如将规划审批数据通过ArcSDE存储在DBMS里,而在对数据的修改与编辑等方面运用AutoCAD,既可以解决海量规划审批数据的存储问题,又可以充分利用AutoCAD便捷的绘图功能。
目前CAD与ArcSDE数据交换的实现方式主要有两种,一种是借助于中间软件如FME(Feature Manipulate Engine,空间数据操作引擎)实现转换;另一种是通过二次开发实现,如基于ArcEngine的ArcGIS二次开发,或对CAD做二次开发,如基于C#.Net和Object ARX开发包的二次开发来实现数据间的转换。第一种方法可以实现空间数据以及属性数据的批量无损转换,但操作复杂,需要利用第三方软件,适用于专业数据处理人员的使用。第二种方法可以根据需要灵活定制友好的界面,能更高效、安全地管理空间数据[6],方便数据的查询、统计以及空间分析。但是随着规划数据管理一站式平台的开发与应用,规划人员对CAD使用更为频繁,如何实现实时快捷地从数据库中获取数据,同时将处理过的CAD数据通过ArcSDE存储在关系数据库中,对界面功能开发提出了更高的要求。为此,本文结合岳阳市规划审批数据管理实例,选用ArcSDE+SQL Server2008存储空间数据和属性数据,基于AutoCAD进行二次开发,研究了AutoCAD与ArcSDE间规划审批数据实时互操作转换的实现过程。
2 AutoCAD与ArcSDE数据模型的映射关系
2.1 AutoCAD的数据模型
AutoCAD以图层(Layer)来组织图形数据,不同类型的图素,如点、线、多边形等可以共层,一个dwg或dxf文件可以包含多个图层[7]。它所有实体都存放在块表中,与实体对应的图层、线型、文字样式等信息分别存放在层表、线型表、文字样式表中,属性数据以扩展属性方式存储在AutoCAD的图元对象中。其数据模型相对简单,是以二进制方式存储点线面地理数据,但只能存储少量的属性数据。后来的CAD数据模型支持扩展属性功能,但还是不能跨越其存储量为16 k的限制,而且其存储模式还是文件存储模式,这远远不能满足当前海量数据存储的要求[4]。
2.2 ArcSDE数据模型
ArcSDE用X、Y坐标来表示点、线、面、注记。其用单一的坐标表示点,一组有序的坐标串表示线,一组起始结点和终止结点相同的坐标串表示面。它以层的方式来管理地理数据,具有共同属性项的一类要素放于一层,每个数据库记录对应一个实际要素。ArcSDE为数据库中每层(Layer)建立了空间索引(cell),它是将层从逻辑上分成一个个小块。层中的要素则分解到各cell中加以描述,并将此描述信息写到索引表中。落到多个cell上的要素,将在每个cell对应的索引记录中加以描述。没有数据的cell不包括在索引表中[8]。其利用将空间数据类型加到关系数据库中的方法来存储和组织数据库中的空间要素,但不改变和影响现有的数据库或应用。
2.3 二者数据模型的映射关系
文中通过建立AutoCAD与ArcSDE间的映射关系,如表1所示,来实现数据间的互转换从而达到数据间的互操作。
AutoCAD与ArcSDE数据模型的映射关系 表1
3 AutoCAD与ArcSDE间互操作开发设计与实现
3.1 互操作功能设计
针对原始的规划审批数据为AutoCAD格式,需要转化为ArcSDE数据后保存到数据库中,而数据库中的规划审批历史数据也有时需要调入辅助入库系统中,以AutoCAD格式显示并与现状数据进行对照修改。因此,为了方便辅助规划审批数据入库,需要实现审批数据的互操作功能:一方面可以将CAD格式图形数据自动转为ArcSDE数据后存入ArcSDE数据库中,属性数据存于ArcSDE数据库表的字段中;另一方面能从ArcSDE数据库中读取历史审批数据,自动转换为CAD数据显示在AutoCAD平台上,并可以进行编辑、修改。
空间数据库互操作的实现方式有基于直接访问模式和基于公共接口访问模式两种互操作方法[9]。本文采用基于直接访问模式,基于C#.Net和ObjectARX软件包对CAD进行二次开发,直接访问ArcSDE数据库来实现两者之间的互操作。在AutoCAD环境下通过ArcEngine、ObjectArx.Net访问ArcSDE,系统互操作逻辑结构图如图1所示。
图1 互操作模块逻辑结构图
3.2 互操作实现过程
本次开发采用的开发语言和环境如表2所示:
开发语言和环境 表2
开发中,C#语言通过AutoCAD.Net来和AutoCAD进行通讯,通过Interop.AutoCAD.dll实现与AutoCAD之间的数据和信息交换。自定义功能则主要依靠AutoCAD目录下的Acdbmgd.dll和Acmgd.dll两个文件实现。
互操作在数据操作中以“取图”和“上图”两个功能模块来实现。
(1)取图:即规划审批数据从ArcSDE里加载到AutoCAD平台上,获取编辑权限后可对数据进行编辑。取图过程中加载数据的流程图如图2左所示。系统中使用ArcEngine中esriSystem组件下的IAoInitialize初始化ESRI的权限,继而调用ArcEngine中GeoDataBase组件中的WorkSpace、FeatureClass、Feature等接口类操作空间数据表。使用ObjectArx.Net开发包中的Autodesk.AutoCAD.DatabaseServices类库,BlockTable、Entity、DBDictionary等对象类实现操作图形数据表。在ArcSDE数据库加载数据的过程中,将空间数据的属性信息加载到对应的CAD实体的扩展数据中。
取图的关键函数如下:
DownLoadData(string featureclassname,string rollid)
//取图函数
ConvertTextPoint2CAD(IFeatureClass fc,string rollid,stringfeatclsrealname)//ArcSDE注记点要素转CAD注记点函数
ConvertLine2CAD(IFeatureClass fc,IEnvelope ienv)
//ArcSDE线要素转CAD线型函数
ConvertPolygon2CAD(IFeatureClass fc,IEnvelope ienv)// ArcSDE面要素转CAD闭合多义线或圆函数
ConvertAnnotation2CAD(IFeatureClass fc,IEnvelope ienv)// ArcSDE Annotation转CAD DBText
(2)如图2:指审批数据从AutoCAD直接保存到ArcSDE数据库中。上图的保存流程图如图2右所示。上图过程中,将CAD扩展数据写入对应的ArcSDE字段并保存,上图后,更新数据表。
图2 ArcSDE到AutoCAD的数据加载流程(左) AutoCAD到ArcSDE的数据保存流程(右)
上图的关键代码如下:
UpLoadData(string featureclassname)//取图函数
ConvertDBText2SDE(Entity ent,IFeatureClass fc)
//转换DBText为SDE点要素函数
ConvertLine2SDE(Entity ent,IFeatureClass fc)
//转换CAD线型为ArcSDE线要素函数
ConertPolyline2SDE(Entity ent,IFeatureClass fc)
//转换CAD多义线为ArcSDE的面要素或线要素函数ConvertCircle2SDE(Entity ent,IFeatureClass fc)
//转换CAD圆为ArcSDE的圆函数
4 实例实现
4.1 实例规划审批数据
以岳阳市规划审批数据为例,规划审批数据按内容分类存放于以下5个数据库中:索引图图库,基础地理信息库,规划编制成果库,规划审批成果库,规划管理依据库,如图3所示。
其中索引图图库含有:规划分片索引图,规划管理单元图,行政区域边界图,CAD地形图结合表,1∶1 000地形图结合表。基础地理信息库里含有以下4个图库:影像图图库、地名库、管线资料图库、地形图图库。规划编制成果库包含以下4个图库:总体规划图库、控制性详细规划图库、专项规划图库、道路汇总图库。规划审批成果库包含:定位红线图,道路上线案卷图,交通影响评价项目图,竣工验线图库,核指标总平面图,管线总图,选址蓝线,用地红线,用地蓝线等。规划管理依据库里含有:红、蓝、橙、紫、黑、绿、黄等规划七线。
图3 绘图编辑菜单与数据操作示意图
4.2 数据操作和应用实现
打开岳阳市规划审批数据处理与辅助入库系统,左键单击绘图编辑下的绘图面板菜单项(如图3左图),弹出绘图面板,在绘图面板下的图层模块中,右键单击某一图层,左键单击取图即可取出该图层的数据。如图3右所示,右击用地红线面图层,即可将改图形显示在CAD界面中进行编辑修改。取完图后,上图按钮即可由灰色变为黑色,编辑修改完后的图,可以点击上图按钮,将数据保存到ArcSDE对应的关系数据库中。图4和图5为用地红线面的取图和上图后的显示图。
在实例中,以用地红线为实验数据,取其中6 324个注记点数据平均耗时2.9 s,取其中131个线数据平均耗时1.9 s,1 836个面数据平均耗时2.5 s。上图比取图多了添加数据的扩展数据的过程,且上图是按当前案卷来上图,每次上图的数据量不大,平均每次1 s内能完成。对于点、多段线、圆弧、圆数据,取图上图数据准确率能达100%,而样条曲线由于是用多段线拟合而成,其精度受曲线曲率大小及多段线节点个数影响,曲率越小,精度越高,节点越多,精度越高。
图4 规划审批ArcSDE数据在AutoCAD显示图
图5 规划审批ArcSDE数据在ArcMap显示图
5 结 语
本文通过对AutoCAD的二次开发,实现了规划审批数据在AutoCAD与ArcSDE间的互操作,促进了CAD与GIS在应用中的交融,方便了数据的存储和编辑以及用户操作的习惯,不但减少了用户因数据转换带来的编辑工作,使用户提高了工作效率,还提高了数据质量与应用价值。有待进一步提高的是优化数据结构,减少数据存储时间。同时,为了提高数据互操作效率,良好的数据预处理工作必不可少。
[1] 陈能,施蓓琦.AutoCAD地形图数据转换为GIS空间数据的技术研究与应用[J].测绘通报,2005(8):11~14,34.
[2] 周小成,焦道振.基于GeodataBase的CAD数据到GIS的解决方案[J].测绘与空间地理信息,2005,28(1):29~32.
[3] 吴千里,马小龙.面向城市规划信息化的GIS与CAD集成技术探讨[J].测绘通报,2010(2):52~55.
[4] 张卓然.基于ArcSDE的地形数据入库互操作研究[D].湖南:湖南大学,2008.
[5] 鞠建荣,武小军,张凤梅.AutoCAD数据到ArcSDE的转换方法研究[J].城市勘测,2010(Z1):43~45,48.
[6] 王波,张亮,孙霞.CAD向GIS数据的转换入库[J].地理空间信息,2011,9(3):24~26.
[7] 胡卫民,徐雪仁,郭建恩等.空间数据库引擎(SDE)在图资源数据库管理中的应用[J].国土资源遥,67~70.
[8] 邱建康.基于AutoCAD的ArcGIS空间数据库互操作实现[J].城市勘测,2010(5):54~56.
Research on Implementation of Planning Approval Data Interoperation Between AutoCAD and ArcSDE
Zhou Yanhong,XiWeifeng
(Key Laboratory of Metallogenic Prediction of Nonferrous Metals,Ministry of Education School of Geosciences and Infophysics,Central South University Changsha,Changsha 410083,China)
To address planning approval field interoperation problem between AutoCAD and ArcSDE in planning approval datamanagement system,we took redevelopment from AutoCAD to ArcSDE database based on C#.Net and Object SDK.The data could be operated by Down-Load and Up-Loadmodule in the system.Down-Loadmodulewas developed to load planning data from ArcSDE to AutoCAD,the latter was to store AutoCAD format data into ArcSDE.As a case study,themoduleswere integrated into the Planning Approval Data Management System for Yueyang city and the data interoperation was very fast and easy between AutoCAD and ArcSDE+SQL Server 2008.The results show that the implemented interoperation function is convenient for planning approval datamanagement.
planning approval data;AutoCAD data;ArcSDE data;interoperation
1672-8262(2013)03-14-04
P208.1
A
2013—03—04
邹艳红(1971—),女,副教授,博士,研究方向为地学建模及信息系统开发。
国家自然科学基金项目(41102204)