在R中如何将经度和纬度转换为可以在ggplot2或ggmap中使用的格式

Ye *_* Xu 4 geography r coordinates ggplot2 ggmap

我有一个原始的经度/纬度数据,其格式无法由R map处理.所以我想知道是否有一些R函数或算法来帮助我将这些原始数据转换为可读格式.(也许是UTM)这是我的原始数据:

纬度: "32-14-23 N""31-04-27 N""33-45-28 N"

经度: "121-22-38 W""119-30-05 W""122-47-52 W"

我希望将格式转换为(下面的示例是模拟数据):

经度: -2.748

纬度: 53.39

arv*_*000 14

看起来你有度/分/秒格式的数据,你想要它的十进制格式.您可以使用包中的char2dms函数sp从字符串转换为度 - 分 - 秒对象,然后使用as.numeric转换为十进制

例:

> as.numeric(sp::char2dms("32d14'23\"N"))
[1] 32.23972
> as.numeric(sp::char2dms("121d22'38\" W"))
[1] -121.3772
Run Code Online (Sandbox Code Playgroud)

还要注意的char2dms是寻找类似32d14'23" N,不是32-14-23 N,所以你可能要装配正确的琴弦.使用magrittr管道链:

"32-14-23 N" %>%
  sub('-', 'd', .) %>%
  sub('-', '\'', .) %>%
  sub(' ', '" ', .) %>%
  char2dms %>%
  as.numeric
Run Code Online (Sandbox Code Playgroud)