python实现全站仪三角高程测量计算

2023-11-01 03:40

本文主要是介绍python实现全站仪三角高程测量计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、介绍

在大比例尺地形图测绘过程中,通过三角高程测量来获取控制点的高程。

已知起始点A的高程,首先测站定为A,目标站定为B,盘左盘右分别读取竖直角读数(建议设置为垂直角90)和斜距,量取仪器高目标高,由此A到B往测结束。之后在B点架设全站仪,返测A点,重复上述观测方法,完成A到B往返观测。以此类推。

 

 二、组织数据

 

刚刚读取的盘左盘右竖直角即为半测回值,取平均求得一测回值。

现已知往测返测的竖直角读数(一测回值),目标高,仪器高,斜距,创建一个记事本:

输入格式:

  1. 高程起始点
  2. J1(往)竖直角的度,分,秒,J1与J2测站间斜距,仪器高,目标高,竖直角正负值(+/-),J1(返)竖直角度,分,秒,J1与J2斜间距,仪器高

 三、python计算三角高程

import math
def dms_to_radians(degree):#获取度分秒degrees_str=degree[0]minutes_str=degree[1]seconds_str=degree[2]#转化为数字degrees=float(degrees_str)minutes=float(minutes_str)seconds=float(seconds_str)#计算弧度radians=math.radians(degrees+(minutes/60)+(seconds/3600))return radians#数据准备
v_degree_list=[] #竖直角弧度
D_list=[] #测站斜距
h_instrument_list=[]
h_target_list=[]
v_degree_list_back=[]#返回观测竖直角弧度
D_list_back=[] #测站返回斜距
h_instrument_list_back=[] #返回测站仪器高filename='/home/z/hight_02'
with open(filename,'r') as f:fist_line=f.readline().strip() #起始点高程for line in f:items_list=[] #存储竖直角data=line.strip().split(',')item1,item2,item3,item4,item5,item6,item7=data[0],data[1],data[2],data[3],data[4],data[5],data[6]D_list.append(float(item4))h_instrument_list.append(float(item5))h_target_list.append(float(item6))items_list.append(item1)items_list.append(item2)items_list.append(item3)if item7=='+':v_degree_list.append(dms_to_radians(items_list))elif item7=='-':v_degree_list.append(dms_to_radians(items_list)*(-1))#算一下返回的高差a_list=[] #存储返回竖直角a1,a2,a3,a4,a5=data[7],data[8],data[9],data[10],data[11]D_list_back.append(float(a4))h_instrument_list_back.append(float(a5))a_list.append(a1)a_list.append(a2)a_list.append(a3)v_degree_list_back.append(dms_to_radians(a_list))print("\n竖直角弧度:",v_degree_list)
print("竖直角弧度(返回):",v_degree_list_back)
print("\n测站斜距:",D_list)
print("测站斜距(返回):",D_list_back)
print("\n仪器高:",h_instrument_list)
print("仪器高(返回):",h_instrument_list_back)
print("\n目标高:",h_target_list)#计算高差
H_detla_list=[]
for a,b,c,d in zip(v_degree_list,D_list,h_instrument_list,h_target_list):h=math.sin(a)*b+c-dH_detla_list.append(h)
print("\n高差:",H_detla_list)
H_detla_list_back=[] #返回测回高差
for a,b,c,d in zip(v_degree_list_back,D_list_back,h_instrument_list_back,h_target_list):h=math.sin(a)*b+c-dH_detla_list_back.append(h)
print("高差(返回):",H_detla_list_back)H_detla_list_average_abs=[]
H_detla_list_average=[]
for m,n in zip(H_detla_list,H_detla_list_back):h=(abs(m)+abs(n))/2if m>0:H_detla_list_average.append(h)elif m<0:H_detla_list_average.append(h*(-1))
print("\n往返高差均值:",H_detla_list_average)#计算高差改正数
H_sum=sum(H_detla_list_average)
print("\n理论之差:",H_sum)D_hor_list=[]
for a,b in zip(v_degree_list,D_list): #计算平距D_hor_list.append(math.cos(a)*b)
print("\n平距:",D_hor_list)
D_sum=sum(D_hor_list)  #在此只计算往测平距,未取平均,可修改
detla=[] #高差改正数
for item in D_hor_list:detla.append((item/D_sum)*H_sum)
sign=-1
detla=list(map(lambda x:x*sign,detla))
print("\n高差改正数:",detla)H_detla_new_list=[] #改正后高差
for m,n in zip(H_detla_list_average,detla):H_detla_new_list.append(m+n)
print("\n改正后高差:",H_detla_new_list)#高程计算
Hight_list=[]
H=float(fist_line)
for item in H_detla_new_list:Hight_list.append(H)H+=item
print("\n高程:",Hight_list)#高程检核
fist_line_check=Hight_list[-1]+H_detla_new_list[-1]
print("\n起始点高程检核值:",fist_line_check)

运行结果:

 

 

这篇关于python实现全站仪三角高程测量计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320211

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P