context("reproj-proj4")
#options(reproj.mock.noproj6 = TRUE)
llproj <- "+proj=longlat +datum=WGS84"
laeaproj <- "+proj=laea +datum=WGS84"
# library(proj4)
# dat <- as.matrix(expand.grid(x = seq(-180, 180), y = seq(-90, 90)))
# dat <- dat[sample(nrow(dat), 10), ]
# pdat <- proj4::ptransform(dat * pi/180, llproj, laeaproj)
# dput(dat)
# dput(pdat)
dat <- structure(c(-162L, -97L, -162L, 40L, -36L, 32L, 32L, -67L, -25L,
-22L, 14L, -31L, 52L, -49L, -1L, -11L, 38L, 66L, -65L, 32L), .Dim = c(10L,
2L), .Dimnames = list(NULL, c("x", "y")))
pdat <- structure(c(-9752052.25396846, -8119467.86794594, -2678218.88894421,
3109728.10218706, -3941443.47017694, 3466582.53790106, 2920150.83154972,
-3147972.12215379, -1374249.03919241, -2146112.98562162, 7815696.43338213,
-4882405.39621803, 11018883.0376461, -5528095.07432074, -116262.853667621,
-1263068.91163095, 4276503.16642679, 7629667.99984509, -6926735.4349356,
3555900.89373428), .Dim = c(10L,
2L))
test_that("basic reprojection works", {
expect_equivalent(reproj(dat, source = llproj, target = laeaproj)[,1:2, drop = FALSE], pdat)
expect_equivalent(reproj(pdat, source = laeaproj, target = llproj)[,1:2, drop = FALSE], dat)
})
test_that("identity reprojection ok", {
expect_equivalent(reproj(dat, source = llproj, target = llproj)[,1:2, drop = FALSE], dat)
expect_equivalent(reproj(pdat, source = laeaproj, target = laeaproj)[,1:2, drop = FALSE], pdat)
})
test_that("unit change", {
expect_equivalent(reproj(dat, source = llproj, target = "+proj=laea +ellps=WGS84 +units=km")[,1:2, drop = FALSE], pdat/1000)
expect_equivalent(reproj(dat, source = llproj, target = laeaproj)[,1:2, drop = FALSE], pdat)
})
test_that("basic with data frame works", {
expect_equivalent(reproj(as.data.frame(dat), source = llproj, target = laeaproj)[,1:2, drop = FALSE], pdat)
expect_equivalent(reproj(as.data.frame(pdat), source = laeaproj, target = llproj)[,1:2, drop = FALSE], dat)
})
test_that("bad arguments fail if we can't assume longlat", {
options(reproj.assume.longlat = FALSE)
expect_error(reproj(dat, target = llproj))
expect_error(reproj(pdat, laeaproj))
})
test_that("bad arguments don't fail if we can assume longlat", {
options(reproj.assume.longlat = TRUE)
expect_warning(reproj(dat, target = laeaproj), "but looks like longitude/latitude values")
expect_silent(reproj(pdat, llproj, source = laeaproj))
})
test_that("integer inputs become epsg strings", {
expect_silent(reproj:::.onLoad())
op <- options(reproj.assume.longlat = NULL)
expect_true(!"reproj.assume.longlat" %in% names(options()))
expect_silent(reproj:::.onLoad())
expect_true("reproj.assume.longlat" %in% names(options()))
})
test_that("mesh3d works", {
skip()
expect_warning(reproj(.mesh3d, "+proj=laea +datum=WGS84"), "cannot be preserved")
})
test_that("sc works", {
skip()
expect_equal(class(reproj(.sc, "+proj=laea +datum=WGS84")), c("SC", "sc"))
})
test_that("is_ll works", {
expect_true(is_ll(4326))
expect_true(is_ll(4267))
expect_true(is_ll("4326"))
expect_true(is_ll("4267"))
expect_true(is_ll("+init=EPSG:4326"))
expect_true(is_ll("+init=EPSG:4267"))
expect_true(is_ll("+init=epsg:4326"))
expect_true(is_ll("+init=epsg:4267"))
expect_true(is_ll("EPSG:4326"))
expect_true(is_ll("EPSG:4267"))
expect_true(is_ll("epsg:4326"))
expect_true(is_ll("epsg:4267"))
expect_true(!is_ll(10000))
expect_true(!is_ll(10000))
expect_true(!is_ll("10000"))
expect_true(!is_ll("10000"))
expect_true(!is_ll("EPSG:10000"))
expect_true(!is_ll("epsg:10000"))
expect_true(!is_ll("+init=EPSG:10000"))
expect_true(!is_ll("+init=epsg:10000"))
expect_true(!is_ll("EPSG:7373773"))
})
## doesn't work on macos latest (2022-10-28) on gh
# test_that("geocentric works", {
# xyz <- reproj::reproj(cbind(147, -42),
# target = "+proj=geocent +datum=WGS84",
# source = "+proj=longlat +datum=WGS84")
# expect_equal(c(xyz > 0), c(FALSE, TRUE, FALSE))
# })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.