基于一张图动态管理平台的动态数据入库解决方案摘要:随着GIS的发展和广泛应用,越来越多的单位选择了ESRIArcGIS的技术路线,并采用ArcSDE作为其数据管理平台。这些单位在换平台时需要把现有数据迁移或转换到ArcSDE中;同时应用系统需要进行部分的修改或在新平台下重新开发,然而很多设计部门仍然使用AutoCAD设计,他们在报建审批时提供的设计图形仍然是DWG/DXF格式的电子数据,为此需要解决AutoCAD和ArcSDE的数据动态交换问题。关键词:AutoCAD,ArcSDE,一张图动态管理平台,动态数据入库前言引言随着AutoCAD序列软件在中国的广泛应用,特别是国土和规划的测绘部门在进行图形数据采集的时候都采用了AutoCAD的DWG/DXF作为数据存储的格式。但是随着社会信息化程度的提高,以前的文件方式存储存在很多问题,经过技术选型,很多单位采用ESRI的ArcSDE作为数据管理平台,在新的平台下管理数据和做相关的应用。为此要进行大量的数据迁移和数据转换把文件管理方式下的数据转入到新的GIS平台中,虽然数据转换能够把数据从旧的平台转到新的平台中,但是业务部门不可能都要求其更换新的GIS平台,特别是一些设计部门和报建审批单位在建筑设计、路网调整等方面仍然在AutoCAD上进行设计,为此需要解决AutoCAD和ArcSDE的数据动态交换问题。在AutoCAD中通过OracleSpecial与Oracle实现动态存取,但其结果无法被ArcGIS的相关软件通过ArcSDE进行存取。我们为了解决AutoCAD与ArcSDE的数据交换问题提供了一个一张图动态管理平台中间件,它解决了在AutoCAD中把数据存储到ArcSDE中,同时也能从ArcSDE中把图形数据读到AutoCAD中,然而它只能是一次性的图形入库而不能实现部分数据的动态入库和定制业务属性。ArcSDEArcSDE是在关系数据库管理系统上进行存储和管理空间数据的工具,通过它可以把图形数据直接存入关系数据库中,也可以通过它把数据库中的图形数据解释出来供客户端使用,它能够支持Oracle/Informix/IBMDB2/MicrosoftSQLServer等主流的关系型数据库。ArcGIS的系列软件(ArcInfo/ArcEditor/ArcView/ArcIMS等)能够通过使用ArcSDE在RDBMS中管理空间数据。同时ArcSDE也可以作为各种应用程序和网络发布的一个应用服务器。一张图动态管理平台一张图动态管理平台是燊冉科技公司在AutoCAD环境下开发的一个存取ArcSDE数据的工具,通过该工具可以把AutoCAD的CAD数据存入ArcSDE中;也可以从ArcSDE中取出地理要素添加到AutoCAD中。在一张图动态管理平台中可以存储两种数据,即CAD数据和几何要素。其中CAD数据只能被CAD客户端读取,几何要素由一张图动态管理平台自动生成并管理,不仅能被CAD客户端读取还能被其它的SDE客户端如ArcView,MapObject和ArcInfo等使用,但不能写。目前现状一张图动态管理平台是ArcSDE与AutoCAD之间进行数据交换的一个客户端工具,通过该工具可以在AutoCAD中把CAD数据批量存入ArcSDE中,其结果可以供Arc/Info、ArcView、MapObject等软件查看。其工作模式如下图所示:然而直接用一张图动态管理平台是无法实现电子报批和路网调整等CAD数据的动态入库和动态更新。它有以下一些限制:首先它不支持ArcSDE的局部数据更新;无法灵活实现SDE数据的动态编辑功能;更不能控制SDE数据的重复加载和多个SDE图层的数据同时叠加,也无法和基本的业务功能联系起来。为了解决在AutoCAD中动态更新ArcSDE数据,提出了以下方案。解决方案在一张图动态管理平台中有一个与ArcSDE进行数据交换的ARX程序,而且还提供了一个供二次开发的DLL动态连接库,即csapi.dll,提供了用于存取ArcSDE数据的主要接口。由于一张图动态管理平台的功能和限制,需要在其基础上进行扩充以实现CAD数据在ArcSDE中的动态更新,为此我从以下几个方面进行详细介绍:需要解决的问题为了实现CAD数据在ArcSDE中的动态更新,需要考虑几个问题。首先是在AutoCAD中如何存取ArcSDE数据;接着是采取什么方式保证在AutoCAD中的图形编辑能够即时更新ArcSDE图形数据;如何在AutoCAD中编辑ArcSDE实体的属性数据;如何在AutoCAD中建立图形数据和ArcSDE属性数据的关联;以及用户的权限控制等相关问题。动态数据入库方案动态数据入库解决方案是在一张图动态管理平台的基础上进行扩充,以实现AutoCAD与ArcSDE之间进行动态数据交换,通过该方案可以在AutoCAD中动态更新ArcSDE数据,能够实现CAD数据动态入库,其入库后的图形可以供Arc/Info、ArcView、MapObjects等软件查看。其工作模式如下图所示:AutoCADArcSDEArcInfoMapObiectArcViewSDECADmiert关键技术和具体实现在AutoCAD下采用ARX、SCAPI和MFC等技术相结合进行开发,实现AutoCAD环境与SDE空间数据库的数据交换,解决了动态数据入库的主要问题。在AutoCAD环境下实现SDE多种数据模型(Geodatabase和SDE3.X的数据)矢量数据的不重复加载,和以文件方式叠加地形图、扫描图和航片图栅格数据,通过这种技术可以在AutoCAD中调用所有SDE的矢量数据、更新SDE3.X的矢量数据,实现与统一信息平台的数据共享。采用SDECADClient的动态数据入库解决方案,实现了数据读取、编辑、更新后台数据库的功能,特别是实现了任意指定图面区域的数据更新,形成了一套基本通用的AutoCAD数据动态更新技术解决方案,建立了AutoCAD与SDE之间的桥梁。在SCAPI的基础上进行了封装,包括添加、更新、清除、查询、实体与数据库关联等功能,以及再次封装使其具有读写SDE3.X图形、读Geodatabase、登陆、退出等功能。方案特点通过采用该方案使用户的数据管理从文件管理方式过渡到数据库管理方式,在AutoCAD中更新数据时可以只从ArcSDE中调取小部分数据进行更新而不必进行耗时费力的数据转换工作;通过ArcSDE可在系统中实现对其他GIS图形数据的调用和叠加;同时ArcSDE支持纯CAD实体对象数据存储,能满足图形数据的精确表示,而且存储采用连续式空间数据模型,数据不需要进行分幅;当然ArcSDE能够完整的保存CAD弧段等复杂实体信息,该方案把AutoCAD平台强大的图形编辑工具和ArcSDE的优异的图形数据存储功能结合起来,完全AutoCADArcSDEArcInfoMapObiectArcView动态数据入库解决方案一张图动态管理平台能够满足用户的数据编辑和数据存储的需求。该方案的用户继续沿用AutoCAD平台,满足了用户的使用习惯,对用户只需作少量的培训工作,用户就可熟练的使用系统;同时SDE对数据的管理是一种多用户的数据库管理,具有用户帐号与用户权限等管理机制,可以避免目前使用文件服务方式的诸多弊端,为数据的安全性与保密性提供了良好的技术保障。需要注意的问题为了配合该方案需要在ArcSDE建立相应的图层,在ArcSDE建图层时和在AutoCAD存取图形时需要考虑到几个问题。首先建图层时图层只能是SDE3.X模式,因为只有SDE3.X模式的数据AutoCAD才能编辑;然后在AutoCAD中把CAD数据存数据到ArcSDE中时,需要指定以CADObject和SDESimpleFeature两种实体形式存储,这样在AutoCAD以CADObject方式访问SDE3.X模式的数据层来实现数据的更新,同时GIS应用系统和ArcGIS的其他客户端,以SDESimpleFeature访问SDE3.X数据层来查看当前最新数据,达到动态更新的效果。其动态更新机制如下图所示:总结通过在AutoCADR14上进行ARX二次开发和扩展一张图动态管理平台功能,可以实现在AutoCADR14上进行动态更新ArcSDE中的CAD数据,实现CAD数据的动态入库,建立AutoCAD与ArcSDE动态数据交换的桥梁,使得基于AutoCAD的管理信息系统和建库系统都可以在此基础上进行定制,降低数据迁移和转换平台的成本。通过该解决方案可以成功实现AutoCAD数据在ArcSDE中动态管理,使得用户可以充分利用AutoCAD的丰富灵活的数据编辑功能以达到精确制图效果;同时利用ArcSDE进行高效的数据管理,已达到两者完美结合。SDESimpleFeaturelayerCADObjectSADFeature基于一张图动态管理平台的管理系统RetrievedStored统一信息交换平台GIS应用ArcGIS客户端