Opened 7 years ago
Closed 7 years ago
#11232 closed Feature Requests (fixed)
User defined spatial predicate within Boost Geometry
Reported by: | Owned by: | Barend Gehrels | |
---|---|---|---|
Milestone: | Boost 1.59.0 | Component: | geometry |
Version: | Boost 1.56.0 | Severity: | Problem |
Keywords: | geometry relate | Cc: |
Description
I need to determine whether the interiors of two geometries intersect. An InteriorsIntersect predicate is not specified by OGC or Boost Geometry but is defined by the DE-9IM matrix:
T * * * * * * * *
I've created my own predicate using the relate function in Boost Geometry.
namespace bgr = boost::geometry::detail::relate; using InteriorsIntersectMask = bgr::static_mask<'T','*','*','*','*','*','*','*','*'>; template<typename Geom1, typename Geom2> inline bool interiorsIntersect(const Geom1& geom1, const Geom2& geom2) { return bgr::relate<InteriorsIntersectMask>(geom1, geom2); }
This works great. My only concern is that the relate function and static_mask type are not documented as part of the Boost Geometry API and are implementation details as far as I can tell. Is it safe to use relate in this way? Is there an alternative to achieving the same goal using Boost Geometry? Ideally I would like to see relate be an algorithm within boost/geometry/algorithms.
Change History (3)
comment:1 by , 7 years ago
Milestone: | To Be Determined → Boost 1.59.0 |
---|
comment:3 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Yes, this was planned some time ago already. This is a GitHub pull request with the change: https://github.com/boostorg/geometry/pull/288
The interface is the same for run-time and compile-time masks.
Does it satisfy your needs?