【问题标题】:Why is my custom function not working correct for converting longitude and latitude?为什么我的自定义函数无法正确转换经度和纬度?
【发布时间】:2020-11-11 17:54:49
【问题描述】:

我编写了一个将十进制值转换为长/纬度坐标的代码,它适用于我的纬度值,但不适用于我的经度值。它没有四舍五入到正确的小数位。这是我的功能:

convert.lon <- function(x){
  #degress
  d <- as.character(x)
  d <- str_sub(string = d, start = 1, end = 2)
  deg <- d
  
  #minutes 
  m <- x - as.numeric(d)
  m <- m*60
  m <- str_sub(string = as.character(m), start = 1, end = 2)
  min <- m
  
  #seconds
  m <- x - as.numeric(d)
  m <- m*60
  s <- m - as.numeric(min)
  s <- round(x=s*60, digits = 4)
  sec <- as.character(s)
  
  #cardinal direction 
  dir <- ifelse(test = x>0, yes = 'E', no= 'W')
  
  #paste together with symbols
  output <- paste0(deg, "º ", min, "' ", sec, '" ', dir)
  noquote(output)
  return(output)
}

以下是一些示例起始值:

start.patch.lon
-79.40056
-79.39279

这是它返回的值:

start.lon
-7º -4' -260402.0253" W
-7º -4' -260374.038" W

但我希望它看起来像这样:

start.lon
-7º -4' -26.0402" W
-7º -4' -26.0374" W

【问题讨论】:

    标签: r function latitude-longitude


    【解决方案1】:

    你可以这样做:

    convert.lon <- function(x){
      #degress
      d <- as.character(x)
      d <- str_sub(string = d, start = 1, end = 2)
      deg <- d
      
      #minutes 
      m <- x - as.numeric(d)
      m <- m*60
      m <- str_sub(string = as.character(m), start = 1, end = 2)
      min <- m
      
      #seconds
      m <- x - as.numeric(d)
      m <- m*60
      s <- m - as.numeric(min)
      s <- round(x=s*60/10000, digits = 4)
      sec <- as.character(s)
      
      #cardinal direction 
      dir <- ifelse(test = x>0, yes = 'E', no= 'W')
      
      #paste together with symbols
      output <- paste0(deg, "º ", min, "' ", sec, '" ', dir)
      output <- noquote(output)
      return(output)
    }
    

    这样:

    convert.lon(-79.39279)
    #> [1] -7º -4' -26.0374" W
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 2018-05-25
      • 2014-08-04
      • 2012-12-30
      • 2012-10-31
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多