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
请注意 +south
对 CRS
规范的补充。
希望对您有所帮助。
我正在尝试将 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
请注意 +south
对 CRS
规范的补充。
希望对您有所帮助。