赵宏喜
(甘肃省水利水电勘测设计研究院有限责任公司,甘肃 兰州 730000)
测绘是一门以数据为基础,通过不同形式的表达方式来体现物体空间关系和属性的综合学科,而测绘断面是一种图纸化的表达方式,断面绘图采用原始采集的中桩坐标,通过计算两点之间的距离和该两点的高程,可以直观地表达地形、地势的变化。通过简单的计算机编程可以轻松实现对大量野外采集地物点坐标的计算,并通过设置阈值和限差实现粗差的探测,将可能出现的数据错误消灭在初始计算阶段。同时可以计算得到断面的桩号和高程数据格式,并根据不同的绘图软件将其整理成绘图格式,即可轻松实现断面图的绘制。Microsoft Excel作为一款以数据处理为主的办公软件,在各行各业的数据统计和分析工作中发挥着极其重要的作用,虽然Microsoft Excel已经集成了数学计算常用的公式和模块,但是对于测绘这样一个数据量大、公式模型复杂的行业来说,很有必要对Microsoft Excel进行有效的二次开发,而Excel VBA则给用户提供了这样的一个开发平台。Visual Basic For Application(VBA)是一款自动化的计算机编程语言,它以Visual Basic(VB)为基础,经过修改并运行在Microsoft Office环境中的应用程序,利用VBA可以为用户定制特殊的自定义解决方案[1]。在Microsoft Excel中编辑公式广泛应用于测量行业,但是在Microsoft Excel公式栏输入特定的计算公式也存在一定的局限性,例如计算表中行列数量有限,不能满足不同规模的测量工程计算,而且在用户使用的过程中误删除行或列都有可能造成之后公式的叠加错误,没有很好的错误预警机制。Excel VBA则不受测量数据数量的限制,而且可以智能检查出测量数据粗差,这一人机交互的双向核实保证了计算结果的准确性和可靠性。本文正是利用Excel VBA的这一优势将所用测量公式内嵌于加载宏中,完成了水利测量中复杂的数据计算和数据文件的导入导出等繁多的操作步骤,不但简化操作程序、提高测量目标数据生产效率,而且更重要的是保证了数据计算结果的可靠性、准确性、规范性以及可延展性。
水利测量作为测量行业的一个重要方向,在国民经济发展和生态建设中起着举足轻重的作用。水利工程计算都要以测量数据为基础,所以测量数据的准确性就是水利设计、施工、运营管理的决定性因素之一。测量断面数据作为水利工程设计中常用的基础依据,主要用来估算土方量、计算库容、计算流量、设计河道防洪标准等。输水管线的横截面,称为横断面,通常以纵断面中心桩为准,在输水中线的垂直方向两侧工程用地范围内,测定其地形截面所得的断面图,据以进行水利施工设计及计算土方量等工作。横断面设计依据:(1)用地宽度,输水管线工程实际需用地的宽度,须依渠道基高、基宽、边沟、边坡及渠道的附属设施等确定,预估保留的土地,依输水路线所经地带的人口、产业、工商业发展及交通等各项因素而定;(2)输水管线宽度,依据输水规模设计占用实地宽度;(3)渠道边坡,依渠道分级、地形状况、地质优劣及稳固性而定;(4)边沟,挖方渠道段及填土高度不足0.5米的渠段均须设置边沟;(5)截水沟,泄水量很大或大挖方平台,均应设置截水沟以防护原有坡面及挖方坡面的稳定。
横断面设计程序集成了水利测量中常用的测量数据处理模块,将不同功能的计算表格集成到一起,使内业处理人员能够方便快捷地找到计算需要的表格,进而规范和统一了不同测绘项目在归档提交时计算表格式的不统一。主要的计算模块(如图1所示):
图1 横断面主要的计算模块
输水管线测量所涉及的路线长度一般较长,短的有几十千米,长的甚至上百千米。如果每一条横断面都用测量仪器到实地实测,工作量非常大且并不切实际,所以一般在测量上使用估测结合实测的方法进行测量。在高差较小的地方使用估测,在高差较大或者地物比较重要的地方使用皮尺或者钢卷尺实测高差,这样就采集了以平距、高差、地物属性形式表示的测量断面原始记录数据。但在已经获得大比例尺地形图的区域可以采用图切坐标和高程形式表示的横断面记录文件,例如在南方CASS软件中通过截取断面线坐标和判读高程的方法来获得断面数据,这种方法已经比较成熟,被多数测绘专业人员推广和使用[2]。
以上两种方法获得的断面记录文件少则几十个,多则成百上千个,如果全部由人工推算的话将花费大量的时间并可能出现公式编辑错误,所以可利用计算机编程批量地将这些测量数据导入到Microsoft Excel表格中进行相应地计算。通过文件批处理解决了这些复杂地机械化操作,本操作程序设计显著提高了内业数据处理速度和精度,从而大大提高了成图效率。同时本程序附带了拓普康全站仪数据转化和三角高程平差格式文件生成两个模块,在实际的测量计算中简单而实用。本程序操作界面使用了人机交互式的风格,使用者只需按照界面提示,流水线式地进行按钮点击操作即可完成计算,模块运行界面设计美观大方。
甘肃省引洮供水工程是具有综合利用功能的大型跨流域调水工程,分为九甸峡水利枢纽和引洮供水工程两部分,受益区总面积1.97万平方千米,惠及甘肃省兰州、定西、白银、平凉、天水5个市辖属的会宁、静宁、榆中、武山、渭源、甘谷、临洮、通渭、陇西、秦安、安定等11个国家扶贫重点县(区),160个乡镇,总人口约425万人,工程分两期建设。引洮二期八干渠自总干末端大山川分水,渠线沿祖厉河与葫芦河的分水岭向北,经会宁县平头川、大沟、土木岘至刘寨结束,线路总长71.782千米,线路以隧洞为主。下设两条分干渠,主要向会宁东部供水。沿线分别通过一分干、二分干向会宁的韩集和掌里两个供水点供水,控制会宁东部16个乡(镇)的全部的城镇人口、工业企业、农村人畜用水,控制灌溉面积9.6万亩。
在引洮二期八干渠工程中应用本程序进行了断面的数据计算工作,简化了测量计算步骤,显著提高了工作效率。引洮二期八干渠工程中明渠和倒虹吸测段均实测了1∶2000比例尺地形图,为断面数据地获取提供了基础数据,内业人员按照设计布置的纵断面线,在地形图上按照坐标、高程的形式截取横断面数据,形成“点名,东坐标,北坐标,高程”的文本文件。该文件是在纯西文输入法状态下编辑,形成一个多条横断面原始文本文件*.txt,文本中间不要有空格,每条断面数据间用4个A隔开。示例如下:依横断面观测顺序顺次输入横断面各点坐标,从第一条横断端点开始,当左侧数据输入完成后,输入横断面中桩数据,然后输入横断面右侧数据,格式为Y或Z(Z代表左侧点,Y代表右侧点),Y坐标,X坐标,H高程等纯数字。0+000代表纵断面上的中桩里程,每条横断面各参数输入完后,最后一行需要输入4个A,表示1条断面数据输入完成,当所有断面数据输入完成后保存退出即可。具体格式如下:
将图切的横断面*.DAT文件全部放在计算表格的同目录下,然后运行程序即可自动完成搜索文件、导入数据、公式计算、统计输出等工作,对复杂繁多的横断面数据处理功效随数据量增加而显著提高,达到事半功倍的效果。针对纵断面上0+000里程桩的横断面进行了示范,程序运行的结果数据(如表1所示):
表1 程序运行结果数据
程序运行结束后,会在原始数据同目录下生成适合不同成图商业软件格式的断面数据,如适合ZDMDraw软件的*.DAT格式文件,适合南方CASS软件的*.HDM文件等,同时会生成断面的条数、长度等统计文件,绘图数据可以在ZDM Draw或南方CASS软件下进行各种比例尺断面图的绘制,绘图生成的横断面图最终样式(如图2所示)。
图2 横断面图最终样式
本程序关键代码如下所示,主要用于计算纵断面某桩号处的横断面数据,如左右距离、高程,并生成特定格式的作图原始数据。限于篇幅,本文只是给出了推算间距的部分程序代码[3,4],如下所示:
本程序基于Excel VBA这一可视化的编程平台完成了对纵横断面数据的处理,采用人机交互式的操作界面使用户能够直观快速操作本程序,大大提高了测绘断面数据处理的效率。本文正是基于将大量的公路、水利、电力、管线等工程定线时的横断面测量数据进行整理、计算、分析,得到最终的成图数据,在很大程度上提高了断面的成图效率和做图精度。由于时间关系,本程序的设计仍然存在一些缺陷,例如,对于加设有弯道要素的纵横断面数据计算无法进行,无法调用Autodesk CAD脚本文件直接进行简单方量断面图的绘制等[5]。对弯道断面数据需要人工计算干预,这也是本程序在以后的工作中需要不断研究提高和补充的部分。考虑到测量坐标计算的边长和实地边长还有部分差值,所以在后续的编程开发中应该考虑边长的投影变形,将高斯反算的边长通过计算当地缩放系数将高斯边长归化到实地边长,这样在实际的施工放样中才能消除由于长度变形引起的误差。