Evaluate the membership degree of a point in a pgeometry
object
Source: R/general_operations.R
spa_eval.Rd
spa_eval()
evaluates the membership degree of a given point in a spatial plateau object of any type.
It returns a value in [0, 1] that indicates to which extent the point belongs to the pgeometry
object.
Value
A numeric value between 0 and 1 that indicates the membership degree of a point (i.e., sfg
object) in a spatial plateau object (i.e., pgeometry
object).
Details
The spa_eval()
returns the membership degree of a simple point object (i.e., sfg
object) in a given spatial plateau object (i.e., pgeometry
object).
This evaluation depends on the following basic cases:
if the simple point object belongs to the interior or boundary of one component of the spatial plateau object, it returns the membership degree of that component.
if the simple point object intersects more components (e.g., boundaries of region components, or different line components), it returns the maximum membership degree of all intersected components.
if the simple point object is disjoint to the support of the spatial plateau object, it returns 0.
Examples
library(sf)
# Point components
pcp1 <- create_component("POINT(0 0)", 0.3)
pcp2 <- create_component("MULTIPOINT((2 2), (2 4), (2 0))", 0.5)
pcp3 <- create_component("MULTIPOINT((1 1), (3 1), (1 3), (3 3))", 0.9)
pcp4 <- create_component("MULTIPOINT((1 2), (2 1), (3 2))", 1)
pcp5 <- create_component("MULTIPOINT((0 0.5), (2 3))", 0.7)
pcp6 <- create_component("MULTIPOINT((0 1), (3 3.5))", 0.85)
pcp7 <- create_component("MULTIPOINT((1 0), (4 2))", 0.4)
# Line components
lcp1 <- create_component("LINESTRING(0 0, 1 1.5)", 0.2)
lcp2 <- create_component("LINESTRING(1 3, 1 2, 2 0.5)", 0.5)
lcp3 <- create_component("LINESTRING(2 1.2, 3 1.6, 4 4)", 0.7)
lcp4 <- create_component("LINESTRING(1 1.5, 2 1.2)", 1.0)
lcp5 <- create_component("LINESTRING(-1 1, 2 2)", 0.9)
# Polygon components
rcp1 <- create_component("POLYGON((0 0, 1 4, 2 2, 0 0))", 0.4)
rcp2 <- create_component("POLYGON((2 0.5, 4 1, 4 0, 2 0.5))", 0.8)
# Creating spatial plateau objects
ppoint <- create_pgeometry(list(pcp1, pcp2, pcp3, pcp4, pcp5), "PLATEAUPOINT")
pline <- create_pgeometry(list(lcp1, lcp2, lcp3), "PLATEAULINE")
pregion <- create_pgeometry(list(rcp1, rcp2), "PLATEAUREGION")
pcomp <- create_pgeometry(list(pcp6, pcp7, lcp4, lcp5), "PLATEAUCOMPOSITION")
pcol <- create_pgeometry(list(ppoint, pline, pregion, pcomp), "PLATEAUCOLLECTION")
point <- st_point(c(0, 0))
spa_eval(ppoint, point)
#> [1] 0.3
spa_eval(pline, point)
#> [1] 0.2
spa_eval(pregion, point)
#> [1] 0.4
spa_eval(pcomp, point)
#> [1] 0
spa_eval(pcol, point)
#> [1] 0.4