如何在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
相关产品推荐
相关产品推荐

