File: epi.dms.R

package info (click to toggle)
r-cran-epir 2.0.80%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,332 kB
  • sloc: makefile: 5
file content (40 lines) | stat: -rw-r--r-- 1,356 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"epi.dms" <- function(dat){

   # If matrix is comprised of one column, assume conversion FROM decimal degrees TO degree, minutes, seconds:
   if(dim(dat)[2] == 1){
      dat. <- abs(dat)
      deg <- floor(dat.)
      ms <- (dat. - deg) * 60
      min <- floor(ms)
      sec <- (ms - min) * 60
      rval <- as.matrix(cbind(deg, min, sec), dimnames = NULL)
      id <- dat[,1] < 0
      id <- ifelse(id == TRUE, -1, 1)
      rval[,1] <- rval[,1] * id
      # names(rval) <- c("deg", "min", "sec")
      }

   # If matrix is comprised of two columns, assume conversion is FROM degrees and decimal minutes TO decimal degrees:
   else if(dim(dat)[2] == 2){
      deg <- abs(dat[,1])
      min <- dat[,2] / 60
      rval <- as.matrix(deg + min, dimnames = NULL)
      id <- dat[,1] < 0
      id <- ifelse(id == TRUE, -1, 1)
      rval <- rval * id
      # names(rval) <- "ddeg"
      }

   # If matrix is comprised of three columns, assume conversion FROM degrees, minutes, seconds TO decimal degrees:
   else if(dim(dat)[2] == 3){
      deg <- abs(dat[,1])
      min <- dat[,2] / 60
      sec <- dat[,3] / (60 * 60)
      rval <- as.matrix(deg + min + sec, dimnames = NULL)
      id <- dat[,1] < 0
      id <- ifelse(id == TRUE, -1, 1)
      rval <- rval * id
      # names(rval) <- "ddeg"
      }
   return(rval)    
}