高华峰
摘要:对已有的1∶1000或者更大比例尺数字地形图进行一定的内业处理,将使放线工作中的横断面测量得到很大简化,本文通过AUTOCAD使用自带程序语言VLISP命令的应用,在地形图的内业工作中,直接提取横断面数据,并生成横断面图。
关键词:测量地形图横断面VLISP
中圖分类号:TP399 文献标识码:A 文章编号:1672-3791(2012)04(c)-0016-02
在实际放线工作中经常要测量横断面并生成横断面图,在测量横断面资料时按照传统的方法,在线路桩点处沿线路垂直方向进行左右测量,记录下来,然后在内业中按照各专业需求生成相应格式的横断面数据,继而生成横断面图。如果在工作中对这种传统的方法改进,会很大地节约外业时间。随着RTK等数字化仪器的广泛使用,其误差可完全满足规范有关横断面的10的限差要求,在测量横断面工作过程中,可不用考虑线路的走向,直接按测地形图的方法沿线路两侧需要的宽度范围内测量地形,然后内业中进行横断面的提取,且可利用程序直接生成横断面图脚本文件。当然如果已有工作区域内的1∶1000或1∶500数字化大比例地形图,我们也可直接从数字化图上进行横断面的内业提取。我们在工作中利用VLISP程序做了个小命令可以直接在内业中实现该需求。下面我们就该命令的实现结合实际放线工作进行阐述。
1地形图中的应用
1.1 关键地形点及特殊地物的处理
在外业工作中按地形走势测取关键地形点,在内业中将外业散点及纵断面面数据展于AUTOCAD中,然后生成三角网。在实际工作中经常遇到路基,堤坝,沟渠等特殊地物,在内业中可根据地形点单独生成三角网,将其颜色改成不同于普通地形点的三角网。
1.2 横断面提取格式设定
在生成的三角网图上开始横断面数据的提取,在本文中我们选取的横断面面格式如下。
桩号,高程。
左侧最远距离,高程。
桩位处距离(0),高程。
右侧最近处距离,高程。
当然也可根据各种需要生成不同的格式文件,将生成横断面数据存储于所测的地形展点图形文件的相应文件夹中。
1.3 对该VLISP命令的简要说明
在实现该功能中利用AUTOCAD自带程序语言VLISP进行了命令的编写。具体命令如下。
ln(strlen wjm)
wjm (substr wjm 1 (- ln 4)))
(setq wjm1 (strcat wjmlj wjm "横断面.txt"))
(setq wjm2 (strcat wjmlj wjm "横断面图.scr"))
(setq zg (getint " 输入横断图间隔: "))
(setq zg1 (rtos zg 2 2))
(setq zh (cdr (assoc 1 (entget (car (entsel " 拾取里程桩号:"))))))
(setq pp1 (getpoint " 拾取该里程点位:"))
(setq y1 (car pp1)
x1 (cadr pp1)
h1 (caddr pp1))
(setq zhgc (rtos h1 2 2))
(setq zhgc1 (rtos (+ h1 zg)))
(setqzhgcw1 (rtos (+ h1 zg 2) 2 2)
zhgcw2 (rtos (+ 0 10) 2 1))
(command "osnap" "nod,nea,center" "")
(setq i 1)
(setq fn1 (open wjm1 "a"))
(setq fn2 (open wjm2 "a"))
(setq zhc " ")
(write-line (strcat zh "," zhgc ) fn1)
(write-line "layer m 横断面左侧 " fn2)
(write-line "layer c 5" fn2)
(write-line(strcat "text m " "-10" "," zhgcw1 " " "2.5" " " zh ) fn2)
(write-line(strcat "text m " zhgcw2 "," zhgcw1 " " "2.5" " " zhgc ) fn2)
(write-line "pline" fn2)
(command "-layer" "m" "横断面左侧" "c" "red" "" "" "")
(while (and (< rq 20111018) (progn (initget 8 "x")
(setq pp2 (getpoint " 从最远点依次指定左侧点:"))
(command pp2)
(if (= ''''list (type pp2))
(progn
(setq yp1 (car pp2))
(setq xp1 (cadr pp2))
(setq hp1 (caddr pp2))
(setq dys (- y1 yp1)
dxs (- x1 xp1)
dhs (- hp1 h1))
(setq s1 (sqrt (+ (* dys dys) (* dxs dxs))))
(setq ss1 (rtos s1 2 2)
gc1 (rtos hp1 2 2))
(setq sss1 (rtos (+ s1 zg) 2 2)
gcc1 (rtos (+ hp1 zg) 2 2))
(setq sjj (strcat ss1 "," gc1))
(setq zsj (strcat sjj ","))
(write-line zsj fn1)
(write-line (strcat "-" ss1 "," gcc1) fn2)
(setq i (+ i 1))
) ) ) ) )
(write-line (strcat "0" "," zhgc) fn1)
(write-line (strcat "0" "," zhgc1 " ") fn2)
(write-line "layer m 橫断面右侧 " fn2)
(write-line "layer c 3" fn2)
(write-line "pline" fn2)
(write-line (strcat "0" "," zhgc1) fn2)
(setq ii 1)
(setq zhc "")
(command "-layer" "m" "横断面右侧" "c" "blue" "" "" "")
(command "pline" pp1 "w" "0""0")
(while (progn (initget 8 "x")
(setq pp3 (getpoint " 从第一点依次指定右侧点:"))
(princ (strcat " ") fn2)
(setq zjwz (list yp2 xp2))
(command "-layer" "m" "间隔注记" "c" "red" "" "" "")
(command "text" "j" "c" zjwz 5 0 zg)
(CLOSE fn1)
(close fn2)
(command "-layer" "s" 0 "" "")
(setvar "cmdecho" oce)
(PRINC)
1.4 横断面数据及横断面图的生成
调试无误后编译为shdm.fas文件,在打开AUTOCAD后执行APPLOAD命令,将shdm.fas文件加载,在加载完成后,直接输入shdm。根据提示先输入成横断面图的间隔,然后依照提示点取要提取的桩号,再选取桩位对应的点位,然后依次从线路左侧最远处开始提取横断面,在左侧数据提取完成后,再按鼠标右键,开始从线路右侧最近点依次提取线路右侧横断面,右侧横断面提取完成后,按右键,开始下一个桩位的提取。在提取中直接选取垂直于线路的三角网的边就行了。我们为了区分,在每个桩位提取完成后,在右侧用蓝色多义线进行了标示。在完成提取后,在AUTOCAD下新建一个横断面图的文件,具体生成横断面文件txt格式如下。
1180+100,1073.25 (桩号,高程)
32.00,1074.02,(左距离,高程)
23.73,1073.76,
10.39,1073.47,
0,1073.25
8.57,1073.12, (右距离,高程)
27.09,1073.25,
再执行“工具-运行脚本”,选取地形展点图形文件所在路径文件夹下相应的脚本文件*.scr,自动生成横断面图。
2结语
通过在地形图中直接提取横断面及生成横断面图,使地形图的测量与横断面的测量一体完成,自动化程度高,节约了外业测量的重复劳动,提高了工作效率。对目前广泛进行的公路水利放线测量具有一定的实用性。
参考文献
[1] GPS-RTK高效横断面测量技术研究[J].重庆交通大学学报(自然科学版).