地形图换带后图元属性匹配
2012-06-29吴远忠
吴远忠
(福建省国土测绘院,福建 厦门 361012)
1 引言
在福建省某市近80 km21∶500的大比例尺数字化地形图测量任务中,由于该市刚好位于国家3°带的边缘位置,地理位置经度在119°附近。该市以往的工程测量为防止变形过大和测量资料实地方便利用都采取中央子午线为119°。这就和国家的标准3°带不统一,属于独立坐标系。提交给省里的是按国家3°带的测量成果,而地方国土局需要的是变形比较小的独立坐标系成果。数字化地形图在经过换带到国家3°带后所有的高程点和控制点由于软件原因其所对应的高程Z值这一块属性都变成了0。这个图如果不处理,将在以后的使用过程会出现明显的偏差,如缩编后所有的高程值图面都显示0值,不能计算土方量,不能做一些断面图等一切和高程值有关系的操作。如何高精度地保证在CASS绘图软件下换带后的高程点和控制点代表高程属性的Z值不丢失,且能保持高程点,控制点注记位置换带前已经整饰好的状态,将是本文研究的内容。由于高程点和控制点处理步骤基本相同,本文将重点就高程点Z值匹配简介如下。
2 高程点处理分析
2.1 高程点处理基本方法
80 km2的数字化地形图主要是通过两种方式获得,第一种:由于之前的发展需要,本测区已经测量过差不多20%左右的零散数字化地形测量任务,坐标系统中央子午线为119°。为了节约成本,这部分主要采取的是套用老图,再外业巡视对其中变化大的地方进行修补测绘处理。第二种:对以往没有进行过测绘的区域投入作业人员利用全站仪进行全野外数字化地形图测绘。
(1)新测地形图部分
根据大比例尺数字化地形图规范在CASS成图软件中如果比例尺是1∶500则图面高程文字注记将保留到小数点后2位,1∶1 000则图面高程点保留位数为1位,但是高程点对应的内部Z值还是外业操作时仪器所设置的位数,一般为小数点后3位。在图形经过换带后,高程点点位对应的特性表中的Z值变成了0。如何将这个Z值恢复到采点时候的真实值,也就是换带前的值。有三种方法可以采用。
第一种:换带前,将高程点输出到文件,高程点文件进行换带。将图形换带,把换带后图形中的高程点删除掉,然后将换带后高程点文件导入到图形中。
第二种:将图形换带后利用CASS中自带的命令“根据高程点图面注记”修改高程值,使得高程点对应的点位的Z值不为0。
第三种:将换带前的高程值输出到文件并换带,再将图形换带,然后利用程序使高程文件和图形中对应高程点位图元进行匹配。
这三种方法比较:第一种方法虽然可以完整保持高程点原属性,但高程点重新导入后压盖图面的现象需重新处理,对80 km2的总图和90几个街坊图的图面美观处理是需要大量时间。拖动几千万个高程点这样大的工作量如果3个人,少则需要差不多一个月的时间,耗时耗力。第二种方法是在不改变图面注记的情况下来处理,这种方法虽然可以省去图面高程点注记压盖处理的工作量,但却存在不可忽视的弊端。①高程点的高程值属性精度有损失,这种方法主要是靠高程点位和其对应的注记文字的编组关系来恢复其属性值,所以恢复的程度和图面高程注记的位数有关系,1∶500的图只能恢复到小数点后2位。1∶1 000的图只能恢复到小数点后1位。相对于外业测量采点和换带前图形的高程点精度损失有点大。如果该图用于以后对高程点精度要求严格的操作则会有不容忽视的影响。②这种方法主要是利用高程点点位和其对应注记的编组关系来实现,如果文字注记和其对应点位编组关系丢失(如很多老图),则利用该命令不能恢复高程值。第三种方法则弥补了前两种方法的缺点,该方法主要是利用高程点文件进行匹配,所以:①不会对原图面高程注记产生任何移动现象,原封不动地利用了原图的图面高程注记文字的整饰效果。②不会损失高程点的高程值位数精度,保证了换带后高程点内部属性和原采点精度的统一。③和高程与其对应注记文字注记是否编组没关系,只要换带前的图形中高程点点位的内部属性Z值非异常即可。由此可见第三种方法是一种比较理想的处理方法。
(2)直接套用老图部分:
由于绘图软件,绘图方式和现在有所不同,在图形转换到CASS后导致图形中高程点和控制点点位对应的Z值属性都是0,高程点点位和注记的也没有编组关系。经过业主方的认可,这部分单独处理,根据其对应的文字注记对其Z值进行恢复,高程点Z值精度和图面注记的位数有很大关系,相对于新测部分高程点精度下降了一个等级。对于这一部分高程点处理可以基于以下思路:由于地形图图面整饰,每个高程点注记不一定和其对应点位的相对位置关系一成不变。所以在处理过程中需要提取高程点点位的坐标,然后以此坐标为基点,在一定的框选范围内搜索其内的注记文字,如果搜索到一个文字则将该文字的内容赋值给点位对应的Z值属性,更新图元;如果没搜索到或者搜到到2个及以上则该高程不予处理,分色显示等待手工处理。在这个处理过程中最主要的一个问题就是搜索范围的选择,如果选择不合适则可能导致点位和文字注记的匹配混乱。基于这样的考虑,可以纵观全图选择一个合适的尺寸,这个尺寸要保证处理过的高程点100%的正确性。按照规范1∶500地形图图面高程点的整饰要求,一般只要框选尺寸合理,不会造成点位和文字注记的匹配混乱现象。
2.2 高程点和其注记对应的CASS内部属性编码组
由于图形都是在CASS中进行处理的,这个时候我们就需要借助LISP程序来进行程序开发处理,所以需要了解处理对象对应的CASS内部编码组;
高程点位对应的内部编码组:
上面高程点的内部编码组属性表中518143.0 2.86927e+006这两个数值代表的就是高程点点位对应的平面坐标值,509.2025就是此高程点实际的高程值也就是存储在该点特性表Z值中对应的数值。
高程文字注记对应的内部编码组:
上面内部编码组属性表中的(1."509.20"),其中509.20为其文字注记对应的属性值,518143.0 2.86927e+006这两个数值代表的是文字注记的左下角平面坐标值。
3 高程点处理的基本思路
3.1 基础图件检查
(1)新测地形图
由于此程序和高程点对应的点图元有关系,主要是提取高程点对应点位的属性值,和注记没关系。这就要求我们必须保证未转换前的图的高程点位内部属性的正确完整性,也就是要求点位对应Z值的正确性。在数字化地形图绘制过程中,由于捕捉,移动等操作经常会导致高程点对应的Z值是0或者负值的现象发生,而这种现象不会体现在其对应的注记上,比较难以发现。为了避免这种情况,只有在处理前通过编写程序gcjc.lsp,使得Z值为0的高程分色分层显示,然后对应的去修改其属性值。
通过2.2中高程点点位内部编码组,由于其中的“(0."INSERT")(8."高程注记层")(2."GC200")“这几个组合条件可以唯一代表一个高程点点位,我们在这个条件下通过编写程序在整个总图中检索所有高程点的Z值,如果有异常值,则将该高程点点位分色分层显示,并标记以错误标记,便于错误整改。
(2)套用老图部分
这部分图需要对图形文件进行检查,保证整个图面高程点点位属性正确,高程点文字注记高度无异常等。
3.2 高程点点位Z值的匹配处理
为了保证移动或者换带后高程点的内部属性不丢失,保证其最重要的表示高程值的Z值不发生变化,基于2.2中高程点对应的属性编码组,可以基于这样思路,只要能够获得一个高程点点位未改变以前的Z值,然后再替换其转换后对应的Z值编码组,最后对其图元进行更新就可以了。基于上边的思路可以通过下列方法进行实现。
(1)新测地形图
①在数字化地形图未移动或者换带前,先将数字化地形图导入到CASS软件中,利用2.2中编写的程序生成一个高程点DAT文件,这个文件中保存着图面高程点信息,包括每个高程点的序号,平面坐标,高程值。如图1所示。
图1 高程点数据文件
②接下来要做的就是利用CASS软件中数据菜单中的换带命令将刚才生成的高程点数据文件进行换带。再用同样的方法将地形图进行换带。选中控制点对应的点位显示特性发现其中的Z值变成了0,如图2所示。
图2 高程点点位特性表
最后以换带后的高程点数据文件和数字化地形图为基础,利用编写好的xcgcd.lsp程序从高程点数据文件的第一行开始,提取其平面坐标、高程值。然后利用此平面值在CASS图面内以一定的容差范围内进行搜索。搜索到匹配的高程点点位后,利用文件中的高程值替换高程点点位对应的编码组中的高程部分。然后更新此高程点,即可完成Z值的匹配工作。
(2)套用老图部分
①高程点点位和其对应的文字注记相对关系
图3 高程点点位和其对应注记
如上图所示经过图面整饰后图形高程点点位和其对应注记相对位置关系非一成不变。由于通过LISP的ssget命令进行框选文字,只要该文字的左下角坐标在框选的范围即可选中该文字。由此可见框选范围的选择和点位位置以及注记文字的左下角坐标有很大关系。
②关于框选范围的确定,可以纵观全图取一个比较合理的范围。如图3所示的注记和点位的相对关系,可以看出当注记位于点位的左上角,左下角的时候点位和注记的左下角相对距离最远。所以框选范围的左下角,左上角坐标可以参照注记位于点位左下角和左上角时候其对应的文字左下角坐标,右上角坐标的确定可以纵观总图从高程点点位向右偏移一定距离。主要是要综合全图考虑,选择一个最佳的框选范围尺寸。
③在框选范围确定了以后,可以编制程序ttgcd.lsp对套图部分整个图面中的高程点进行处理。在处理过程中,对于处理过的高程点程序会自动将其剪切到GCD层,如果搜索框内出现两个及以上的文字注记或者搜索不到文字则不做处理,保留在原层。
④处理完毕后关掉GCD层,图面上剩下零散的几个高程点及注记的就是程序没办法处理掉的,这些高程点可以通过手工进行手动处理。
3.3 程序源代码(由于篇幅所限,仅列新测图部分高程点处理主程序的部分代码)
4 具体处理流程
(1)基础数据准备
把总图高程点分新测地形图和套用老图部分来进行处理。对于分开的两部分高程点按3.1中的要求进行基础图件的检查和整理。
(2)新测图形处理前的高程点数据文件生成
利用CASS软件“工程应用”菜单下的“高程点生成数据文件”命令对图面的高程点生成对应的高程点数据文件。对生成的文件利用CASS中的“数据”菜单下的“坐标换带功能”对高程点数据文件进行换带处理。
(3)图形的换带和Z值的匹配
逐个对新测部分和套图部分的总图,街坊图利用CASS中的“坐标换带”功能对图形进行换带处理。
对于新测图形Z值匹配:
在CASS中加载xcgcd.lsp程序,程序会提示选择图形对应的高程点坐标文件,选择其对应的数据文件后程序会自动从文件的第一行开始在一定的容差范围内对图面进行搜索,搜索到匹配的高程点图元后对其内部编码组中的Z值部分进行修改,然后更新图元达到点位Z值的恢复。
对于套图图形Z值匹配:
纵观全图确定一个相对于高程点点位的框选范围,利用ttgcd.lsp对整个图进行处理。剩余零星的高程点由于缺少注记或者注记点位置太过特殊程序无法自动处理则需要进行手动逐个处理。本次15 km2的老图高程点利用程序处理后,剩下不到30个点由于没有注记或者点位和其对应文字注记位置太过悬殊需要进行手动处理。由此可见处理效果很好。
(4)结果检查
利用编写好的gcjc.lsp程序对处理后的高程点进行一次全面检查,确保结果万无一失。
(5)图形最终整理
把处理后的新测图的高程点和套合图高程点进行合并和图层整合。
(6)控制点的处理
控制点的处理主要包括图根点、GPS点的处理,处理方法和高程点处理步骤和方法基本一致。需要注意的问题主要是:①套图部分控制点处理的时候框选范围要根据控制点高程注记的位置进行设置。②处理之前高程点需要和控制点分离进行单独处理,防止和误用高程点对应的注记。
5 小结
通过以上步骤既检查了原图的高程点异常值情况,又可以在保证高程点精度的前提下轻松地对总图和街坊图中几千万个高程点进行处理,免去了高程点注记一个个拖动修饰图面的繁琐工作。
[1]黎新懿,赵景亮.Visual LISP开发AutoCAD 2004应用程序[M].北京:科学出版社,2003.
[2]周明.Visual LISP程序设计及其应用教程[M].上海:上海科学技术文献出版社,2008.
[3]蒋辉,潘庆林,刘三枝.数字化测图技术及应用[M].北京:国防工业出版社,2006.
[4]中国国家标准化管理委员会发布.国家基本比例尺地图编绘规范[S].2008.
[5]FCB001-2005.福建省1∶500 1∶1000 1∶2000基本比例尺数字地形图测绘技术规定[S].