读取Excel中的coordinates列,每个坐标值可能用逗号或分号隔开,并且每个坐标值使用点.来分隔度、分、秒。然后,它将这些度分秒(DMS)格式的坐标转换为十进制度(DD)格式,并将转换后的坐标

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)




你可能感兴趣的:(python,简单地理应用,python)