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

5

我得到了一份原始的经纬度数据,其格式无法被R地图处理。因此,我想知道是否有一些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


你将原始数据转换为浮点值的公式是什么? - Synergist
这就是我所询问的。有什么算法或R包可以帮助吗? - Ye Xu
我想问一下,您能否用语言解释一下您正在使用哪些规则来转换数据?经度的原始数据如何对应到-2.748的值? - Synergist
2
@Synergist 刚刚修改了问题。-2.748的值是模拟数据,与上面的原始数据没有关系。我只是使用-2.748来展示我想要的数据格式。 - Ye Xu
1个回答

17

看起来您的数据以度/分/秒的格式存在,而您希望将其转换为十进制格式。您可以使用sp软件包中的char2dms函数将字符字符串转换为度-分-秒对象,然后使用as.numeric将其转换为十进制。

示例:

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

需要注意的是,char2dms 寻找的是类似于 32d14'23" N 而不是 32-14-23 N 的格式,因此您可能需要组装正确的字符串。可以使用 magrittr 管道链:

"32-14-23 N" %>%
  sub('-', 'd', .) %>%
  sub('-', '\'', .) %>%
  sub(' ', '" ', .) %>%
  char2dms %>%
  as.numeric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接