Nothing
test_that("s2_contains() works", {
expect_identical(s2_contains("POINT (0 0)", NA_character_), NA)
expect_true(s2_contains("POINT (0 0)", "POINT (0 0)"))
expect_false(s2_contains("POINT (0 0)", "POINT (1 1)"))
expect_false(s2_contains("POINT (0 0)", "POINT EMPTY"))
# make sure model is passed on to at least one binary predicate
# in the open model, lines do not contain endpoints (but do contain other points)
expect_false(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0)", s2_options(model = "open")))
expect_true(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 1)", s2_options(model = "open")))
expect_false(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0.5)", s2_options(model = "open")))
# semi-open and closed: endpoints are contained
expect_true(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0)", s2_options(model = "semi-open")))
expect_true(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 1)", s2_options(model = "semi-open")))
expect_false(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0.5)", s2_options(model = "semi-open")))
expect_true(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0)", s2_options(model = "closed")))
expect_true(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 1)", s2_options(model = "closed")))
expect_false(s2_contains("LINESTRING (0 0, 0 1, 1 1)", "POINT (0 0.5)", s2_options(model = "closed")))
})
test_that("s2_covers() and s2_covered_by() work", {
expect_true(s2_covers("POINT (0 0)", "POINT (0 0)"))
expect_false(s2_covers("POINT (0 0)", "POINT (1 1)"))
expect_false(s2_covers("POINT (0 0)", "POINT EMPTY"))
expect_true(s2_covers("LINESTRING (0 0, 1 1)", "POINT (0 0)"))
expect_false(s2_covers("LINESTRING (0 0, 1 1)", "POINT (-1 -1)"))
# make sure line is along a geodesic edge
# if the line doesn't contain the endpoints, floating
# point math won't always keep it strictly inside or outside
# the polygon (hard to predict which way it will go)
# (when the model is set such that the boundary of the polygon
# is considered 'contained' by it)
polygon <- "POLYGON ((0 0, 1 1, 0 1, 0 0))"
line <- "LINESTRING (0 0, 1 1)"
point <- "POINT (0.5 0.7)"
expect_true(s2_covers(polygon, polygon))
expect_false(s2_covers(polygon, line, s2_options(model = "open")))
expect_false(s2_covers(polygon, line, s2_options(model = "semi-open")))
expect_true(s2_covers(polygon, line, s2_options(model = "closed")))
expect_true(s2_covers(polygon, point, s2_options(model = "open")))
expect_true(s2_covers(polygon, point, s2_options(model = "semi-open")))
expect_true(s2_covers(polygon, point, s2_options(model = "closed")))
expect_false(s2_covered_by(polygon, line, s2_options(model = "open")))
expect_false(s2_covered_by(polygon, line, s2_options(model = "semi-open")))
expect_false(s2_covered_by(polygon, line, s2_options(model = "closed")))
expect_true(s2_covered_by(point, polygon, s2_options(model = "open")))
expect_true(s2_covered_by(point, polygon, s2_options(model = "semi-open")))
expect_true(s2_covered_by(point, polygon, s2_options(model = "closed")))
})
test_that("s2_disjoint() works", {
expect_identical(s2_disjoint("POINT (0 0)", NA_character_), NA)
expect_false(s2_disjoint("POINT (0 0)", "POINT (0 0)"))
expect_true(s2_disjoint("POINT (0 0)", "POINT (1 1)"))
expect_true(s2_disjoint("POINT (0 0)", "POINT EMPTY"))
expect_false(s2_disjoint("LINESTRING (0 0, 1 1)", "POINT (0 0)"))
expect_true(s2_disjoint("LINESTRING (0 0, 1 1)", "POINT (-1 -1)"))
})
test_that("s2_equals() works", {
expect_identical(s2_equals("POINT (0 0)", NA_character_), NA)
expect_true(s2_equals("POINT (0 0)", "POINT (0 0)"))
expect_true(s2_equals("POINT (0 0)", "POINT (0 0)", s2_options(model = "open")))
expect_true(s2_equals("POINT (0 0)", "POINT (0 0)", s2_options(model = "semi-open")))
expect_true(s2_equals("POINT (0 0)", "POINT (0 0)", s2_options(model = "closed")))
expect_false(s2_equals("POINT (0 0)", "POINT (1 1)"))
expect_false(s2_equals("POINT (0 0)", "POINT EMPTY"))
expect_true(s2_equals("POINT EMPTY", "POINT EMPTY"))
expect_true(s2_equals("LINESTRING (0 0, 1 1)", "LINESTRING (1 1, 0 0)"))
expect_false(s2_equals("LINESTRING (0 1, 1 1)", "LINESTRING (1 1, 0 0)"))
})
test_that("s2_intersects() works", {
expect_identical(s2_intersects("POINT (0 0)", NA_character_), NA)
expect_true(s2_intersects("POINT (0 0)", "POINT (0 0)"))
expect_false(s2_intersects("POINT (0 0)", "POINT (1 1)"))
expect_false(s2_intersects("POINT (0 0)", "POINT EMPTY"))
expect_true(s2_intersects("LINESTRING (0 0, 1 1)", "LINESTRING (1 0, 0 1)"))
expect_false(s2_intersects("LINESTRING (0 0, 1 1)", "LINESTRING (-2 -2, -1 -1)"))
expect_true(s2_intersects("LINESTRING (0 0, 1 1)", "POINT (0 0)"))
expect_false(s2_intersects("LINESTRING (0 0, 1 1)", "POINT (0 0)", s2_options(model = "open")))
expect_true(s2_intersects("LINESTRING (0 0, 1 1)", "POINT (0 0)", s2_options(model = "semi-open")))
expect_true(s2_intersects("LINESTRING (0 0, 1 1)", "POINT (0 0)", s2_options(model = "closed")))
polygon = "POLYGON((0 0,1 0,1 1,0 1,0 0))"
expect_false(s2_intersects(polygon, "POINT (0 0)"))
expect_false(s2_intersects(polygon, "POINT (0 0)", s2_options(model = "open")))
expect_false(s2_intersects(polygon, "POINT (0 0)", s2_options(model = "semi-open")))
expect_true(s2_intersects(polygon, "POINT (0 0)", s2_options(model = "closed")))
})
test_that("s2_intersects_box() works", {
expect_error(
s2_intersects_box("POINT (-1 -1)", -2, -2, 2, 2, detail = 0),
"Can't create polygon"
)
expect_true(s2_intersects_box("POINT (0.1 0.1)", 0, 0, 1, 1))
expect_true(s2_intersects_box("POINT (0.1 0.1)", 0, 0, 1, 1))
expect_true(s2_intersects_box("POINT (0.1 0.1)", 0, 0, 1, 1, options = s2_options(model = "open")))
expect_true(s2_intersects_box("POINT (0.1 0.1)", 0, 0, 1, 1, options = s2_options(model = "semi-open")))
expect_true(s2_intersects_box("POINT (0.1 0.1)", 0, 0, 1, 1, options = s2_options(model = "closed")))
expect_false(s2_intersects_box("POINT (1 1)", 0, 0, 1, 1))
expect_false(s2_intersects_box("POINT (0 0)", 0, 0, 1, 1))
expect_false(s2_intersects_box("POINT (0 0)", 0, 0, 1, 1))
expect_false(s2_intersects_box("POINT (0 0)", 0, 0, 1, 1, options = s2_options(model = "open")))
expect_false(s2_intersects_box("POINT (0 0)", 0, 0, 1, 1, options = s2_options(model = "semi-open")))
expect_true(s2_intersects_box("POINT (0 0)", 0, 0, 1, 1, options = s2_options(model = "closed")))
expect_true(s2_intersects_box("POINT (-1 -1)", -2, -2, 2, 2))
expect_false(s2_intersects_box("POINT (-1 -1)", 0, 0, 2, 2))
expect_false(s2_intersects_box("POINT (0 0)", 1, 1, 2, 2))
})
test_that("s2_within() works", {
expect_identical(s2_within("POINT (0 0)", NA_character_), NA)
expect_true(s2_within("POINT (0 0)", "POINT (0 0)"))
expect_false(s2_within("POINT (0 0)", "POINT (1 1)"))
expect_false(s2_within("POINT (0 0)", "POINT EMPTY"))
expect_false(s2_within("POINT EMPTY", "POINT (0 0)"))
expect_true(s2_within("POINT (0 0)", "LINESTRING (0 0, 1 1)", s2_options(model = "semi-open")))
expect_false(s2_within("POINT (0 0)", "LINESTRING (0 0, 1 1)", s2_options(model = "open")))
expect_false(s2_within("POINT (0 0)", "LINESTRING (1 1, 2 2)"))
})
test_that("s2_touches() works", {
# is inside
expect_false(s2_touches("POLYGON ((0 0, 0 1, 1 1, 0 0))", "POINT (0.5 0.75)"))
# is outside
expect_false(s2_touches("POLYGON ((0 0, 0 1, 1 1, 0 0))", "POINT (-0.5 0.75)"))
# is vertex
expect_true(s2_touches("POLYGON ((0 0, 0 1, 1 1, 0 0))", "POINT (0 0)"))
})
test_that("s2_dwithin() works", {
expect_identical(s2_dwithin("POINT (0 0)", NA_character_, 0), NA)
expect_true(s2_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 + 0.01, radius = 1))
expect_false(s2_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 - 0.01, radius = 1))
expect_false(s2_dwithin("POINT (0 0)", "POINT EMPTY", 0))
expect_true(s2_dwithin("LINESTRING (-45 0, 45 0)", "POINT (0 20)", 21, radius = 180 / pi))
expect_false(s2_dwithin("LINESTRING (-45 0, 45 0)", "POINT (0 20)", 19, radius = 180 / pi))
# check vectorization
expect_identical(
s2_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 + c(0.01, -0.01), radius = 1),
c(TRUE, FALSE)
)
})
test_that("s2_prepared_dwithin() works", {
expect_identical(s2_prepared_dwithin("POINT (0 0)", NA_character_, 0), NA)
expect_true(s2_prepared_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 + 0.01, radius = 1))
expect_false(s2_prepared_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 - 0.01, radius = 1))
expect_false(s2_prepared_dwithin("POINT (0 0)", "POINT EMPTY", 0))
expect_true(s2_prepared_dwithin("LINESTRING (-45 0, 45 0)", "POINT (0 20)", 21, radius = 180 / pi))
expect_false(s2_prepared_dwithin("LINESTRING (-45 0, 45 0)", "POINT (0 20)", 19, radius = 180 / pi))
# check vectorization
expect_identical(
s2_prepared_dwithin("POINT (0 0)", "POINT (90 0)", pi / 2 + c(0.01, -0.01), radius = 1),
c(TRUE, FALSE)
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.