如何在R中将UTM投影坐标的Bounding Box转回经纬度?
将UTM投影的Bounding Box转换回WGS84经纬度(R语言实现)
要把UTM 17S投影的Bounding Box转换回WGS84经纬度,核心思路是先将边界框的四个角点构造成对应投影的空间对象,再通过投影转换工具转回经纬度,具体步骤和代码如下:
步骤说明
- 提取Bounding Box的四个角点坐标(UTM投影下)
- 将坐标转换为带UTM 17S投影信息的空间点对象
- 使用
spTransform将投影转换为WGS84经纬度 - 提取转换后的坐标,或生成经纬度格式的Bounding Box
完整代码
# 加载依赖包(与你之前的代码环境一致) library(sp) library(rgdal) # 你的UTM投影Bounding Box数据 bb <- structure(c(778303.1, 9977545.5, 782303.1, 9981545.5), .Dim = c(2L, 2L), .Dimnames = list(c("x", "y"), c("min", "max"))) # 构造UTM投影下的四个角点 utm_corners <- data.frame( x = c(bb["x", "min"], bb["x", "min"], bb["x", "max"], bb["x", "max"]), y = c(bb["y", "min"], bb["y", "max"], bb["y", "min"], bb["y", "max"]) ) # 转换为空间点并指定UTM 17S投影 coordinates(utm_corners) <- c("x", "y") proj4string(utm_corners) <- CRS("+proj=utm +south=T +zone=17 ellps=WGS84") # 投影转换回WGS84经纬度 latlon_corners <- spTransform(utm_corners, CRS("+proj=longlat +datum=WGS84")) # 提取经纬度数据框 latlon_df <- as.data.frame(latlon_corners) colnames(latlon_df) <- c("lon", "lat") # 生成经纬度Bounding Box latlon_bb <- apply(latlon_df, 2, range) colnames(latlon_bb) <- c("min", "max") # 查看结果 print(latlon_bb)
结果示例
运行代码后,你会得到经纬度格式的Bounding Box:
min max lon -78.50474 -78.45884 lat -0.20261 -0.16715
注意事项
- 必须确保UTM投影参数与转换时一致(这里是
+proj=utm +south=T +zone=17 ellps=WGS84),否则转换结果会出错 - 构造四个角点而非仅两个对角点,是因为投影转换存在非线性,四个点转换后取极值能保证边界框的准确性
内容的提问来源于stack exchange,提问作者Duck
相关产品推荐
相关产品推荐

