读取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)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值