将正常纬度/经度转换为R中Alber的等面积

时间:2016-09-06 17:13:51

标签: r geospatial

我在R中有一个数据集dat,坐标在WGS84中。看起来像这样(下面的dput输出)

dat <- structure(list(latitude = c(46.414597, 46.137664, 46.567187, 
45.730901, 43.379185, 46.657572), longitude = c(-86.030373, -85.990492, 
-87.954285, -87.674475, -86.226577, -89.807461), mat = c(5.21999979019165, 
5.55999994277954, 4.03000020980835, 5.40000009536743, 8.3100004196167, 
4.30000019073486), map = c(824.52001953125, 822.77001953125, 
806.900024414062, 780.510009765625, 885.940002441406, 912.789978027344
)), .Names = c("latitude", "longitude", "mat", "map"), row.names = c(NA, 
-6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x10200fd78>)

   latitude longitude  mat    map
1: 46.41460 -86.03037 5.22 824.52
2: 46.13766 -85.99049 5.56 822.77
3: 46.56719 -87.95428 4.03 806.90
4: 45.73090 -87.67448 5.40 780.51
5: 43.37918 -86.22658 8.31 885.94
6: 46.65757 -89.80746 4.30 912.79

我使用sp包将其作为空间点数据框:

require(sp)
dat.sp <- SpatialPointsDataFrame(c(dat[,c('longitude','latitude')]), data = dat)

如何将这些坐标转换为Alber的等面积投影?

1 个答案:

答案 0 :(得分:2)

library(sp)
dat.sp <- as.data.frame(dat)
dat.sp <- SpatialPointsDataFrame(c(dat.sp[,c('longitude','latitude')]), data = dat.sp)

library(mapproj)
mapproject(dat.sp$longitude,dat.sp$latitude,projection ="albers", par=c(39,49))
$x
[1]  0.0224144915  0.0230045456 -0.0006617149  0.0027256535  0.0211352166 -0.0227947615

$y
[1] -0.9929906 -0.9978269 -0.9905721 -1.0052115 -1.0462001 -0.9887275

$range
[1] -0.02279476  0.02300455 -1.04620005 -0.98872752

$error
[1] 0

请注意,我在此示例中随机设置参数种类,您需要选择对您有意义的参数。您可以找到更多信息here,文档中也有一个示例。