test_that("utm_convert works with a zone column", {
df <- data.frame(
animalid = c("a", "b", "c"),
zone = c(10, 11, 11),
easting = c(500000, 800000, 700000),
northing = c(5000000, 3000000, 1000000)
)
out <- utm_convert(df, "easting", "northing", "zone")
expect_s3_class(out, "sf")
expect_equal(ncol(out), 7)
out <- utm_convert(df, "easting", "northing", "zone", xycols = FALSE)
expect_equal(ncol(out), 5)
})
test_that("utm_convert works with a single zone", {
df <- data.frame(
animalid = c("a", "b"),
x = c(500000, 800000),
y = c(5000000, 3000000)
)
out <- utm_convert(df, "x", "y", zone = 11)
expect_s3_class(out, "sf")
expect_equal(ncol(out), 6)
out <- utm_convert(df, "x", "y", zone = 11, xycols = FALSE)
expect_equal(ncol(out), 4)
})
test_that("utm_convert works with a single zone as a character string (e.g., 10N)", {
df <- data.frame(
animalid = c("a", "b"),
easting = c(500000, 800000),
northing = c(5000000, 3000000)
)
out <- utm_convert(df, "easting", "northing", zone = "11N")
expect_s3_class(out, "sf")
expect_equal(ncol(out), 6)
out <- utm_convert(df, "easting", "northing", zone = "11N", xycols = FALSE)
expect_equal(ncol(out), 4)
})
test_that("utm_convert works with a zone column with zone as a character", {
df <- data.frame(
animalid = c("a", "b", "c"),
zone = c("10N", "11N", "11N"),
easting = c(500000, 800000, 700000),
northing = c(5000000, 3000000, 1000000)
)
out <- utm_convert(df, "easting", "northing", "zone")
expect_s3_class(out, "sf")
expect_equal(ncol(out), 7)
out <- utm_convert(df, "easting", "northing", "zone", xycols = FALSE)
expect_equal(ncol(out), 5)
})
test_that("utm_convert works with different datums", {
df <- data.frame(
animalid = c("a", "b", "c"),
zone = c(10, 11, 11),
easting = c(500000, 800000, 700000),
northing = c(5000000, 3000000, 1000000)
)
out <- utm_convert(df, "easting", "northing", "zone")
expect_s3_class(out, "sf")
expect_equal(ncol(out), 7)
out <- utm_convert(df, "easting", "northing", "zone", datum = "WGS84", xycols = FALSE)
expect_equal(ncol(out), 5)
})
test_that("utm_convert errors expectedly", {
df <- data.frame(
animalid = c("a", "b", "c", "d"),
zone = c(10, 11, 11, 163),
easting = c(500000, 800000, 700000, 600000),
northing = c(5000000, 3000000, 1000000, 1000000)
)
expect_error(utm_convert(df, "easting", "northing", "zone"), "Invalid zone")
df <- data.frame(
animalid = c("a", "b", "c", "d"),
easting = c(500000, 800000, 700000, 600000),
northing = c(5000000, 3000000, 1000000, 1000000)
)
expect_error(utm_convert(df, "easting", "northing", "10S"), "Southern hemisphere")
df <- data.frame(
animalid = c("a", "b", "c", "d"),
easting = c(500000, 800000, 700000, 600000),
northing = c(5000000, 3000000, 1000000, 1000000)
)
expect_error(utm_convert(df, "easting", "northing", "10D"), "Invalid zone")
df <- data.frame(
animalid = c("a", "b", "c"),
zone = c("10N", "11N", "11R"),
easting = c(500000, 800000, 700000),
northing = c(5000000, 3000000, 1000000)
)
expect_error(utm_convert(df, "easting", "northing", "zone"), "Invalid zone")
})
test_that("Output minus sf stuff is same as input (#146)", {
data <- data.frame(
Row_ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
NotSure = c(9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9616, 9617),
Zone = c(10, 10, 10, 10, 10, 10, 9, 9, 9, 9),
UTMe = c(
361775,
361775,
307196,
307196,
328213,
328213,
636424,
636648,
636795,
637401
),
UTMn = c(
6011950,
6011950,
5979777,
5979777,
5984261,
5984261,
6161177,
6161270,
6161127,
6160851
),
UTMe1 = c(
361775,
361775,
307196,
307196,
328213,
328213,
636424,
636648,
636795,
637401
),
UTMn1 = c(
6011950,
6011950,
5979777,
5979777,
5984261,
5984261,
6161177,
6161270,
6161127,
6160851
)
)
rownames(data) <- letters[seq_len(nrow(data))]
out_df <- utm_convert(
data,
easting = "UTMe",
northing = "UTMn",
zone = "Zone"
)
expect_equal(
data,
sf::st_drop_geometry(out_df)[, setdiff(names(out_df), c("X", "Y", "geometry")), drop = FALSE]
)
# Check with tibble
data_tbl <- structure(data, class = c("tbl_df", "tbl", "data.frame"))
rownames(data_tbl) <- NULL
out_tbl <- utm_convert(
data_tbl,
easting = "UTMe",
northing = "UTMn",
zone = "Zone"
)
expect_s3_class(out_tbl, "tbl_df")
expect_equal(
data_tbl,
sf::st_drop_geometry(out_tbl)[, setdiff(names(out_tbl), c("X", "Y", "geometry")), drop = FALSE],
check.attributes = FALSE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.