一般来说,为了更准确的在野外测试,通常要用到GPS和地波仪,GPS很常见了,那么地波仪是什么呢?

地波仪本质上就是个振荡器,发射的信号是以1.001MHz为基频的各次倍频波等幅波,强谐波信号能维持到30MHz以上,即在1~30MHz范围内同时输出1MHz基频及各次谐波,频率准确度:1.001MHz±15Hz,这类无线电波沿地面传播,通常叫地波了。

之前做了一个地波测试小工具,但是使用过程中发现还是不方便。

比如携带的GPS测量仪测出发射源位置(纬度1,经度1)后 需要与天线阵位置(纬度0,经度0) 计算距离和方位角(又称示向度),没有趁手的家伙事儿,所以上网搜了一些资料,做了个小工具。




python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_python 计算两个经纬度的距离


Part1 坐标计算,

(1)求地球球面A点和B点之间的方位角以及二者之间的距离,方位角

距离

参考常用的距离计算Haversine公式,精度还不错,具体算法可以参考


Haversine formulaen.wikipedia.org

python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_打开文件_02


代码随后更新

方位角

利用球面公式就能求,基础数学知识

代码随后更新

经纬度度分秒转换度工具

平时度分秒格式比较方便,但是不便于进行数学运算

这个很容易,初中知识,就不赘言了

--------------------------------

Part 2 地波测试

参考文章

土笋冻要学习:基于PyQt5的简单RMSE计算小工具设计-研究笔记

Part 3 笔记

(1) 经纬度非法值判定

a. 纬度范围[-90,90] 经度范围[-180,180],东经和北纬以正度数表示,西经和北纬以负数表示

b. 除非4个lineedit都填入合法值,否则计算不产生结果

(2)角度转换非法值判定

(度 分 秒)如果不填入值,判定为0;如果填入非法值,不产生计算结果,并将非法值所在lineedit置为空


python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_打开文件_03

图a 分位为空

python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_python 计算两个经纬度的距离_04

图b 自动补零

(3)打开保存文件

首先为了以后方便,测试结果可以保存到本地


python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_文件名_05


如何打开保存的excel文件呢?

PyQt5.QtWidgets.QfileDialog提供了一些便捷方法

参照https://programtalk.com/python-examples/PyQt5.QtWidgets.QFileDialog./

getOpenFileName()方法 #单个文件打开
getOpenFileNames() #多个文件打开
getExistingDirectory() #文件夹选取 
getSaveFileName() #文件保存

所以我们使用PyQt5.QtWidgets.QFileDialog.getOpenFileName()方法,但是发现通过这个途径打开文件以后没有响应?


python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_python 计算两个经纬度的距离_06


查了资料发现,需要把这个方法的返回值赋给os.startfile()方法,执行动作与在Windows中双击文件相同


def openSavedFile(self):
 fileName1,filetype = QFileDialog.getOpenFileName(self.pushButton_openSavedFile,'选择文件','','Excel files(*.xlsx , *.xls)') 
 # 参数1 是个对象,通常把需要执行点击操作的按钮对象赋给参数1
 # 参数2 是对话框的名字
 # 参数3 路径名,""表示py文件所在目录
 # 参数4 过滤器,这里我们只显示excel文件
 print(fileName1,filetype) # QFileDialog.getOpenFileName返回文件名,需要使用其他命令打开
 startfile(fileName1) #调用系统默认方式打开文件


python中如何使用GDAL将经纬度转换成图像坐标 python 经纬度_打开文件_07


-------------------------------------

很简陋,再用一用发现问题吧