利用EPS脚本技术实现道路注记到道路属性的转换
2012-09-22郭梦炽
郭梦炽*
(1.哈尔滨市勘察测绘研究院,黑龙江哈尔滨 150010; 2.哈尔滨数字城市科技有限公司,黑龙江哈尔滨 150010)
1 引言
EPS地理信息工作站是北京清华山维新技术开发有限公司研发的面向测绘、基础地理信息生产的软件系统。它以地理信息系统应用的角度构建数据模型,综合CAD技术与GIS技术,以数据库为核心,将图形和属性关联为一体,从生产源头支持测绘成果的信息转换。同时,EPS平台支持基于脚本语言的二次开发技术,用于用户定制开发平台不支持的功能以及处理重复性工作。本文以基础测绘数据生产中道路注记到道路属性的转换为例,介绍EPS脚本技术在测绘生产中的应用。
2 EPS脚本技术
EPS脚本技术与AutoCAD的ActiiveX技术类似,用户能够以VBScript或JScript语言标准为基础,在EPS平台内部以编程的方式来访问EPS提供的对象和方法。与AutoCAD的ActiveX技术不同的是,EPS没有多层次的对象模型体系,它仅提供了SSProcess这个系统缺省定义的对象,该对象是与EPS平台交互的主要入口对象。SSProcess对象暴露了EPS平台预留给用户的所有功能函数,如选择集操作、图形编辑、数据整理等。与AutoCAD的ActiveX开发技术相比,这种面向过程的脚本技术,更加简洁高效,适合于缺少面向对象编程背景知识的广大测绘工作者,使得他们能够将精力集中于具体的业务逻辑实现上。同时,通过EPS脚本提供的外部函数调用功能,能够实现函数级别的代码重用,便于构建具有良好逻辑层次的通用代码库和大型应用模块。
3 道路注记到道路属性的转换方法
3.1 问题背景
在基础地形图中,图形是地物的几何抽象表达,是基础地形图的主要构成元素。同时,为了便于读图判图,文字注记同样是必不可少的,是地物语义级别的表达。以道路为例,道路中心线、道路边线、道路面等几何形体表达了道路的几何位置、空间形态等属性,道路名称注记、材质注记表达了道路的标识、材料等属性。注记的另一个重要作用是GIS属性数据的重要来源和依据,将地形图中的注记内容转为GIS属性数据是GIS属性数据生产的一种快捷有效的方式。但是在EPS平台中,仅提供了闭合地物内注记转换为地物的属性值的功能,对于线性地物,如道路中心线,则没有提供相应的方法实现注记到属性值的转换。必须通过EPS脚本技术进行定制开发。
3.2 问题分析
根据基础地形图成图规范,一个完整的道路名称作为一个道路注记对象存在。道路注记一般以道路中心线为定位基准,以单点注记、曲线注记的方式分布于道路中心线两侧附近。通过对数据源的分析,发现部分道路注记不规范,没有将完整的道路名称作为一个独立的道路注记,而是将道路名称的每个字作为一个道路注记对象。另一方面,道路注记与道路中心线没有内在的逻辑维护其对应关系。解决这两个问题,是将道路注记转为道路中心线属性值的关键,具体方法如下所述。
(1)道路名称注记的预处理
道路名称注记的预处理主要针对两种道路注记问题。第一种,对于具有完整道路名称的注记,为了地图整饰效果,部分道路名称字符之间使用了空格字符,便于注记能够均匀分布在道路中心线上。这种情况的解决办法只需要清除字符之间的空格即可。第二种,对于道路名称每个字符作为一个注记的情况,需要对道路注记进行合并,合并的具体算法是:
①遍历每一个道路名称注记;
②对当前的道路名称注记,如果该注记只有一个字符,转到步骤③;如果该注记大于或等于3个字符,且最后一个字符以“路”、“街”、“道”结束转到步骤④,否则转到步骤①;
③将该字符追加到字符串变量roadName中,判断该字符是否是“路”、“街”、“道”,如果是,则 road-Name即为完整的道路名称注记,保存到对应的道路中心线的属性值中;同时清空roadName内容,转到步骤①,否则直接转到步骤①;
④该注记是完整的道路注记,如果各字符间有空格,清除空格,然后保存到对应的道路中心线的属性值中。
由于道路名称的单个字符注记的字符顺序与注记ID顺序是一致的,因此,可以保证以上算法的正确性。
(2)道路注记与道路中心线的匹配
问题(1)中,“保存到对应的道路中心线的属性值中”的前提是找到道路注记匹配的道路中心线。线状地物与注记的一般匹配过程是:生成线状地物的一定宽度的缓冲区,将线构成面,面内的注记即为与该线状地物匹配的注记。然而,EPS平台并没有提供缓冲区生成算法,因此,无法采用这种方法进行匹配工作。在EPS平台提供的几个有限的空间查询功能函数里,只有SearchNearObjIDs这个函数不需要闭合面的参与,该函数的作用是,将按给定的坐标点、搜索范围、搜索对象类型和编码搜索与坐标点相近的对象。因此,可以以道路注记的定位点作为坐标点,道路注记的定位点与道路中心线的最大距离作为搜索范围,搜索给定注记范围内的道路中心线对象,实现道路注记与道路中心线的匹配。
3.3 程序实现
道路注记到道路属性的转换程序流程图,如图1所示。
利用EPS平台的脚本技术,采用VBScript脚本语言,实现了本文提出的转换算法,功能函数如下所示。其中,变量RoadLabelCodes是道路名称标注编码,变量RoadEntityCodes是道路中心线编码,变量RoadField-Name是道路中心线属性名,变量Range是搜索范围。
图1 道路注记到道路属性的转换程序流程图
4 结语
采用本文提出的转换方法,以edb格式的哈尔滨市1∶1000基础地形图为测试数据进行道路注记到道路属性的转换工作,总的转换正确率可达到95%以上。该方法同样适用于铁路、地下管线等其他线状地物的注记到属性的转换。
[1]北京清华山维新技术开发有限公司.EPS2008地理信息工作站使用说明书[R].2010.
[2]北京清华山维新技术开发有限公司.EPS脚本语言帮助[R].2010.
[3]哈尔滨市勘察测绘研究院.哈尔滨市1∶500 1∶1000 1∶2000基础地理数据分类与代码标准[S].2011.
[4]徐中华,刘万华,余成江.清华山维一体化软件EPS脚本语言的应用[J].城市勘测,2007(6).
[5]沈伟,瞿晓彤.EPS平台数据库在生产实践中的体会[J].现代测绘,2007,30(3).