为什么我的自定义函数无法正确转换经度和纬度?
Why is my custom function not working correct for converting longitude and latitude?
我写了一个代码将十进制值转换为 long/lat 坐标,它适用于我的纬度值但不适用于我的经度值。它没有四舍五入到正确的小数位。这是我的功能:
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
这是它的值 returns:
start.lon
-7º -4' -260402.0253" W
-7º -4' -260374.038" W
但我希望它看起来像这样:
start.lon
-7º -4' -26.0402" W
-7º -4' -26.0374" W
你可以这样做:
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
我写了一个代码将十进制值转换为 long/lat 坐标,它适用于我的纬度值但不适用于我的经度值。它没有四舍五入到正确的小数位。这是我的功能:
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
这是它的值 returns:
start.lon
-7º -4' -260402.0253" W
-7º -4' -260374.038" W
但我希望它看起来像这样:
start.lon
-7º -4' -26.0402" W
-7º -4' -26.0374" W
你可以这样做:
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