附和导线平差程序[QBASIC]

2024-07-20

附和导线平差程序[QBASIC](精选2篇)

附和导线平差程序[QBASIC] 篇1

附和导线平差程序[QBASIC]

由本人在网络上收集整理

DECLARE FUNCTION DEG!(X!)

DECLARE FUNCTION DMS!(XX!)

DECLARE FUNCTION XCHAR$(XX!, N!)

CLS

PRINT

PRINT “ 附和导线平差程序(2.0R)”

PRINT “ 作者:徐振刚”

PRINT “ 1999年12月31日”

PRINT “功能:本程序可以用来进行一般导线平差计算,包括附和导线、闭合导线和支导线,其中” PRINT “ 闭合导线和支导线需对原始数据进行一定处理。”

PRINT “备注:坐标计算误差≤5mm;角度计算误差≤0.5s”

PRINT

REM N----角度个数(包括已知方位角)

REM M----导线边数

REM H----允许方位角闭合差秒值

REM A----方位角(A(0)为起始方位角)

REM D----边长

REM X,Y----坐标(X1,Y1;X,Y为已知坐标)

REM F0----方位角允许闭合差

REM F1----导线方位角闭合差

REM F3,F4,F----增量闭合差

REM K----导线全长相对闭合差

PRINT “新建数据文件?(Y/N)”

LOCATE 25: PRINT “按 ESC键 返回主菜单.”;TAB(60);DATE$;“ ”;TIME$

DO

YN$ = INKEY$

IF YN$ = “Y” OR TN$ = “y” THEN

RUN “DXPCEDIT.BAS”

ELSEIF YN$ = “N” OR YN$ = “n” THEN

EXIT DO

ELSEIF YN$=CHR$(27)THEN

RUN “MAIN.BAS”

END IF

LOOP

REM ******************************************************************************** CLS

PI = 3.14***93#: PU = 180 / PI

INPUT “请输入数据文件名:(DXPC.DAT)”;FILEIN$

IF FILEIN$ = “" THEN

FILEIN$ = ”DXPC.DAT“

END IF

OPEN FILEIN$ FOR INPUT AS #1

INPUT #1, N, M, H

