You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将冒号格式的Lat/long数据(如170:11:10)转换为十进制?

冒号分隔格式经纬度转十进制方法

单个值手动转换

度分秒(冒号分隔,如170:11:10)转十进制的核心公式:

十进制值 = 度 + 分/60 + 秒/3600

拿示例170:11:10计算:
170 + 11/60 + 10/3600 ≈ 170.1861

如果是南纬(S)或西经(W),最终结果要加负号。

数据表批量转换

Excel 批量处理

假设经纬度数据在A列,在相邻空白列(如B列)输入以下公式,下拉填充即可完成批量转换:

=LEFT(A1,FIND(":",A1)-1)+MID(A1,FIND(":",A1)+1,FIND(":",A1,FIND(":",A1)+1)-FIND(":",A1)-1)/60+RIGHT(A1,LEN(A1)-FIND(":",A1,FIND(":",A1)+1))/3600

如果数据包含方向标识(如30:20:15S),可在公式中加入判断逻辑,比如判断最后一位是否为S/W,若是则乘以-1:

=IF(RIGHT(A1,1)={"S","W"},-1,1)*(LEFT(A1,FIND(":",A1)-1)+MID(A1,FIND(":",A1)+1,FIND(":",A1,FIND(":",A1)+1)-FIND(":",A1)-1)/60+RIGHT(A1,LEN(A1)-FIND(":",A1,FIND(":",A1)+1)-1)/3600)

Python 批量处理(用Pandas)

如果是用Python处理CSV/Excel数据表,可自定义转换函数批量处理:

import pandas as pd

# 定义度分秒转十进制函数
def dms_to_decimal(dms_str):
    # 拆分冒号分隔的度、分、秒
    degrees, minutes, seconds = map(float, dms_str.split(':'))
    return degrees + minutes/60 + seconds/3600

# 读取数据表(替换为你的文件路径)
df = pd.read_excel("your_data.xlsx")
# 转换指定列(假设列名为Latitude和Longitude)
df["Lat_decimal"] = df["Latitude"].apply(dms_to_decimal)
df["Lon_decimal"] = df["Longitude"].apply(dms_to_decimal)
# 保存转换后的数据表
df.to_excel("converted_data.xlsx", index=False)

若数据包含方向标识,修改函数即可:

def dms_to_decimal_with_dir(dms_str):
    parts = dms_str.split(':')
    degrees = float(parts[0])
    minutes = float(parts[1])
    # 拆分秒和方向标识
    seconds, direction = parts[2][:-1], parts[2][-1]
    decimal_val = degrees + float(minutes)/60 + float(seconds)/3600
    # 南纬、西经取负值
    if direction in ['S', 'W']:
        decimal_val = -decimal_val
    return decimal_val

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:03:28