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

如何使用Pandas将CSV中的UTM坐标转换为经纬度

将CSV中的UTM坐标转换为经纬度(使用Pandas和utm库)

没问题,我来帮你补全代码并详细解释如何完成UTM到经纬度的转换。你已经做了导入库和读取CSV的基础工作,只需要补充转换逻辑就行,先看完整的实现:

# 修正导入语句,使用Pandas常用的pd别名
import pandas as pd
import utm

# 读取目标CSV文件
df = pd.read_csv("0006.csv")

# 定义UTM转经纬度的函数
def utm_to_latlon(easting, northing):
    # 根据你的数据特征:Y值大于700万,判断为南半球;X值对应UTM带号53(可根据数据实际来源调整)
    latitude, longitude = utm.to_latlon(easting, northing, 53, 'S')
    return latitude, longitude

# 方式1:逐行处理(代码直观,适合小数据集)
df[['Latitude', 'Longitude']] = df.apply(
    lambda row: pd.Series(utm_to_latlon(row['X'], row['Y'])),
    axis=1
)

# 方式2:矢量化处理(速度更快,适合百万级大数据集)
# lat, lon = utm.to_latlon(df['X'].values, df['Y'].values, 53, 'S')
# df['Latitude'] = lat
# df['Longitude'] = lon

# 查看转换后的核心结果
print(df[['PositionDateTime', 'Latitude', 'Longitude', 'Z']].head())

# 可选:将转换后的数据保存为新CSV
# df.to_csv("converted_0006.csv", index=False)

关键细节说明:

  • UTM参数确认:utm.to_latlon()必须指定UTM带号和半球。你的数据中Y值(北向坐标)超过7000000,这是南半球UTM的典型特征;X值668471对应的带号是53(如果数据来自澳大利亚东部、新几内亚等区域,这个带号是准确的,若来源不同,需要根据实际调整)。
  • 两种处理方式:
    • 逐行apply()代码逻辑更直观,适合小批量数据调试;
    • 矢量化处理直接传入整列数据,避免循环,效率提升数倍,适合大规模数据集。
  • 结果验证:转换后建议拿1-2个坐标用在线UTM转换工具核对,确保带号和半球参数正确,避免转换偏差。

模拟转换结果(基于你的前5条数据):

PositionDateTime Latitude Longitude Z
0 2018-01-01 00:00:08 -30.301234 153.123456 43.60
1 2018-01-01 00:00:09 -30.301236 153.123456 43.62
2 2018-01-01 00:00:39 -30.301287 153.123470 44.00
3 2018-01-01 00:01:02 -30.301295 153.123473 44.07
4 2018-01-01 00:01:14 -30.301297 153.123473 44.09

(注:以上经纬度为模拟值,实际结果以正确参数转换为准)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:30