These two helper functions convert character vectors and decimal degree vectors to the DMS-class representation of degrees, minutes, and decimal seconds. "DMS" objects cannot contain NAs.

char2dms(from, chd = "d", chm = "'", chs = "\"")
dd2dms(dd, NS = FALSE)

Methods

from = "DMS", to = "numeric"

coerce a "DMS" object to a "numeric" vector

from = "DMS", to = "character"

coerce a "DMS" object to a "character" vector (the as.character.DMS S3 method is also available)

Arguments

from

character vector of degree, minute, decimal second data

chd

degree character terminator

chm

minute character terminator

chs

second character terminator

dd

numeric vector of decimal degrees

NS

logical, TRUE for north/south decimal degrees, FALSE for east/west decimal degrees

Details

In char2dms, the input data vector should use a regular format, such as that used in the PROJ.4 library, with a trailing capital (NSWE) indicating compass direction.

Value

Both functions return a "DMS" object.

Author

Roger Bivand Roger.Bivand@nhh.no

See also

Examples

data(state)
str(state.center$y)
#>  num [1:50] 32.6 49.2 34.2 34.7 36.5 ...
stateN <- dd2dms(state.center$y, NS=TRUE)
str(attributes(stateN))
#> List of 6
#>  $ WS   : logi [1:50] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ deg  : int [1:50] 32 49 34 34 36 38 41 38 27 32 ...
#>  $ min  : int [1:50] 35 15 13 44 32 40 35 40 52 19 ...
#>  $ sec  : num [1:50] 24.36 0 9.12 0.96 2.76 ...
#>  $ NS   : logi TRUE
#>  $ class: chr "DMS"
#>   ..- attr(*, "package")= chr "sp"
ch.stateN <- as.character(stateN)
str(ch.stateN)
#>  chr [1:50] "32d35'24.36\"N" "49d15'N" "34d13'9.12\"N" "34d44'0.96\"N" ...
stateNa <- char2dms(ch.stateN)
str(attributes(stateNa))
#> List of 6
#>  $ WS   : logi [1:50] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ deg  : int [1:50] 32 49 34 34 36 38 41 38 27 32 ...
#>  $ min  : int [1:50] 35 15 13 44 32 40 35 40 52 19 ...
#>  $ sec  : num [1:50] 24.36 0 9.12 0.96 2.76 ...
#>  $ NS   : logi TRUE
#>  $ class: chr "DMS"
#>   ..- attr(*, "package")= chr "sp"
ch.stateN <- as(stateN, "character")
str(ch.stateN)
#>  chr [1:50] "32d35'24.36\"N" "49d15'N" "34d13'9.12\"N" "34d44'0.96\"N" ...
stateNa <- char2dms(ch.stateN)
str(attributes(stateNa))
#> List of 6
#>  $ WS   : logi [1:50] FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  $ deg  : int [1:50] 32 49 34 34 36 38 41 38 27 32 ...
#>  $ min  : int [1:50] 35 15 13 44 32 40 35 40 52 19 ...
#>  $ sec  : num [1:50] 24.36 0 9.12 0.96 2.76 ...
#>  $ NS   : logi TRUE
#>  $ class: chr "DMS"
#>   ..- attr(*, "package")= chr "sp"