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

在R中转换坐标格式:将度分格式转为十进制度

坐标格式转换解决方案

你可以用现成的R包或者手动计算来实现,两种方法都能保留数据框格式,无需转换为空间对象:

方法一:使用measurements包(推荐)

这个包专门处理单位转换,能直接处理带方向的坐标格式:

  1. 安装并加载包:
install.packages("measurements")
library(measurements)
  1. 合并坐标与方向列,批量转换为十进制度:
# 生成十进制度纬度列
tracksFKt240108$lat_decimal <- conv_latlong(
  paste(tracksFKt240108$Latitude, tracksFKt240108$NorS),
  from = "deg_min", 
  to = "decimal"
)

# 生成十进制度经度列
tracksFKt240108$lon_decimal <- conv_latlong(
  paste(tracksFKt240108$Longitude, tracksFKt240108$EorW),
  from = "deg_min", 
  to = "decimal"
)

conv_latlong会自动根据方向(S/W)转换为负数,完全符合你的需求。

方法二:手动计算(无需额外包)

如果不想依赖第三方包,可以自己写转换逻辑,核心是把DDMM.SSS格式转为十进制度:

  1. 定义转换函数:
degmin_to_decimal <- function(degmin, direction) {
  degrees <- floor(degmin / 100)  # 提取度数部分
  minutes <- degmin - degrees * 100  # 提取分数部分
  decimal <- degrees + minutes / 60  # 转为十进制度
  # 根据方向调整正负
  if (direction %in% c("S", "W")) decimal <- -decimal
  return(decimal)
}
  1. 应用到数据框:
tracksFKt240108$lat_decimal <- mapply(degmin_to_decimal, tracksFKt240108$Latitude, tracksFKt240108$NorS)
tracksFKt240108$lon_decimal <- mapply(degmin_to_decimal, tracksFKt240108$Longitude, tracksFKt240108$EorW)

验证:以你提供的示例值计算,3302.013 S会转为-33.03355,7136.339 W会转为-71.60565,和你给出的目标值一致(仅四舍五入差异)。

内容的提问来源于stack exchange,提问作者Nicolás Luna Bravo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:43:28