Open
Description
We probably need this to compute intersection dimensionality, so that intersection(p1, p2; trait = PolygonTrait())
where touches(p1, p2)
can short circuit. This is a consequence of what was discussed on the Apr 20, 2024 call - specifically, that the user should be able to control the output type of set operations. I may not care about producing a linestring from polygon intersections, and may wish to treat them as separate entities if they touch but do not intersect.
Some useful resources:
- DE-9IM paper: https://www.researchgate.net/publication/221471671_A_Small_Set_of_Formal_Topological_Relationships_Suitable_for_End-User_Interaction
- Wikipedia: https://en.wikipedia.org/wiki/DE-9IM
Ideally, this would come in two forms:
relate(geom1, geom2)::SMatrix{(3, 3), Bool}
relate(geom1, geom2, mat::AbstractMatrix{Bool})::Bool # test whether the `true` elements of the matrix return `true`. This way we can avoid unnecessary computation.