将Arcminute / Second转换为十进制(不规则格式)

时间:2017-05-17 14:50:57

标签: r gps

我正在使用GPS坐标处理一些不规则且经过深思熟虑的数据,我需要让它们更具可用性和可管理性。

我的工作基于我在这里找到的angle2dec函数:

angle2dec <- function(angle) {
  angle <- as.character(angle)
  x <- do.call(rbind, strsplit(angle, split=' '))

  #decimal points where they should and should not be here
  #causes my issue as i can't use a consistent string split
  #character.  splitting the first 3 '.' occurrences might work

  x <- apply(x, 1L, function(y) {
    y <- as.numeric(y)
    y[1] + y[2]/60 + y[3]/3600
  })
  return(x)
}

但是我的数据格式不正确。坐标如下所示:

'53.17.35.852'

ang2dec函数适用于遵循以下格式的坐标:

ang2dec('53 17 35.852') = 53.29329

(这是正确的结果)

显然问题是坐标格式的选择不当。任何人都可以提出一种方法,我可以将第一种坐标格式转换为第二种格式,或者建议对包含我正在寻找的功能的ang2dec函数进行更改吗?

1 个答案:

答案 0 :(得分:0)

  

我创建了一个函数,你可以使用apply函数将它传递给你想要的向量。   这将帮助您将当前格式格式化为所需格式。

library(data.table)
format.fun<-function(x){
  y<-as.data.frame(t(as.data.frame(tstrsplit(x, split = "\\.",names = T))))
  y<-lapply(y, function(x){
    temp<- paste(x[1],x[2],x[3], sep = " ")
    temp<- paste(temp, x[4], sep = ".")
    temp
  })
  unlist(y)
}