我的数据是以度、分和秒的形式进行的经纬度投影。这已经并以文本形式存储(character-class
,忽略row.names
)。
> pasaporte
Latitud Longitud
4 13°50¨52" sur 73°45¨12" oeste
36 13°01¨ sur 75°05¨ oeste
46 13°09¨26" sur 74°13¨22" oeste
通过邮件列表中提供的答案,我已将数据转换为十进制形式...
> pasaporte
Latitud Longitud
4 13.84778 73.75333
36 13.01667 75.08333
46 13.15722 74.22278
之后,我将 转换data.frame
为SpatialPoints
对象。
xy <- data.frame(cbind(round(pasaporte[, 'Longitud'], 5), round(pasaporte[, 'Latitud'], 5))) #Rounded the decimals out of doubt of it interfering later
xy <- SpatialPoints(coords = xy,
proj4string = CRS('+proj=longlat +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'))
然后继续通过以下方式转换投影spTransform
xy_utm <- spTransform(xy, CRS('+proj=utm +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84:0,0,0'))
我已经使用此网站转换了示例中的第一个坐标(由于坐标指的是南和西,因此请舒尔提供负数),并提供以下坐标:633726.46 mE 8468757.51 mN Zone 18L,这是正确的。相比之下,sp
变换后的对象是:
SpatialPoints:
X1 X2
[1,] 12051333 14804033
[2,] 12569894 14792671
[3,] 12301330 14684870
Coordinate Reference System (CRS) arguments: +proj=utm +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84=0,0,0
该spTransform
手册特别提到应正确提供元数据。我的数据使用 WGS84 椭球,位于 18L 区域。更准确地说是epsg:32718。我哪里错了?