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

如何在R语言中将经纬度坐标转换为GPS(NS/EW)格式坐标

在R语言中将经纬度转换为带NS/EW标识的GPS坐标格式

核心逻辑

  • 纬度(Latitude):正值对应北纬(N),负值对应南纬(S),转换时取绝对值
  • 经度(Longitude):正值对应东经(E),负值对应西经(W),转换时取绝对值

自定义转换函数

可以通过自定义函数实现灵活转换,支持指定小数位数:

convert_to_gps <- function(lat, lon, digits = 4) {
  # 处理纬度方向与格式
  lat_dir <- ifelse(lat >= 0, "N", "S")
  lat_formatted <- sprintf(paste0("%.", digits, "f° %s"), abs(lat), lat_dir)
  
  # 处理经度方向与格式
  lon_dir <- ifelse(lon >= 0, "E", "W")
  lon_formatted <- sprintf(paste0("%.", digits, "f° %s"), abs(lon), lon_dir)
  
  # 组合结果
  paste(lat_formatted, lon_formatted, sep = ", ")
}

单个坐标转换示例

多伦多坐标转换

输入经纬度:lat=43.651070,lon=-79.347015

convert_to_gps(43.651070, -79.347015, digits = 2)
# 输出:"43.65° N, 79.35° W"

墨尔本坐标转换

输入经纬度:lat=-37.840935,lon=144.946457

convert_to_gps(-37.840935, 144.946457, digits = 2)
# 输出:"37.84° S, 144.95° E"

数据框批量转换

如果是包含多组经纬度的数据框,可通过mapply批量处理:

# 构造示例数据框
df <- data.frame(
  city = c("多伦多", "墨尔本"),
  lat = c(43.651070, -37.840935),
  lon = c(-79.347015, 144.946457)
)

# 添加GPS坐标列
df$gps_coords <- mapply(convert_to_gps, df$lat, df$lon, digits = 2)

# 查看结果
print(df)

执行后输出:

city       lat       lon            gps_coords
1 多伦多  43.65107  -79.3470 43.65° N, 79.35° W
2 墨尔本 -37.84094 144.94646 37.84° S, 144.95° E

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:38:49