Py 实现导线测量的内业计算

以 附和导线计算 为例:

例图:
Py 实现导线测量的内业计算_第1张图片
相关公式
1.已知边方位角计算:αAB = arctan[(YB - YA)/(XB - XA)] *αCD同理
2.观测边方位角计算:αB1 = αAB - 180° + βB …
所以,经推算的终了边方位角为:αCD’ = αAB - n * 180° + Σβ (n为观测角个数)
3.角度闭合差计算:fβ = αCD’ - αCD
(fβ允 = ±36″*n^1/2)角度改正数按权分配即可
4.导线边方位角计算:α前 = α后 - 180° + β左
5.坐标增量闭合差计算:
Σ△X理 = XC - XB
Σ△Y理 = YC - YB
fx = Σ△X测 - Σ△X理
fy = Σ△Y测 - Σ△Y理
f = (fx^2 + fy^2) ½
(K = f/ΣD ,K应小于1/2000,困难地区应小于1/1000)
6.坐标改正数计算:
vxi = - fx * Di/ΣD
vyi = - fy * Di/ΣD (D为导线长)
7.导线点坐标计算:
xi = xi-1 + △xi’ (△xi’ = △xi测 + vxi)
yi = yi-1 + △yi’

如果要将计算结果全部打印在powershell中,是非常不简洁的,所以,这里采用python与excel表格的交互,通过读取excel表格中的数据,进行计算后,再将结果输入原表格中。
实现py与excel的交互,需要用到一个模块:openpyxl
这里需要说明一个比较重要的问题:
openpyxl不能保存原表格,也就是说,如果在代码中引用错误的表格,那原先的制作的表格就会被覆盖。

一.所需模块:
openpyxl : 实现与excel的交互
math : 实现数据的开方及精确等运算
sys : 实现在测量数据不合格时中止程序

二.表格示例
Py 实现导线测量的内业计算_第2张图片

三.所需函数
1.定义函数ls(),功能是将单元格数据写入列表求和

def ls(j):
	l = []
	for i in range(6,2*n+5,2):    #n为观测角个数,在此段代码前设置为全局变量
		x = ws.cell(i,j).value
		I.append(x)
	N = sum(I)
	return N

2.定义函数angle(),功能是使角度格式正常

def angle(d,m,s):       #d,m,s分别表示 度,分,秒
	if s>=60 or m>=60:
		m = s//60 + m
		s = s%60
		d = m//60 + d
		m = m%60
	return d,m,s

四.根据公式计算所需数据并填入表格
注意问题:
1.应运用if语句对 角度闭合差 以及 导线绝对闭合差 进行校核,如果测量数据不合格,应通过sys模块中止程序
即:sys.exit()
2.计算 改正后角值 以及 改正后坐标增量时,可先将 观测角值 以及 坐标增量 将其覆盖,与相关改正数相加后,在对表格进行更新
3.决定分配剩余误差的观测角时,可创建字典,通过键值对应的方法进行筛选
4.运用math模块对角值进行相关计算时,要注意弧度和角度的转化
5.最后记得保存excel文件

五.待解决的问题
round()遇5不进如何解决
decimal 模块 如何安装

你可能感兴趣的:(Py 实现导线测量的内业计算)