有谁知道单闭合(附和)导线平差原理(计算方法)的请贴一贴
好几个星期一直在网络上找 单闭合导线平差 的计算方法,发现了不少程序,但是都没有公开代码的,我打算自己写一个,书上又没有发现导线平差的例子,请高手们给点提示,或者程序代码,或者相关链接,谢谢了先K2136<BR>K2137,89.0048,109.527<BR>HD013,183.0202,158.051<BR>HD057,176.4114,177.647<BR>HD058,199.0734,179.084<BR>HD059,164.5212,167.353<BR>HD038,179.2100,137.561<BR>K2129,267.5430<BR>K2128<BR> 请找武大(原武测)编的《测量学》 网上收集的qbasic程序!没有试过是否正确!DECLAREFUNCTIONDEG!(X!)
DECLAREFUNCTIONDMS!(XX!)
DECLAREFUNCTIONXCHAR$(XX!,N!)
CLS
PRINT" 附和导线平差程序(2.0R)"
PRINT" 作者:徐振刚"
PRINT" 1999年12月31日"
PRINT"功能:本程序可以用来进行一般导线平差计算,包括附和导线、闭合导线和支导线,其中"
PRINT" 闭合导线和支导线需对原始数据进行一定处理。"
PRINT"备注:坐标计算误差≤5mm;角度计算误差≤0.5s"
PRINTREMN ----角度个数(包括已知方位角)
REMM ----导线边数
REMH ----允许方位角闭合差秒值
REMA ----方位角(A(0)为起始方位角)
REMD ----边长
REMX,Y ----坐标(X1,Y1;X,Y为已知坐标)
REMF0 ----方位角允许闭合差
REMF1 ----导线方位角闭合差
REMF3,F4,F----增量闭合差
REMK ----导线全长相对闭合差PRINT"新建数据文件?(Y/N)"
LOCATE25:PRINT"按ESC键返回主菜单.";TAB(60);DATE$;" ";TIME$
DO
YN$=INKEY$
IFYN$="Y"ORTN$="y"THEN
RUN"DXPCEDIT.BAS"
ELSEIFYN$="N"ORYN$="n"THEN
EXITDO
ELSEIFYN$=CHR$(27)THEN
RUN"MAIN.BAS"
ENDIF
LOOP
REM********************************************************************************
CLS
PI=3.141592653589793#:PU=180/PI
INPUT"请输入数据文件名:(DXPC.DAT)";FILEIN$
IFFILEIN$=""THEN
FILEIN$="DXPC.DAT"
ENDIF
OPENFILEIN$FORINPUTAS#1
INPUT#1,N,M,H
DIMB(N),D(M),A(N-1),X(M),Y(M)
INPUT#1,X1,Y1,X,Y
FORI=0TON
INPUT#1,B(I)
B(I)=DEG(B(I))
NEXTI
FORI=1TOM
INPUT#1,D(I)
NEXTI
CLOSE#1
REM********************************************************************************
A(0)=B(0)
FORI=1TON-1
A(I)=A(I-1)+B(I)+180
IFA(I)>360THEN
A(I)=A(I)-360
ENDIF
NEXTI
F0=H/3600*SQR(N-1):F1=A(N-1)-B(N)
V=-1*F1/(N-1)
FORI=1TON-1
A(I)=A(I)+V*I
IFA(I)>360THEN
A(I)=A(I)-360
ENDIF
NEXTIS=0:X(0)=X1:Y(0)=Y1
FORI=1TOM
S=S+D(I)
X(I)=X(I-1)+D(I)*COS(A(I)/PU)
Y(I)=Y(I-1)+D(I)*SIN(A(I)/PU)
NEXTI
F3=X(M)-X:F4=Y(M)-Y:F=ABS(SQR(F3*F3+F4*F4))
D=0
FORI=1TOM
D=D+D(I)
X(I)=X(I)-F3/S*D
Y(I)=Y(I)-F4/S*D
NEXTI
REM********************************************************************************
PRINT"方位角允许闭合差 F0=+/-";XCHAR$(DMS(F0),6)
IFABS(F1)<=F0THEN
PRINT"导线方位角闭合差 F1= ";XCHAR$(DMS(F1),6);" OK!"
ELSE
PRINT"导线方位角闭合差 F1= ";XCHAR$(DMS(F1),6);" OVERLIMIT!"
ENDIF
PRINT"相对闭合差:"
PRINTTAB(5);"F3=";F3,"F4=";F4,"F=";F,"K=1/";S/F
PRINT"改正后方位角:"
FORI=0TON-1
PRINTTAB(5);"A(";I;")=";XCHAR$(DMS(A(I)),6)
NEXTI
PRINT"改正后坐标:"
FORI=0TOM
PRINTTAB(5);"X(";I;")=";XCHAR$(X(I),4),TAB(30);"Y(";I;")=";XCHAR$(Y(I),4)
NEXTI
PRINTTAB(5);"X(";M;")=";XCHAR$(X(M),4),TAB(30);"Y(";M;")=";XCHAR$(Y(M),4)OPEN"DXPC.OUT"FOROUTPUTAS#1
PRINT#1," 导线平差"
PRINT#1,TAB(25);DATE$,TIME$
PRINT#1,
PRINT#1,"方位角允许闭合差 F0=+/-";XCHAR$(DMS(F0),6)
IFABS(F1)<=F0THEN
PRINT#1,"导线方位角闭合差 F1= ";XCHAR$(DMS(F1),6);" OK!"
ELSE
PRINT#1,"导线方位角闭合差 F1= ";XCHAR$(DMS(F1),6);" OVERLIMIT!"
ENDIF
PRINT#1,"相对闭合差:"
PRINT#1,TAB(5);"F3=";F3,"F4=";F4,"F=";F,"K=1/";S/F
PRINT#1,"改正后方位角:"
FORI=0TON-1
PRINT#1,TAB(5);"A(";I;")=";XCHAR$(DMS(A(I)),6)
NEXTI
PRINT#1,"改正后坐标:"
FORI=0TOM
PRINT#1,TAB(5);"X(";I;")=";XCHAR$(X(I),4),TAB(30);"Y(";I;")=";XCHAR$(Y(I),4)
NEXTI
PRINT#1,TAB(5);"X(";M;")=";XCHAR$(X(M),4),TAB(30);"Y(";M;")=";XCHAR$(Y(M),4)
CLOSE#1
REM********************************************************************************
PRINT"详细数据资料业已备份到JHFY.OUT。"
PRINT"按ESC键返回主菜单..."
DO
LOOPUNTILINKEY$=CHR$(27)
RUN"MAIN.BAS"
ENDREM将度分秒转换成度
FUNCTIONDEG(X)
D=INT(X)
M=INT((X-D)*100)
S=INT((X-D-M/100)*1000000)/100
DEG=D+M/60+S/3600
ENDFUNCTIONREM将度转换成度分秒
FUNCTIONDMS(XX)
IFXX<0THEN
X=-XX
ELSE
X=XX
ENDIF
D=INT(X)
M=INT((X-D)*60)
S=(X-D-M/60)*3600
IFXX>=0THEN
DMS=D+M/100+S/10000
ELSE
DMS=-1*(D+M/100+S/10000)
ENDIF
ENDFUNCTIONREM以字符串形式输出保留N位小数的X
FUNCTIONXCHAR$(XX,N)
X=ABS(XX)
R=INT(X)
F=INT((X-R)*10^N+.5)
TEMP$=MID$(STR$(F),2)
WHILELEN(TEMP$)<N
TEMP$="0"+TEMP$
WEND
TEMP$=STR$(R)+"."+TEMP$
IFXX>=0THEN
XCHAR$=TEMP$
ELSE
XCHAR$="-"+MID$(TEMP$,2)
ENDIF
ENDFUNCTION 各个学校的《测量学》版本非常多,随便找一本看看就明白了。 什么意思?
页:
[1]