第42卷第6期 2 0 1 6年2月 山 西 建 筑 SHANXI ARCHITECTURE V0ll42 No,6 Feb. 2016 ·257· 文章编号:1009·6825(2016)06—0257-02 MicroStation环境中地形图零长度要素处理方法的探讨 昔摘辉 310012) (杭州市勘测设计研究院,浙江杭州要:介绍了MicroStationV8i环境下,对地形图数据入库处理中零长度线的处理方法,探讨了通过二次开发,自动识别和删除地 形图中不合数据规范的要素,有助于入库前地形图数据的整理和规范。 关键词:MicroStation,地形图数据,零长度线 中图分类号:TP319 0 引言 近年来,随着城市建设快速发展,基础地理空间信息在城市 规划建设与管理中发挥了越来越重要的作用。基础地形图数据 在实际应用中也出现了原有的大比例尺(1:500,1:1 000)地形图 的适用性和覆盖范围已经不能满足整体规划、建设和管理的需 要。伴随各种测量新技术的发展以及各种比例尺地形图的生产 和制作,在生产过程中拓扑关系的建立都是必不可少的。 MicroStation是一个专业级应用程序,用于二维/Z维制图和详细 设计,以DGN或DWG格式创建、编辑和处理工程图及模型提供 了一个直观界面,越来越受到大家的关注和青睐。建立正确的 拓扑关系,消除基础地形图中的非法以及不合理数据,确保正 确、合理入库是地形图数据入库中的重要工作。由于地形图采 集、处理、转换和相互调用的过程中,经常会出现零长度线的现 象,给后续工作带来了不便。该现象在图中又比较隐蔽和不直 观,采用人工检查方法会很费力、效率低且易遗漏,难以达到数 据质量检查的要求。本文借助MicroStation软件的二次开发功 能,尝试了计算机检查代替人工检查与处理的方法,取得了较好 的效果。 1 MicroStation v8i软件简介 MicroStation是由美国Bentley公司设计开发服务于基础工程 设计、建造和运营活动的旗舰产品,先后经历了MicroStation4.0, MicroStation95,MicroStation J,MicroStation V8,MicroStation V8i 等版本,是一款功能强大的计算机辅助制图软件系统。V8i是在 XM版基础上发展起来的最新版本,既是一款软件应用程序,也是 一个技术平台。国内很多测绘单位,如杭州市勘测设计研究院、 宁波市测绘设计研究院、武汉市勘测设计研究院等,都是以Mi. croStation作为测绘和制图软件。 2 MicroStation V8i的二次开发 2.1 开发语言 MicroStation支持多种编程语言,如UCM,CSL,MDL(C), NativeCode(C++),Addins(c#/VB.Net/C++.NET),VBA等。 其中Addins方式只有在V8XM版本以上才开始支持。这几种开 发方式中,MDL是最为强大的,基本上所有MicroStation中的功能 均可以采用MDL来实现。大部分.net开发人员采用Addins进行 开发,相比MDL开发要容易,入门快;可以在Microsoft Visual Stu. dio中进行方便的开发调试,可以使用WinForm和.Net控件来进 行丰富的用户界面设计,这些都是MDL无法比拟的。Addins还 可以编译成dll来运行,有效的保护了代码成果。 2.2开发环境 收稿日期:2015—12—14 作者简介:黄辉(1984.),男,助理工程师 文献标识码:A 开发环境:MicroStation V8i+Microsoft Visual Studio 2008(c#)。 VS里设置调试环境:首先设置项目属性,在项目上点击右 键,选择属性,在“生成”选项卡,设置输出路径为MicroStation V8i 安装目录下的mdlapps下。为了方便调试和提高效率,可以将常 用的几个键人命令设置为工具条:装载:mdl load msapp, mydomain;卸载:clr unload domain mydomain;Open:msapp open。 3算法设计 零长度要素是指线状要素。在MicroStation中,不存在点类 型,点要素是以零长度的线类型存在。零长度要素的查找和检测 算法是零长度要素处理的核心。应按照要素类型和要素的几何 长度性质进行判断,算法如下: BCOM.ElementScanCriteria script=new BCOM.ElementScan— CriteriaClass(); script.ExcludeAllTypes(); script.IncludeType(BCOM.MsdElementType.Line); script.IncludeType(BCOM.MsdElementType.LineString); BCOM.ElementEnumerator ee:hkxGISPlat.ComApp.Active— ModelReference.Scan(scirpt); while(ee.MoveNext()) { BCOM.Element elem=ee.Current: if f elem.Type==BCOM.MsdElementType.Line I I elem. Type==BCOM.MsdElementType.LineString) { BC0M.LineElement line=(BC0M.LineElement) ee.Current; if(1ine.Length==0) { hkxGISPlat.ComApp.ActiveModelReference.Select— Element(1ine,true); } } } 4应用实例 在各种比例尺的基础地形图建库前的数据质量检查中,经常 会发现零长度线的非法数据存在。由于零长度线在图中显示只 是一个点或是完全被压盖,采用人工去逐个发现及删除的惯用方 式费时又费力。 采用上述算法,开发的工具,可以在MicroStation软件中对基