资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
基于ArcEngine的机助制图系统的设计与实现陈济民1 ,高庆方2,李长松 1,刘学工1(1.黄河水利委员会 信息中心,河南 郑州,450004;2.黄河勘测规划设计有限公司黄河基础地理信息中心,河南郑州450045)摘要:本文着重介绍了基于ArcEngine自动化制图系统的设计思路、具体实现过程和相关技术。作者利用VC+6.0和组件式GIS平台ArcEngine开发出了渭河制图GIS系统,在实际应用中取得了很好的效果,大大提高了制图的自动化程度和生产效率。关键词:ArcEngine;地图制图;组件式GISDesign and Realization of Computer-aided Drawing System Based on ArcEngineCHEN Jimin1,Gao Qingfang2,Li Changsong1,Liu Xuegong1(1.Information Center of YRCC, Zhengzhou, China, 450004;2. Yellow River Engineering Consulting Co., Ltd, Zhengzhou, China, 450045;)Abstract: The design idea, realization process and related key technologies of automated drawing system are specially introduced in this article. Based on VC+6.0 and ArcEngine, the author has developed Weihe River Drawing GIS. After applied, it shows high automated efficiency in producing maps.Keywords: ArcEngine, Cartography, ComGIS0 引言传统的地图绘制过程全部是手工清绘、刻绘,生产周期长,无法适应社会主义建设对地图迫切需要的局面。随着地理信息系统(GIS)技术的快速发展,GIS的功能也越来越丰富,它不仅可以存储不同来源的空间及其相关属性信息,而且可以对各种信息进行快速检索与分析,同时正在改变着地图设计、生产和应用的方法。GIS技术的发展促进了数字制图技术的变革,它完全替代了完全依赖于手工制作的传统地图制图过程,使得人们能够摆脱繁杂的人工劳动,提高了制图的自动化程度、修改的灵活性,进而提高了制图的生产效率,使得地图生产和更新能够及时紧跟社会需求的变化而变化。本文将着重介绍基于ArcEngine制图系统的设计思路、实现过程和有关技术问题。1 ArcGIS Engine 的特点ESRI的ArcGIS Engine是一组完备的并且打包的嵌入式GIS 组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。ArcGIS Engine 具有以下几个关键特征: 标准的GIS 框架; 有效的License 配置方案; 跨平台Windows、Unix 等; 跨语言Com、.Net 、C + + 、Java 等。ArcGIS Engine是一个用于建立自定义独立地理信息系统(GIS)应用程序的平台,支持多种应用程序接口(Application Program Interfaces, APIs) ,拥有许多高级GIS功能,而且构建在工业标准基础之上。ArcGIS Engine是开发人员用于建立自定义应用程序的嵌入式GIS组件的一个完整类库。使用ArcGIS Engine,开发人员可以将GIS 功能嵌入到已有的应用软件中,如自定义行业专用产品;或嵌入到商业生产应用软件中,如MirosoftWord 和Excel;还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。ArcGIS Engine包括两个产品: Engine开发包是组件、APIs和工具的集合,是创建自定义的GIS和制图应用的工具包;Engine运行时是为了运行自定义的Engine应用的可分发的Arcobjects。2 基于ArcEngine的机助制图系统的体系结构基于ArcEngine的机助制图系统采用C/S体系结构,逻辑结构分为数据层、业务逻辑层和表现层(如图)。数据层包括地理数据库和元信息数据库,实现现并封装数据库的访问,利用Oracle对数据进行统一访问和管理;业务逻辑层主要实现地图的符号化、地图制图整饰要素的计算等功能,主要负责表现层的请求,对数据层进行访问,然后数据结果返回给表现层;表现层主要实现用户的系统界面。Oracle数据库地理数据库元数据库ArcSde空间数据引擎ArcEngine组件库ArcEngine组件制图应用系统TCP/IP数据层业务逻辑层表现层图1机助制图系统的总体架构3 基于ArcEngine的机助制图系统的设计3.1系统界面和功能设计地图制图是一项琐碎、精细的工作,它是指根据需要对符号化后的地图添加图名、方里格网、图幅外注记、比例尺、接合表、境界线标注、行政所属注记等内容,然后将地图输出到文件或者打印机。地图制图必须符合有关规范和图式要求。根据软件工程的设计思想, 基于ArcEngine的机助制图系统应满足实用性、可靠性、完备性、科学性、规范性等设计原则, 具备数据加载、地图符号化、地图操作、布局操作、打印模板加载、设置和选择、打印区域、图层和图例的选择、整饰要素添加和修改等功能。因此,我们利用VC+6.0和组件式GIS平台ArcEngine开发出了渭河制图GIS系统,系统设计的界面如图2,系统实现的功能如图3。图2 渭河制图GIS系统总界面渭河制图GIS系统布局模板加载布局模板定制页面设置打印机设置地图输出打印打印区域选择打印图层选择打印图例定制数据加载地图符号化地图操作布局操作整饰要素编辑整饰要素添加图3 渭河制图GIS的功能框架3.2机助制图的具体实现过程根据制图的需求,机助制图的实现流程如下:连接数据库服务器,加载数据,并对数据进行符号化显示;设置打印页面和打印机;选择打印的图幅(或者自定义打印区域)、打印的图层和打印图例;根据选择的图幅或区域,选择地图投影方式;依打印比例尺的不同,选择布局模板或者自定义布局模板;计算地图的内外图廓;如果选择中选择的是标准图幅,计算相邻图幅的名称,保存在存储结合表内容的变量中,并从元数据库中读取地图的制图日期、制图方式、数据源参数、测绘单位、密级等;根据中选择的模板和内外图廓,计算公路网格及其标注、境界线标注和其他整饰要素的输出位置,添加到地图中;检查无误后,对地图输出成栅格文件或打印。4 系统实现的几项关键技术尽管ArcEngine提供了丰富的类库,但由于地图制图规范要求严格和一些符号的特殊性,ArcEngine不能直接满足制图的需要,因此,为了解决这些制图问题,下面给出了一些技术思路。4.1居民地及街区按走向填充晕线技术用ARCGIS定制的线型填充符号中,线型的角度是一定的,不能按需自动旋转,地图中总会有一些房屋或者街区的边界与填充线平行,不符合国家制图的要求,所以开发此功能解决这个问题,使填充的晕线与建筑物的走向成45角,保证制图的美观性。本算法的技术原理:选取房屋或街区多边形最长的边作为房屋或街区的走向线,计算与房屋走向线成45角的直线的角度(90),然后以角度为晕线的角度创建LineFillSymbol填充对应的房屋或街区多边形。用Arcgis定制的固定角度线型符号填充效果图如图4,利用本技术按建筑物走向填充效果图如图5。图4 固定线型符号填充效果图 图5 按建筑物走向填充效果图4.2 电力线符号化技术运用ARCGIS定制的线型符号对电力线进行符号化时,往往在拐点处不能保证有一个电线杆符号,这与现实不相符合,不符合制图要求。此技术解决了这个问题,其技术原理为:先选择电力线上的所有拐点,并在相邻两点之间内按一定的间隔插入点,并计算小箭头的位置和方向,然后对这些点和小箭头以Element方式添加到Map的图形容器中,实现对电力线的符号化。电力线符号化效果对比图如下图6,图7。图6 ArcGis9.0定制的电力线符号效果图图本技术实现的电力线符号效果图4.3 线状要素的散列式自动注记技术在地图制图规范中,散列式注记要求注记沿地物的自然形状线排列,并且能够依打印区域内地物长度选择字间的距离和标注的数目,目前ArcEngine还不支持这一注记方式,本技术解决了这个问题。本技术的算法如下:裁剪打印图幅内的线状要素,从矢量数据集中读取线状要素的注记名称并计算注记名称的字符数M,根据制图的规范要求和线状地物的长度计算标注数N,在线状地物要素上选取(M+1)*N 个标注点,沿着线状要素的方向,在各个标注点标注对应的单个字符,如果地物为河流,按从左到右,从上到下的原则标注。4.4 境界线自动标注及其避免标注压盖技术为了实现境界线自动标注,设计标注信息结构体如下:struct BndryLabelInfoIPointPtr pLabelPt; /标注点位置 地理坐标CString strFirstLabel; /左标注或上标注BOOL bIsDrawFirstLabel; /左标注或上标注是否画出CString strSecondLabel; /右标注或下标注BOOL bIsDrawSecondLabel;/右标注或下标注是否画出BndryLabelLocation LabelLineLocation; / 标注位置(图幅的上、下、左、右)CString strType;/分界点类型(省界,地市界, 县界,乡界);其算法流程如下:计算境界线与内图廓四边的所有交点,把交点的标注点位置pLabelPt,标注位置LabelLineLocation,分界点类型strType信息存放到数组BndryLabelInfos数组中。遍历所有的交点,搜索交点所在的行政区域,并赋值给strFirstLabel和bstrSecondLabel变量。(此过程首先要对交点生成一个10米的缓冲多边形,然后查找与多边形相交的行政区域,并计算搜索到的两个多边形的左右,上下空间关系)。把BndryLabelInfos数组中标注点pLabelPt转换成页面坐标。对数组BndryLabelInfos,先按LabelLineLocation的Top,Bottom,Left,Right进行排序。然后在同一标注位置中,按从左到右,从上到下的关系进行排序。根据标注的长度计算标注点与内图廓四个交点经纬度和相邻标注点的标注的重叠情况。如果重叠,置bIsDrawFirstLabel 或 bIsDrawSecondLabel 为False; 用AddBndryLabelText方法把标注以TextElement的形式添加的Layout图形容器中。5 结束语基于ArcEngine机助制图系统是以关系数据库为基础,它不受地形图分幅和比例尺的限制,具有高度的灵活性和强大的选择性,能够按需选择打印区域、打印图层和图例,彻底改变了传统的制图工艺,此系统的实现与开发使得地图的整饰输出简单化、自动化,提高了作业员生产地图的效率,可以在较短的
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号