R 中从 Lat Long 到 UTM 的意外转换输出

Unexpected convertion output from Latlong to UTM in R

我正在尝试将 Latlong 转换为 UTM,但出于某种原因,来自 R 的结果与我寻找的结果大不相同。

数据集只是一个观测值(圣保罗市):

经纬度

圣保罗经度:-46.633309

圣保罗纬度:-23.550520

圣保罗的 UTM 坐标 (WGS84)

圣保罗的 UTM 坐标 (WGS84) 是:Zone 23K E: 333287.02 N: 7394586.09

来源:http://www.gps-latitude-longitude.com/gps-coordinates-of-sao-paulo

library(rgdal)
x<-c(-46.633309)
y<-c(-23.550520)
zone<-23
xy<-data.frame(ID = 1:length(x), X = x, Y = y)
coordinates(xy)<-c("X", "Y")
proj4string(xy)<-CRS("+proj=longlat +datum=WGS84")  ## for example
res<-spTransform(xy, CRS(paste("+proj=utm +zone=",zone,"ellps=WGS84",sep='')))
res

> res
         coordinates ID
1 (333287, -2605414)  1 

东移项似乎是正确的,但北移项与预期值有很大不同(7394586.09 不等于-2605414)。

谁能告诉我这是怎么回事? 提前致谢。

问题是你在南半球,北移的原点不再是赤道而是南极。因此,使用

res<-spTransform(xy, CRS(paste("+proj=utm +south +zone=",zone,"ellps=WGS84",sep='')))
##        coordinates ID
##1 (333287, 7394586)  1

请注意 +southCRS 规范的补充。

希望对您有所帮助。