王 闪,彭清山,程 琦,周 亮,高能攀
(武汉市测绘研究院,湖北武汉 430022)
随着计算机、网络、数据库等技术的更新,GIS技术的发展呈现出新的特点和趋势,应用领域得到大幅拓宽,基于互联网的WebGIS就是其中之一。WebGIS[1]将 Internet和 GIS 技术结合在一起,以互联网为环境,把Web页面作为GIS软件的用户界面,可在计算机网络上实现地理数据的显示、浏览、查询、分析、辅助决策等功能[2]。WebGIS使用B/S架构,具有建设成本低、维护更新便捷、保密性能好等诸多优势,从而在工程勘测、设计和规划数据管理工作中得到广泛应用。构建WebGIS的软件种类繁多。其中,美国Esri公司的ArcGIS Server系列产品是目前我国市场上应用最为广泛的WebGIS平台,已成功应用于大量企业级GIS应用与服务系统的构建[3]。
AutoCAD是美国Autodesk公司于1982年开发的自动计算机辅助设计软件,现已经成为国际上广为流行的图形设计工具。AutoCAD在图形数据的采集和编辑方面拥有强大的功能,使其在测绘、国土、城市规划等领域得到了广泛应用[4]。AutoCAD最初开发的目的是为了满足机械、建筑等设计方面的需求,导致其在地图和地理信息的管理方面存在着诸多先天性的不足(如属性数据管理不便、没有严格的拓扑关系、空间分析难以实现),但是其在制图表现形式、绘制方式等方面却有着常规GIS系统无法比拟的强大优势[5-6]。因此,很多地理信息的数据采集、编辑工作使用AutoCAD完成。
随着WebGIS在工程设计、规划数据管理等领域应用的不断深入,设计人员常常需要将使用Auto-CAD系统生成的图形数据与WebGIS系统发布的地图进行叠加分析,以方便设计人员比较图形数据与地图底图两者在空间位置、大小上的差异,从而及时发现设计、规划数据的问题[7-8]。通常在C/S架构下客户端直接将AutoCAD矢量数据读取导入到ArcGIS平台并配以指定的空间参考即可实现数据叠加。但是B/S架构下客户端为浏览器,无法直接读取AutoCAD矢量数据[9-10]。因此,很少有WebGIS系统提供AutoCAD矢量数据的实时叠加功能,从而制约了叠加分析的实时性和效率,限制了WebGIS系统的应用范围。本文提出基于WebGIS平台,通过Auto-CAD矢量数据的实时发布,快速直观地实现了图形数据与GIS数据的在线叠加分析,提高了工作效率。
为了实现将AutoCAD矢量数据与WebGIS系统发布的地图服务进行图形叠加,需要将AutoCAD图形文件从客户端上传至服务器,由服务器来负责读取并转换为MapService发布。本文采用方法是将AutoCAD矢量数据上传至ArcGIS Server服务器,服务器端读取数据并添加到MXD文档中,然后将该MXD文档发布为一个MapService。
整个AutoCAD矢量数据的发布流程为“图形文件上传→ArcObjects读取图形文件→赋予空间参考→使用MXD文档发布地图服务”4步。
1)客户端选择需要与WebGIS系统所发布的地图服务进行图形叠加显示的AutoCAD图形文件,系统通过实现文件上传功能的Web Service,将该文件上传至用以完成MapService服务发布的ArcGIS Server。
2)服务器新建一个空白的MXD文档后,使用ArcObjects将该AutoCAD图形文件整体作为一个CadLayer读取,或将AutoCAD图形文件中的要素分为点、线、面、注记等类分层作为FeatureLayer读取。
3)对于读取后的CadLayer(或FeatureLayer),赋予WebGIS系统发布的地图服务所使用的空间参考,将图层添加到MXD文档并保存。
4)使用服务器上拥有发布MapService权限的用户标识连接到ArcGIS Server后,新建一个MapS-ervice并对其进行必要的服务配置后,将MXD文档路径赋予该MapService并添加到该服务器后完成服务发布。客户端即可通过发布的 MapService和WebGIS系统所发布的地图服务进行叠加显示。
详细流程图如图1所示。
图1 AutoCAD矢量数据发布流程
由于WebGIS系统采用的是B/S 3层架构,用户使用的客户端是浏览器,无法使用ArcObjects来完成AutoCAD矢量数据的读取。因此,需要将图形数据传输至用以发布MapService的服务器。
客户端负责读取需要发布的AutoCAD文件并将其变为字节流后,再将这些字节流按照一定的大小分批次地上传至服务器;服务器端新建一个空文件,将这些字节流按照顺序追加至此文件,最终完成文件上传功能。实现客户端读取AutoCAD文件的程序代码为:
ArcGIS Server不能直接将AutoCAD矢量数据发布为 MapService,因此需要使用 ArcObjects将AutoCAD矢量数据读取到CadLayer(或FeatureLayer)中,赋予特定的空间参考并添加至MXD文档中。利用ArcObjects读取AutoCAD矢量数据并赋予北京1954坐标系的空间参考的代码为:
将AutoCAD矢量数据读取并保存MXD文档后,需要通过ArcGIS Server将MXD文档进行发布,客户端才能通过加载该MapService与WebGIS系统所发布的地图服务进行叠加比较。以下代码段将MXD文档发布为MapService:
笔者以所在单位基于ArcGIS Server开发的“勘测成果一张图”系统为WebGIS平台,实现了实时发布AutoCAD矢量数据,完成了“AutoCAD图形文件上传→ArcObjects读取图形文件→赋予空间参考→使用MXD文档发布地图服务”一整套处理流程。
该系统运行在笔者所在单位的百兆局域网上,ArcGIS Server服务器使用Intel Xeon E5640至强处理器、4 GB内存、250 GB硬盘,操作系统为 Windows 2003 Server;客户端使用Intel P4 2.40 GHz处理器,1 GB内存、120 GB硬盘,操作系统为 Windows XP SP3。经多次测试,实现一个文件大小约1 MB、比例尺为1∶2000的全要素AutoCAD矢量数据从开始上传到最终发布叠加,所需时间少于10 s。由于能够快速地完成AutoCAD矢量数据实时发布,该功能在日常工作中得到了广泛的使用,极大地方便了工作人员对AutoCAD矢量数据与地图底图进行对比检查。叠加效果如图2所示(后端的地图为“勘测成果一张图”系统发布的地图底图,前端为需要进行叠加比较的AutoCAD图形设计文件),用户可直观地对AutoCAD图形文件与GIS地图进行对比分析。
图2 AutoCAD矢量数据发布
本文使用ArcObjects和ArcGIS Server能够快速将AutoCAD的矢量数据实时发布为MapService供用户叠加分析,解决了长期以来工程勘测、设计和规划数据管理工作中WebGIS系统无法实时将AutoCAD系统图形数据与WebGIS系统中GIS数据进行快速叠加分析的问题,并成功应用于“勘测成果一张图”系统,大大提高了叠加分析的工作效率。本文方法的局限在于:限制所读取的AutoCAD矢量数据空间参考系与WebGIS系统发布的地图服务的空间参考系一致。在后续工作中,可通过将空间参考转换功能植入服务器端程序中加以完善。
[1] 韩敏,戴步成,郑丹晨,等.ArcGIS Server电子地图研究与应用[J].测绘科学,2011,36(3):204-206.
[2] 财政部经济建设司,国土资源部财务司.土地开发整理项目预算定额标准[M].北京:中国财政经济出版社,2012.
[3] 周红波,赵建民,袁文翠.AutoCAD图形数据向ArcInfo数据格式转换问题的研究[J].石油工业计算机应用,2010(2):41-44.
[4] 申胜利,李华.基于 ArcEngine的 ArcGIS与 AutoCAD数据转换研究[J].测绘通报,2007(2):41-43,60.
[5] 安如,张琴,丁贤荣,等.长江河道AutoCAD数据转换为GIS数据的方法[J].河海大学学报:自然科学版,2009,37(5):523-528.
[6] 陈能,施蓓琦.AutoCAD地形图数据转换为GIS空间数据的技术研究与应用[J].测绘通报,2005(8):11-14,34.
[7] 任东风,徐立军,才艺.CAD到ArcGIS数据转换问题[J].辽宁工程技术大学学报:自然科学版,2010,29(S1):25-27.
[8] 罗元颖.WEBGIS在测量规划中的应用[J].贵州地质,2010,27(2):155-156.
[9] 郭敏,刘长星.AutoCAD向 GIS数据转换方法的研究[J].技术与创新管理,2009,30(1):102-104.
[10] 曹国云,张伟.AutoCAD数据到GIS空间数据转换技术和方法的研究[J].安徽农业科学,2006,34(22):6035-6036,6064.