import pandas as pd import numpy as np from pyproj import Transformer import matplotlib.pyplot as plt from haversine import haversine
讯享网
读取txt,需要将txt文件放入脚本所在文件夹
讯享网df900 = pd.read_table("M900-2",header = None,sep = ',',dtype=str) df100 = pd.read_table("M100X-2",header = None,sep = ',',dtype=str) df华测 = pd.read_table("华测-2",header = None,sep = ',',dtype=str)
df100.head(10)
删除M900文本中的 Warning Ant2 Check!信息
讯享网df901 = df900[ ~ df900[0].str.contains('Warning')]
度分格式转换成度函数
def dufen_to_du(a): E = a[4].str[0:3].astype(float)+a[4].str[3:].astype(float)/60 N = a[2].str[0:2].astype(float)+a[2].str[2:].astype(float)/60 return E,N
将元祖转换成DataFrame,并将角度换算成弧度
讯享网df902 = pd.DataFrame(dufen_to_du(df901)).T #df902 = np.radians(pd.DataFrame(dufen_to_du(df901)).T) df102 = pd.DataFrame(dufen_to_du(df100)).T #df102 = np.radians(pd.DataFrame(dufen_to_du(df100)).T) df华测2 = pd.DataFrame(dufen_to_du(df华测)).T #df华测2 = np.radians(pd.DataFrame(dufen_to_du(df华测)).T)
调用第三方库将经纬度转换成UTM坐标系下的XY坐标
参数1:WGS84地理坐标系统 对应 4326
参数2:上海所在区域 WGS_1984_UTM_Zone_51N 对应 32651,WGS84地理坐标系统 对应 3857
tf = Transformer.from_crs("epsg:4326", "epsg:32651") df903 = pd.DataFrame(tf.transform(df902[2].values,df902[4].values)).T df103 = pd.DataFrame(tf.transform(df102[2].values,df102[4].values)).T df华测3 = pd.DataFrame(tf.transform(df华测2[2].values,df华测2[4].values)).T
讯享网# 设置起点和终点的经纬度 #start = (df902[2], df902[4]) #end = (df102[2], df102[4]) # 计算距离,单位为千米 #distance = haversine(start, end)
#更改列名 df903.columns=['M900X','M900Y'] df103.columns=['M100X','M100Y'] df华测3.columns=['华测X','华测Y'] #增添一列注明解状态 df103.insert(loc=2,column='解状态',value= '') df103['解状态'] = df100.loc[:,6] #更改索引为UTC时间 df903.index = df901[1].astype(float).round(1) df103.index = df100[1].astype(float).round(1) df华测3.index = df华测[1].astype(float).round(1) #导出计算的XY结果 #df903.to_excel("M900经纬度转XY结果.xlsx") #df103.to_excel("M100X经纬度转XY结果.xlsx") #df华测3.to_excel("华测经纬度转XY结果.xlsx")
合并DataFrame
讯享网df = pd.merge(df903,df103,right_index=True,left_index=True) df1 = pd.merge(df,df华测3,right_index=True,left_index=True)
插入列M900_M100距离、M900_华测距离
df1.insert(loc=7,column='M900_M100距离',value= "") df1.insert(loc=8,column='M900_华测距离',value= "")
计算距离
讯享网df1['M900_M100距离']=np.sqrt(np.square(df1['M900X']-df1['M100X'])+np.square(df1['M900Y']-df1['M100Y'])) df1['M900_华测距离']=np.sqrt(np.square(df1['M900X']-df1['华测X'])+np.square(df1['M900Y']-df1['华测Y']))
预览结果
df1.head(10)
输出距离计算结果
讯享网df1.to_excel("距离计算结果.xlsx")
plt.scatter(df1['M900X'],df1['M900Y']) plt.show()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/58508.html