明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6416|回复: 5

有谁知道单闭合(附和)导线平差原理(计算方法)的请贴一贴

[复制链接]
发表于 2004-9-5 10:06 | 显示全部楼层 |阅读模式
好几个星期一直在网络上找 单闭合导线平差 的计算方法,发现了不少程序,但是都没有公开代码的,我打算自己写一个,书上又没有发现导线平差的例子,请高手们给点提示,或者程序代码,或者相关链接,谢谢了先
发表于 2004-9-8 17:12 | 显示全部楼层
K2136
K2137,89.0048,109.527
HD013,183.0202,158.051
HD057,176.4114,177.647
HD058,199.0734,179.084
HD059,164.5212,167.353
HD038,179.2100,137.561
K2129,267.5430
K2128

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-9-13 21:29 | 显示全部楼层
请找武大(原武测)编的《测量学》
发表于 2004-9-13 21:44 | 显示全部楼层
网上收集的qbasic程序!没有试过是否正确!
  1. DECLARE  FUNCTION  DEG!  (X!)
  2. DECLARE  FUNCTION  DMS!  (XX!)
  3. DECLARE  FUNCTION  XCHAR$  (XX!,  N!)
  4. CLS
  5. PRINT
  6. PRINT  "                                                      附和导线平差程序(2.0R)"
  7. PRINT  "                                                                作者:徐振刚"
  8. PRINT  "                                                              1999年12月31日"
  9. PRINT  "功能:本程序可以用来进行一般导线平差计算,包括附和导线、闭合导线和支导线,其中"
  10. PRINT  "            闭合导线和支导线需对原始数据进行一定处理。"
  11. PRINT  "备注:坐标计算误差≤5mm;角度计算误差≤0.5s"
  12. PRINTREM  N            ----角度个数(包括已知方位角)
  13. REM  M            ----导线边数
  14. REM  H            ----允许方位角闭合差秒值
  15. REM  A            ----方位角(A(0)为起始方位角)
  16. REM  D            ----边长
  17. REM  X,Y        ----坐标(X1,Y1;X,Y为已知坐标)
  18. REM  F0          ----方位角允许闭合差
  19. REM  F1          ----导线方位角闭合差
  20. REM  F3,F4,F----增量闭合差
  21. REM  K            ----导线全长相对闭合差PRINT  "新建数据文件?(Y/N)"
  22. LOCATE  25:  PRINT  "按  ESC键  返回主菜单.";  TAB(60);  DATE$;  "    ";  TIME$
  23. DO
  24.   YN$  =  INKEY$
  25.   IF  YN$  =  "Y"  OR  TN$  =  "y"  THEN
  26.     RUN  "DXPCEDIT.BAS"
  27.   ELSEIF  YN$  =  "N"  OR  YN$  =  "n"  THEN
  28.     EXIT  DO
  29.   ELSEIF  YN$=CHR$(27)  THEN
  30.     RUN  "MAIN.BAS"
  31.   END  IF
  32. LOOP
  33. REM  ********************************************************************************
  34. CLS
  35. PI  =  3.141592653589793#:  PU  =  180  /  PI
  36. INPUT  "请输入数据文件名:(DXPC.DAT)";  FILEIN$
  37. IF  FILEIN$  =  ""  THEN
  38.   FILEIN$  =  "DXPC.DAT"
  39. END  IF
  40. OPEN  FILEIN$  FOR  INPUT  AS  #1
  41.   INPUT  #1,  N,  M,  H
  42.   DIM  B(N),  D(M),  A(N  -  1),  X(M),  Y(M)
  43.   INPUT  #1,  X1,  Y1,  X,  Y
  44.   FOR  I  =  0  TO  N
  45.     INPUT  #1,  B(I)
  46.     B(I)  =  DEG(B(I))
  47.   NEXT  I
  48.   FOR  I  =  1  TO  M
  49.     INPUT  #1,  D(I)
  50.   NEXT  I
  51. CLOSE  #1
  52. REM  ********************************************************************************
  53. A(0)  =  B(0)
  54. FOR  I  =  1  TO  N  -  1
  55.   A(I)  =  A(I  -  1)  +  B(I)  +  180
  56.   IF  A(I)  >  360  THEN
  57.     A(I)  =  A(I)  -  360
  58.   END  IF
  59. NEXT  I
  60. F0  =  H  /  3600  *  SQR(N  -  1):  F1  =  A(N  -  1)  -  B(N)
  61. V  =  -1  *  F1  /  (N  -  1)
  62. FOR  I  =  1  TO  N  -  1
  63.   A(I)  =  A(I)  +  V  *  I
  64.   IF  A(I)  >  360  THEN
  65.     A(I)  =  A(I)  -  360
  66.   END  IF
  67. NEXT  IS  =  0:  X(0)  =  X1:  Y(0)  =  Y1
  68. FOR  I  =  1  TO  M
  69.   S  =  S  +  D(I)
  70.   X(I)  =  X(I  -  1)  +  D(I)  *  COS(A(I)  /  PU)
  71.   Y(I)  =  Y(I  -  1)  +  D(I)  *  SIN(A(I)  /  PU)
  72. NEXT  I
  73. F3  =  X(M)  -  X:  F4  =  Y(M)  -  Y:  F  =  ABS(SQR(F3  *  F3  +  F4  *  F4))
  74. D  =  0
  75. FOR  I  =  1  TO  M
  76.   D  =  D  +  D(I)
  77.   X(I)  =  X(I)  -  F3  /  S  *  D
  78.   Y(I)  =  Y(I)  -  F4  /  S  *  D
  79. NEXT  I
  80. REM  ********************************************************************************
  81. PRINT  "方位角允许闭合差    F0=+/-";  XCHAR$(DMS(F0),  6)
  82. IF  ABS(F1)  <=  F0  THEN
  83.   PRINT  "导线方位角闭合差    F1=      ";  XCHAR$(DMS(F1),  6);  "              OK!"
  84. ELSE
  85.   PRINT  "导线方位角闭合差    F1=      ";  XCHAR$(DMS(F1),  6);  "              OVER  LIMIT!"
  86. END  IF
  87. PRINT  "相对闭合差:"
  88. PRINT  TAB(5);  "F3=";  F3,  "F4=";  F4,  "F=";  F,  "K=1/";  S  /  F
  89. PRINT  "改正后方位角:"
  90. FOR  I  =  0  TO  N  -  1
  91.   PRINT  TAB(5);  "A(";  I;  ")=";  XCHAR$(DMS(A(I)),  6)
  92. NEXT  I
  93. PRINT  "改正后坐标:"
  94. FOR  I  =  0  TO  M
  95.   PRINT  TAB(5);  "X(";  I;  ")=";  XCHAR$(X(I),  4),  TAB(30);  "Y(";  I;  ")=";  XCHAR$(Y(I),  4)
  96. NEXT  I
  97.   PRINT  TAB(5);  "X(";  M;  ")=";  XCHAR$(X(M),  4),  TAB(30);  "Y(";  M;  ")=";  XCHAR$(Y(M),  4)OPEN  "DXPC.OUT"  FOR  OUTPUT  AS  #1
  98. PRINT  #1,  "                                                                导线平差"
  99. PRINT  #1,  TAB(25);  DATE$,  TIME$
  100. PRINT  #1,
  101. PRINT  #1,  "方位角允许闭合差    F0=+/-";  XCHAR$(DMS(F0),  6)
  102. IF  ABS(F1)  <=  F0  THEN
  103.   PRINT  #1,  "导线方位角闭合差    F1=      ";  XCHAR$(DMS(F1),  6);  "              OK!"
  104. ELSE
  105.   PRINT  #1,  "导线方位角闭合差    F1=      ";  XCHAR$(DMS(F1),  6);  "              OVER  LIMIT!"
  106. END  IF
  107. PRINT  #1,  "相对闭合差:"
  108. PRINT  #1,  TAB(5);  "F3=";  F3,  "F4=";  F4,  "F=";  F,  "K=1/";  S  /  F
  109. PRINT  #1,  "改正后方位角:"
  110. FOR  I  =  0  TO  N  -  1
  111.   PRINT  #1,  TAB(5);  "A(";  I;  ")=";  XCHAR$(DMS(A(I)),  6)
  112. NEXT  I
  113. PRINT  #1,  "改正后坐标:"
  114. FOR  I  =  0  TO  M
  115.   PRINT  #1,  TAB(5);  "X(";  I;  ")=";  XCHAR$(X(I),  4),  TAB(30);  "Y(";  I;  ")=";  XCHAR$(Y(I),  4)
  116. NEXT  I
  117.   PRINT  #1,  TAB(5);  "X(";  M;  ")=";  XCHAR$(X(M),  4),  TAB(30);  "Y(";  M;  ")=";  XCHAR$(Y(M),  4)
  118. CLOSE  #1
  119. REM  ********************************************************************************
  120. PRINT
  121. PRINT  "详细数据资料业已备份到  JHFY.OUT。"
  122. PRINT
  123. PRINT  "按  ESC键  返回主菜单..."
  124. DO
  125. LOOP  UNTIL  INKEY$  =  CHR$(27)
  126. RUN  "MAIN.BAS"
  127. ENDREM  将度分秒转换成度
  128. FUNCTION  DEG  (X)
  129.   D  =  INT(X)
  130.   M  =  INT((X  -  D)  *  100)
  131.   S  =  INT((X  -  D  -  M  /  100)  *  1000000)  /  100
  132.   DEG  =  D  +  M  /  60  +  S  /  3600
  133. END  FUNCTIONREM  将度转换成度分秒
  134. FUNCTION  DMS  (XX)
  135.   IF  XX  <  0  THEN
  136.     X  =  -XX
  137.   ELSE
  138.     X  =  XX
  139.   END  IF
  140.   D  =  INT(X)
  141.   M  =  INT((X  -  D)  *  60)
  142.   S  =  (X  -  D  -  M  /  60)  *  3600
  143.   IF  XX  >=  0  THEN
  144.     DMS  =  D  +  M  /  100  +  S  /  10000
  145.   ELSE
  146.     DMS  =  -1  *  (D  +  M  /  100  +  S  /  10000)
  147.   END  IF
  148. END  FUNCTIONREM  以字符串形式输出保留  N  位小数的  X
  149. FUNCTION  XCHAR$  (XX,  N)
  150.   X  =  ABS(XX)
  151.   R  =  INT(X)
  152.   F  =  INT((X  -  R)  *  10  ^  N  +  .5)
  153.   TEMP$  =  MID$(STR$(F),  2)
  154.   WHILE  LEN(TEMP$)  <  N
  155.     TEMP$  =  "0"  +  TEMP$
  156.   WEND
  157.   TEMP$  =  STR$(R)  +  "."  +  TEMP$
  158.   IF  XX  >=  0  THEN
  159.     XCHAR$  =  TEMP$
  160.   ELSE
  161.     XCHAR$  =  "-"  +  MID$(TEMP$,  2)
  162.   END  IF
  163. END  FUNCTION
复制代码
发表于 2004-9-15 23:30 | 显示全部楼层
各个学校的《测量学》版本非常多,随便找一本看看就明白了。
发表于 2005-2-27 09:36 | 显示全部楼层
什么意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-8 19:21 , Processed in 0.984391 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表