在Python中,如果您有包含“纬度”、“经度”、“纬度偏移量”和“经度偏移量”的DataFrame,并且这些值都是浮点数,可以使用这些值来计算新的、具体的经纬度。通常,这些偏移量是基于某种单位(如米、公里等)在地球表面上的距离转换而来的。由于地球是一个近似椭球体,计算精确的偏移后的经纬度需要考虑地球的曲率。
然而,对于小范围的偏移(例如几公里内),可以使用一种简化的方法,即“Haversine公式”的逆运算的一个近似版本,但这种方法通常用于从经纬度计算距离,而不是从距离反推经纬度。对于小偏移量,一个简单的线性近似(基于地球在某个点的切线平面)可能是足够的,但请注意这种方法的精度有限。
下面是一个使用线性近似的示例代码,但请注意这种方法并不精确,特别是在接近极点或偏移量较大时:
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Time : 2025/1/20 22:24 @Author : Suyue @Email : 1493117872@qq.com @File : cloud_area.py @Project : untitled4 """ import pandas as pd import numpy as np # 读取CSV文件到DataFrame df = pd.read_csv('D:/探空数据计算/tankong-2020-50527_with_final_times.csv') # 并且这些偏移量是以某种单位(例如米)表示的在地球表面上的距离。 # 注意:这里的偏移量单位需要转换为度或弧度之前进行适当的转换,但这里我们假设是小偏移量并使用线性近似。 # 定义一个函数来计算新的经纬度 def calculate_new_coordinates(row, earth_radius=6371e3): # 地球半径,单位:米 # 注意:这里的偏移量转换是非常简化的,并不准确! # 正确的做法是使用更复杂的地理库(如geopy、pyproj)来进行精确的转换。 # 但为了示例,我们假设偏移量很小,并且单位已经是度(这不是实际情况,仅用于演示)。 # 获取原始经纬度 lat = row['Lat'] lon = row['Lon'] # 获取偏移量(这里假设已经是度,实际上需要先从米转换为度) lat_dev = row['Lat_Dev'] # 实际上需要转换:offset_meters / (earth_radius * pi / 180) * cos(lat) lon_dev = row['Lon_Dev'] # 实际上需要转换:offset_meters / (earth_radius * cos(lat) * pi / 180) # 计算新的经纬度(这里直接使用加法,实际上应该使用更复杂的公式) new_lat = lat + lat_dev new_lon = lon + lon_dev return new_lat, new_lon # 应用函数并添加新列 df[['New_Latitude', 'New_Longitude']] = df.apply(lambda row: pd.Series(calculate_new_coordinates(row)), axis=1) # 将结果写入Excel文件 output_file_path = 'D:/探空数据计算/tankong-2020-50527_with_final_times_lat_lon.csv' df.to_csv(output_file_path, index=False) # index=False表示不写入行索引 # 打印成功消息 print(f"结果已成功写入Excel文件: {output_file_path}")
标签:纬度,经纬度,经度,lon,偏移量,lat,row From: https://www.cnblogs.com/shirleysu90/p/18682609