Skip to contents

Parse latitude values

Usage

parse_lat(lat, format = NULL)

Arguments

lat

(numeric/integer/character) one or more latitude values

format

(character) format, default often works

Value

numeric vector

Errors

Throws warnings on parsing errors, and returns NaN in each case

Types of errors:

  • invalid argument: e.g., letters passed instead of numbers, see https://en.cppreference.com/cpp/error/invalid_argument

  • out of range: numbers of out acceptable range, see https://en.cppreference.com/cpp/error/out_of_range

  • out of latitude range: not within -90/90 range

  • minutes or seconds out of range (negative or 60 and above): not within 0/60 range, e.g. "10 30,12345" is read as 10 degrees, 30 minutes and 12345 seconds, so it gives a warning and NA

  • a decimal degree or minute followed by another slot: only the last slot can be decimal, e.g. "45.5 30"

A comma or space is always a separator between degrees, minutes and seconds, never a decimal mark.

Examples

parse_lat("")
#> [1] NA
if (FALSE) { # \dontrun{
parse_lat("-91")
parse_lat("95")
parse_lat("asdfaf")

parse_lat("45")
parse_lat("-45")
parse_lat("-45.2323")

# out of range with std::stod?
parse_lat("-45.23232e24")
parse_lat("-45.23232e2")

# numeric input
parse_lat(1:10)
parse_lat(85:94)

# different formats
parse_lat("40.4183318 N")
parse_lat("40.4183318 S")
parse_lat("40 25 5.994") # => 40.41833

parse_lat("40.4183318N")
parse_lat("N40.4183318")
parse_lat("40.4183318S")
parse_lat("S40.4183318")

parse_lat("N 39 21.440") # => 39.35733
parse_lat("S 56 1.389") # => -56.02315

parse_lat("N40°25’5.994") # => 40.41833
parse_lat("40° 25´ 5.994\" N") # => 40.41833
parse_lat("40:25:6N")
parse_lat("40:25:5.994N")
parse_lat("40d 25’ 6\" N")
} # }