#' DMS to Decimal #' #' Convert geocoordinates froom DMS format to decimal #' #' @param input #' #' @return #' @export #' #' @examples dms_to_decimal <- function(input) { if(is.na(input)) { return(NA) } else { return(sp::char2dms(input, chd="d", chm="m", chs="s") |> as.numeric()) } } #' Convert Semantic Wiki style coordinates to DMS #' #' @param dataset #' @param geocoordinates_variable #' #' @return #' @export #' #' @examples get_decimal_coordinates <- function(dataset, geocoordinates_variable) { dataset |> mutate( {{geocoordinates_variable}} := toupper({{geocoordinates_variable}}), {{geocoordinates_variable}} := str_replace_all({{geocoordinates_variable}}, '°', "d"), {{geocoordinates_variable}} := str_replace_all({{geocoordinates_variable}}, "'", "m"), {{geocoordinates_variable}} := str_replace_all({{geocoordinates_variable}}, '"', "s")) |> mutate(geo_split = stringr::str_split({{geocoordinates_variable}}, ",")) |> rowwise() |> mutate(latitude = dms_to_decimal(geo_split[1]), longitude = dms_to_decimal(geo_split[2])) |> select(-geo_split, -{{geocoordinates_variable}}) }