如何在R语言中将UTM坐标转换为WGS 84格式?
解决方案:MGRS坐标转WGS84(经纬度)
错误原因分析
- 你提供的
UTM.MAP.COORDINATE是**MGRS(军事格网参考系统)**格式坐标,并非标准UTM坐标,直接用st_as_sf处理会因字符串无法转为数值坐标产生NA,触发报错。 st_as_sf的coords参数需要传入存储x/y数值的独立列,而非单个字符串格式的坐标列。
正确转换步骤
利用mgrs包的mgrs_to_latlng函数先将MGRS坐标转为WGS84经纬度,再转为sf对象:
library(mgrs) library(sf) # 原始数据 id = 1:4 UTM.MAP.COORDINATE <- c("49PBT230126", "49PBT020440", "49PBT320320", "49PBT000270") df <- data.frame(id, UTM.MAP.COORDINATE) # 将MGRS坐标转为WGS84经纬度(返回矩阵,每行为lat, lon) lat_lon_matrix <- t(sapply(df$UTM.MAP.COORDINATE, mgrs_to_latlng)) # 将矩阵转为数据框列,合并到原始数据 df$lat <- lat_lon_matrix[, 1] df$lon <- lat_lon_matrix[, 2] # 转为sf对象,CRS设置为WGS84(EPSG:4326) df_sf <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) # 查看结果 print(df_sf)
结果说明
转换后的df_sf是标准的sf对象,坐标系统为WGS84(EPSG:4326),包含原始ID、MGRS坐标及对应的经纬度几何信息。
内容的提问来源于stack exchange,提问作者anrisakaki96
相关产品推荐
相关产品推荐

