r - 如何将我的坐标从六十进制更改为十进制?
问题描述
我正在使用不同格式的坐标,我希望能够在 r 中从十进制转换为六十进制格式,反之亦然。我有一个函数可以让我快速将坐标从六十进制转换为十进制,但不是相反的方向:
coord <- c("65º26.800'N", "30º59.600'W") #Or specify a vector
#Convert function
dms2dec <- function(dms, separators = c("º", "º", "\'", "\"")) {
# version 1.0 (25 Sep 3013)
# dms: a vector (or column) of latitude or longitude in degrees-minutes-seconds-hemisfere, e.g. 41? 34' 10.956" N (with or without spaces)
# separators: the characters that are separating degrees, minutes and seconds in dms
dms <- as.character(dms)
dms <- gsub(pattern = " ", replacement = "", x = dms)
for (s in separators) dms <- gsub(pattern = s, replacement = "_splitHere_", x = dms)
splits <- strsplit(dms, split = "_splitHere_")
n <- length(dms)
deg <- min <- sec <- hem <- vector("character", n)
for (i in 1:n) {
deg[i] <- splits[[i]][1]
min[i] <- splits[[i]][2]
hem[i] <- splits[[i]][4]
}
dec <- as.numeric(deg) + (as.numeric(min) / 60)
sign <- ifelse (hem %in% c("N", "E"), 1, 1)
dec <- sign * dec
return(dec)
} # end dms2dec function
dms2dec(df$lat)
知道如何修改此函数,以便选择十进制格式的纬度或经度值以六十进制格式返回给我吗?
提前致谢。
解决方案
推荐阅读
- python - 如何在 tensorflow 2.0 中使用预制的密集层进行训练?
- java - 如何让 ThreadPoolExecutor 在 Java 中立即执行
- java - 对字符串中的字符进行计数的函数
- javascript - 将 KMZ 文件输入到 Leaflet 地图中
- kubernetes - 如何在 2 个或多个 pod 之间共享一个 EBS 卷(只有一个会写,其余的只会读)?
- amazon-web-services - 使用 ExecutionRole 从 ECS 任务访问 Parameter Store 值时遇到问题
- pysnmp - 具有相同引擎ID 的单独SNMP 实体?
- angular - Angular:如何按名称加载组件
- c - 浮点数如何转换为科学记数法进行存储?
- c - 当我运行使用 Windows api 编写的代码时,它一打开就会关闭(在 Visual Studio 中)