基于ARX的纵横断面数据与设计线位相对定位的实现
2012-02-08王传江
王传江
(上海市测绘院,上海 200063)
1 引言
市政道路工程测量中需要根据设计线位进行地形、纵横断面测量。纵断面测量目的是测定线路中桩处的高程,为线路设计提供基础资料。横断面测量是测定中桩处垂直于中线方向的地形起伏形态,绘制横断面图,为路基设计、计算土石方数量以及施工放边桩之用。目前纵横断面野外测量方法包括全站仪和水准仪法等。
通常提供给设计单位的纵横断面数据是对应每一里程的距离、高程的文本格式,纵横断面数据通常如下:
里程1 高程1
左侧:与中桩距离1高程1与中桩距离2 高程2……
右侧:与中桩距离1高程1与中桩距离2 高程2……
里程2高程2
左侧:与中桩距离1高程1与中桩距离2 高程2……
右侧:与中桩距离1高程1与中桩距离2 高程2……
……
根据纵横断面数据可转换生成设计所要求各种格式的横断面和纵断面数据。
在断面数据检查时,特别是结合地形图对断面数据文本进行对照判读检查时,如路头散点、路面方格水准点、管线的井盖高程点,断面数据与这些特征点数据是否矛盾,不直观。本文基于这一问题,编写了断面数据处理的ARX程序,根据地形图上给定的设计线位,将文本格式的断面数据读入到地形图中,即将各断面高程点展点到地形图上,实现断面点与相应的设计线位相互位置关系一一对应,从而实现每个断面点在地形图中的绝对定位,为断面数据检查提供一种直观方便的方法。
2 程序编制的思路与实现
本软件用AutoCAD的二次开发工具ObjectARX开发,ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。ObjectARX应用程序是一个动态链接库,共享AutoCAD的地址空间,对AutoCAD进行直接函数调用。所以,使用ARX编程的函数的执行速度得以大大提高。ARX类库采用了标准的C++类库的封装形式,这也大大提高了程序的可靠度和效率。
在AutoCAD中将设计线位中线连成为一个PLINE线,加载ARX程序,选择线位中线,根据提示选择要读入的断面数据文件,程序根据断面数据文件中每一里程逐点将断面高程点展点在线位中线DWG文件中。利用AcDb库提供的应用类查询和管理Auto-CAD实体的实体对象。
2.1 线位起点的确定
由于ARX提供的acedEntSel()函数返回的点不一定是线位的起点,本程序用AcDb库提供的应用类函数AcDbCurve通过以下方法获得设计线位的起点坐标。程序如下:
通过比较DIST1与DIST2大小来确定所选择的线位的起始点。
2.2 计算每一里程点的切线
由于PLINE线的复杂性,根据其函数表达式来计算每一点切线将比较复杂,根据里程通过AcDb库函数得到该里程处的坐标,再将里程加上一个微小量,得到该里程处的另一坐标,由两点坐标,可确定该里程处的切线方向。具体程序如下:
2.3 程序的运行
在AutoCAD中加载本程序后界面如图1、图2,读入断面数据后的展点图见图3,叠加地形图的展点图见图4。
图1 加载本程序后启动界面
图2 加载本程序后界面
图3 读入断面数据后的展点图
图4 叠加地形图后的展点图
3 应用与结论
在道路工程测量中,高程测量包括地形散点、路面方格水准、管井标高、纵横断面测量等。纵横断面数据测量是其中工作量很大的一项工作,一条 10 km的道路,涉及纵横断面数据近上万点,由于数据量大,如何保证纵横断面数据与地形散点、路面方格水准、管井标高等匹配,给数据录入和检查带来很大工作量。
利用本程序可以实现纵横断面数据在线位图上的快速展点,结合纵横断面图形,可以直观地了解各断面的走势及数据中的异常点,在道路工程的断面数据检查中,及时发现数据中的错误,给断面数据检查工作带来了方便,本程序已经在中环线浦东段等一些道路工程中进行了应用,收到了较好的效果,在道路工程的数据检查中比较实用。
[1]黄维通.Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2000.
[2]李世国.Auto CAD高级开发技术ARX编程及应用[M].北京:机械工业出版社,1999.
[3]梁雪春,崔洪斌,吴义忠.Autolisp实用教程[M].北京:人民邮电出版社,1998.
[4] 余承飞,方勇.AutoCAD2000二次开发技术(ObjectARX)[M].北京:人民邮电出版社,1999.
[5] 张正禄.工程测量学[M].武汉:武汉大学出版社,2002.
[6]CJJ8-99.城市测量规范[S].