import pandas as pd
def dms_to_dd(dms_str):
try:
# 确保字符串不为空并且包含点号
if dms_str and '.' in dms_str:
# 分割度、分、秒
d, ms = dms_str.split('.')
m = ms[:2]
s = ms[2:4]
# 转换为十进制度
dd = float(d) + float(m) / 60 + float(s) / 3600
return dd
except Exception as e:
print(f"Error processing '{dms_str}': {e}")
return None
def process_excel_coordinates(input_file_path, output_file_path):
# 读取Excel文件
df = pd.read_excel(input_file_path)
# 解析并处理coordinates列
def process_coords(coords):
# 分割不同的坐标点
points = coords.replace(';', ',').split(',')
# 度分秒到十进制度的转换
return [dms_to_dd(point.strip()) for point in points]
# 应用处理函数到每一行的coordinates值
df['processed_coordinates'] = df['coordinates'].apply(lambda x: process_coords(x))
# 保存处理后的数据到新的Excel文件
df.to_excel(output_file_path, index=False)
# 输入和输出文件的路径
input_file_path = 'real_geo.xlsx'
output_file_path = 'real_geo_dd.xlsx'
# 调用函数
process_excel_coordinates(input_file_path, output_file_path)
读取Excel中的coordinates列,每个坐标值可能用逗号或分号隔开,并且每个坐标值使用点.来分隔度、分、秒。然后,它将这些度分秒(DMS)格式的坐标转换为十进制度(DD)格式,并将转换后的坐标
于 2024-01-24 16:43:19 首次发布