导线网平差
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
导线网平差
'**************************************** ***************************************** **
' 本程序用于单一附(闭)合导线严密平差计算,采用按角度条件平差法。以方向观测值中'误差的先验值作为单位权中误差。计算结果可求得各待定点的坐标平差值及其点位精度Mx,My,
'及M,并计算出各待定点误差椭圆元素E,F,Z '
'参考文献:郭久训.《控制网平差程序设计》北京:原子能出版社,2004.8
'
'平差数据来源:潘正风等.《数字测图原理与方法》武汉大学出版社186页表6-5
'
'等级:所用平差数据为首级图根导线数据(精度很不高)。本程序中写出了方位角和导线全长相对闭合差的判
'别,但考虑到程序的通用性,将这些限差判断当作了注释处理,而不实际运行。
'
'程序不足:没有导线网的图形表达。
'****************************************
*****************************************
**
Private i%, j%, n%, tc#, tb#, B_x!, B_y!, e1!,
e2!, m!, m0#, z#, aa As Boolean, bb As Boolean,
cc As Boolean ',dd As Boolean
Private Naa#(2, 2), Naa逆#(2, 2), W#(2),
K#(2), qq#(2), fx#(2), fy#(2)
Private A#(), Q#(), V#(), C#(), mx#(), my#(),
mk#(), e#(), f#(), zz#()
Private Po() As Point
'文件格式说明:
'文件格式详见文件"平差数据.txt"
'
Private Sub 打开文件_Click()
'打开文件
Dim ff$, temp$, A_name$, A_x!, A_y!,
A_l#, A_s!, B_name$, B_l#, C_name$, C_x!,
C_y!, D_name$, D_x!, D_y!
Form1.Cls '清屏
CommonDialog1.DialogTitle = "打开数据
文件"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
'出错处理
On Error GoTo FileErr
ff = CommonDialog1.FileName 'ff是文件路径名
Open ff For Input As #1 '以顺序文件方式打开文件,使用input
Line Input #1, temp '读取文件中的说明语句
Line Input #1, temp '读取文件中的说明语句
Line Input #1, temp '读取文件中的说明语句
Input #1, n '读取n,n为(测站数-1)
ReDim Po(n) As Point '定义Po(n),其中Po(0)存A点数据,Po(n)存B
点数据,Po(1)到Po(n-1)存n-1个未知点数据。
Line Input #1, temp '读取文件中的说明语句
Line Input #1, temp '读取文件中的说明语句
Input #1, m, e1, e2 '读取先验方向观测值中误差m,测距仪固定误差
e1,比例误差e2
Line Input #1, temp '读取文件中的说明语句
Line Input #1, temp '读取文件中的说明语句
Input #1, C_name, C_x, C_y '读取已知点C
Input #1, A_name, A_x, A_y, A_l, A_s
'读取已知点A
For i = 1 To n - 1
'读取n-1个未知点
Input #1, Po(i).name, Po(i).l,
Po(i).s
Next i
Input #1, B_name, B_x, B_y, B_l '读取已知点B
Input #1, D_name, D_x, D_y '读取已知点D
Close #1
tc = ZBiaoFSuan(C_x, C_y, A_x, A_y)
'坐标反算,求点C到A的坐标方位角,并记作tc,
单位是度
tb = ZBiaoFSuan(B_x, B_y, D_x, D_y)
'坐标反算,求点B到D的坐标方位角,并记作tb,
单位是度
Po(0).name = A_name: Po(0).x = A_x:
Po(0).y = A_y: Po(0).l = A_l: Po(0).s = A_s
'Po(0)存A点数据
Po(n).name = B_name: Po(n).x = B_x:
Po(n).y = B_y: Po(n).l = B_l 'Po(n)存B点数据
For i = 0 To n
Po(i).l = deg(Po(i).l) '将观测方向左角的单位度分秒化作度
Next i
ReDim Q#(2 * n), A#(2, 2 * n), V#(2
* n), C#(1, 2 * n - 2), mx#(n - 1), my#(n -
1), _
mk#(n - 1), e#(n - 1), f#(n - 1),
zz#(n - 1) '变量重新定义
bb = True
MsgBox "文件已成功打开", , "提示"
显示平差数据 ff
Exit Sub
FileErr:
MsgBox "您的文件未打开或打开的文件
格式有误!注意:请重新运行本程序!!", , "
提示"
End Sub