DIM B(N), D(M), A(N1

A(I)= A(I360

END IF

NEXT I

F0 = H / 3600 * SQR(N1)1)

FOR I = 1 TO N360

END IF

NEXT I

S = 0: X(0)= X1: Y(0)= Y1

FOR I = 1 TO M

S = S + D(I)

X(I)= X(I1)+ D(I)* SIN(A(I)/ PU)

NEXT I

F3 = X(M)Y: F = ABS(SQR(F3 * F3 + F4 * F4))

D = 0

FOR I = 1 TO M

D = D + D(I)

X(I)= X(I)F4 / S * D

NEXT I

REM ********************************************************************************

PRINT ”方位角允许闭合差 F0=+/-“;XCHAR$(DMS(F0), 6)

IF ABS(F1)<= F0 THEN

PRINT ”导线方位角闭合差 F1= “;XCHAR$(DMS(F1), 6);” OK!“

ELSE

PRINT ”导线方位角闭合差 F1= “;XCHAR$(DMS(F1), 6);” OVER LIMIT!“

END IF

PRINT ”相对闭合差:“

PRINT TAB(5);”F3=“;F3, ”F4=“;F4, ”F=“;F, ”K=1/“;S / F

PRINT ”改正后方位角:“

FOR I = 0 TO N1

PRINT #1, TAB(5);”A(“;I;”)=“;XCHAR$(DMS(A(I)), 6)

NEXT I

PRINT #1, ”改正后坐标:“

FOR I = 0 TO M

PRINT #1, TAB(5);”X(“;I;”)=“;XCHAR$(X(I), 4), TAB(30);”Y(“;I;”)=“;XCHAR$(Y(I), 4)NEXT I

PRINT #1, TAB(5);”X(“;M;”)=“;XCHAR$(X(M), 4), TAB(30);”Y(“;M;”)=“;XCHAR$(Y(M), 4)CLOSE #1

REM ******************************************************************************** PRINT

PRINT ”详细数据资料业已备份到 JHFY.OUT。“

PRINT

PRINT ”按 ESC键 返回主菜单...“ DO

LOOP UNTIL INKEY$ = CHR$(27)RUN ”MAIN.BAS“

END

REM 将度分秒转换成度

FUNCTION DEG(X)

D = INT(X)

M = INT((XDD)* 60)

S =(XM / 60)* 3600

IF XX >= 0 THEN

DMS = D + M / 100 + S / 10000

ELSE

DMS =-1 *(D + M / 100 + S / 10000)END IF

END FUNCTION

REM 以字符串形式输出保留 N 位小数的 X FUNCTION XCHAR$(XX, N)

X = ABS(XX)

R = INT(X)

F = INT((X-R)* 10 ^ N +.5)

TEMP$ = MID$(STR$(F), 2)

WHILE LEN(TEMP$)< N

TEMP$ = ”0“ + TEMP$

WEND

TEMP$ = STR$(R)+ ”.“ + TEMP$

IF XX >= 0 THEN

XCHAR$ = TEMP$

ELSE

XCHAR$ = ”-" + MID$(TEMP$, 2)

END IF

END FUNCTION

附和导线平差程序[QBASIC] 篇2

导线测量是控制测量中常用的方法之一, 在导线外业测量完成后, 需要进行导线平差, 以求得每个导线点的坐标值。目前, 测量平差软件颇多, 每种软件都有各自的优点, 但也存在一定的缺陷, 如软件处理结果只有数据, 没有图;或图表分开显示, 效果不直观;或只有平差的最终结果, 不能显示平差的中间计算过程, 不利于用户理解平差原理;也有些先进的测量仪器 (如全站仪) 中嵌入了导线平差程序模块, 除不能显示平差中间计算过程外, 也不能绘图, 尤其是当控制点多, 导线外业测量采取分组作业完成时, 则无法直接使用仪器自带的程序进行平差。

Visual Fox Pro 6.0 (以下简称VFP) 是目前微型计算机上应用最广泛的数据库系统开发工具之一, 它功能强大, 具有可视性和面向对象程序设计的优点。本文尝试采用VFP开发导线平差应用程序, 其界面友好, 用户使用方便, 既能根据不同目的的需要输出相应的处理结果, 又能直接绘制导线图。

二、导线平差内容

导线平差包括平面控制导线平差和高程控制导线平差。根据导线近似平差原理, 平面控制导线平差的主要内容包括: (一) 计算角度闭合差, 判断误差是否超限, 若在允许范围则进行调整 (包括计算角度改正数、残差分配和改正后角度) ; (二) 计算导线边方位角; (三) 计算坐标增量; (四) 计算导线全长闭合差, 判断闭合差是否超限, 若在允许范围则进行调整 (包括计算坐标增量改正值, 残差分配和改正后坐标增量) ; (五) 计算各导线点坐标。

进行角度闭合差调整时, 将闭合差反符号平均分配到各观测角, 剩余误差 (残差) 分配到转折角较大的几个观测角中;进行坐标增量闭合差调整时, 采用与对应边长成正比例的原则计算坐标增量的改正数, 残差分配到边长较大的坐标增量中。导线平差计算公式参见参考文献[3]中有关章节。

高程控制导线平差的主要内容包括:计算两点间高差;计算高差闭合差, 判断误差是否超限, 若在允许范围则进行调整 (包括计算高差改正数、残差分配和改正后高差) ;计算各导线点高程。

三、表单设计

导线平差表单设计如图1所示。

表单中各命令按钮功能包括以下几个方面。

(一) “清空数据”。

用来清除表格中原有数据以及辅助计算数据和导线图。

(二) “导入数据”。

将导线测量外业记录表中各导线点观测数据直接导入表单的表格中。

(三) “增加记录”。

用于直接录入外业测量各导线点观测数据, 它与“导入数据”两者间可视具体条件选用其一。

(四) “删除记录”。

用于删除无用 (或错误) 的导线点记录。

(五) “平差计算”。

完成平面控制和高程控制导线平差的全部计算过程。本模块为“导线平差”程序的核心模块, 程序运行过程中会提示用户确认观测角是“左角”还是“右角”, 并根据计算结果返回闭合差是否超限的信息, 由用户决定是否继续平差。

(六) “数据转储”。

将导线平差结果 (或导线外业测量观测数据) 根据需要保存到指定格式 (*.dbf、*.xls、*.txt) 的文件中。

(七) “打印输出”。

将导线平差结果 (包括角度闭合差计算、调整, 方位角计算, 坐标增量计算, 导线全长闭合差计算、调整等中间过程) 按常规内业计算表格形式预览或送打印机输出。

(八) “设置”。

对导线图进行设置, 包括是否切换界面绘图, 是否显示坐标北向, 是否以红、蓝两色相间显示导线边, 是否显示点号或高程等。

(九) “绘制导线图”。

根据平差结果和用户对图形的设置, 绘制导线平面图。程序允许用户直接在本表单上绘制导线图 (见图1) , 若控制点多, 图形复杂, 程序也允许用户切换到新界面绘图。绘制导线图时可同时显示坐标北向、控制点号或控制点的高程。

(十) “放大”、“缩小”、“清除导线图”。

分别用于放大导线图、缩小导线图和清除导线图。

四、表单方法

由于角度观测单位是度、分、秒, 为便于角度的录入和计算输出, 为表单添加dotoshuo和shuotodo两个方法。前者的功能是将角度单位度、分、秒转换为以度为单位的小数形式;后者是将以度为单位的小数再转换成度、分、秒。

(一) dotoshuo方法的代码

(二) shuotodo方法的代码

(限于篇幅, 表单中其他控件的事件代码略)

五、应用举例

表1为单一附合导线外业观测数据, 其中A、B、C、D为已知点, 导线图参见图1中的导线略图。

操作步骤: (一) 单击“增加记录”按钮, 将各导线点观测数据依次录入 (本程序允许观测角为左角, 也可以为右角) 表格中, 若已建立外业测量记录表文件, 则按“导入数据”将指定文件中全部数据直接导入表格中。角度录入时, 度分秒之间用“.”间隔。 (二) 单击“计算平差”按钮, 可完成平面坐标平差和高程平差。 (三) 单击“设置”按钮, 根据实际需要完成对导线图的设置。 (四) 单击“绘制导线图”按钮, 可按用户的设置生成平差后的导线图。 (五) 若要预览或打印则按“打印输出”按钮;若要保存平差结果, 则按“数据转储”按钮, 指定文件名, 选择文件格式和目录即可存盘。 (六) 对录入错误的记录, 按“删除记录”按钮可将其删除。

六、结束语

(一) 应用本程序进行导线平差, 其数据录入、平差计算、成果保存、输出以及绘制导线图均可在同一界面完成, 操作方便, 界面友好, 效果直观。其处理成果可根据不同需求生成相应格式文件, 由其生成的txt文件通过文本编辑器转换成dat文件后, 便可在绘图软件CASS中展点、绘图。

(二) 本程序既可将平面和高程平差同时进行, 也可单独对平面坐标进行平差。在四等以下地形图测绘的首级控制及图根控制测量中均可使用。

(三) 本程序能显示导线平差的中间计算过程和最终处理结果 (按表单中的“打印输出”按钮即可显示报表) , 有助于用户理解导线近似平差原理, 可作为测量教学的重要辅助工具, 有较大的实用价值。

(四) 本程序既可用于附合导线平差 (包括定向点坐标已知和未知两种情况) , 也可用于闭合导线平差。限于篇幅, 本文仅以单一附合导线平差为例介绍了其应用, 对于闭合导线只需按规定格式、顺序录入观测记录即可。

参考文献

[1]候建国.三维导线平差程序设计[J].东北测绘, 2003.

[2]黎升洪.Visual FoxPro面向对象程序设计教程[M].北京:科学出版社, 2004.

[3]卞正富.测量学[M].北京:中国农业出版社, 2005.

[4]袁泽喜.导线平差方法的应用与分析[J].西部探矿工程, 2005.

[5]陈传胜.测量学[M].武汉:武汉测绘科技大学出版社, 1999.

上一篇:安全罚款听证申请书下一篇:校庆志愿者心得

本站热搜