LSST Applications g063fba187b+cac8b7c890,g0f08755f38+6aee506743,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+b4475c5878,g1dcb35cd9c+8f9bc1652e,g20f6ffc8e0+6aee506743,g217e2c1bcf+73dee94bd0,g28da252d5a+1f19c529b9,g2bbee38e9b+3f2625acfc,g2bc492864f+3f2625acfc,g3156d2b45e+6e55a43351,g32e5bea42b+1bb94961c2,g347aa1857d+3f2625acfc,g35bb328faa+a8ce1bb630,g3a166c0a6a+3f2625acfc,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+8a9e676b2a,g7af13505b9+809c143d88,g80478fca09+6ef8b1810f,g82479be7b0+f568feb641,g858d7b2824+6aee506743,g89c8672015+f4add4ffd5,g9125e01d80+a8ce1bb630,ga5288a1d22+2903d499ea,gb58c049af0+d64f4d3760,gc28159a63d+3f2625acfc,gcab2d0539d+b12535109e,gcf0d15dbbd+46a3f46ba9,gda6a2b7d83+46a3f46ba9,gdaeeff99f8+1711a396fd,ge79ae78c31+3f2625acfc,gef2f8181fd+0a71e47438,gf0baf85859+c1f95f4921,gfa517265be+6aee506743,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
|
IntersectionRegion is a lazy point-set inersection of its operands. More...
#include <CompoundRegion.h>
Public Member Functions | |
IntersectionRegion (std::vector< std::unique_ptr< Region > > operands) | |
Construct by taking ownership of operands. | |
std::unique_ptr< Region > | clone () const override |
clone returns a deep copy of this region. | |
bool | isEmpty () const override |
isEmpty returns true when a region does not contain any points. | |
Box | getBoundingBox () const override |
getBoundingBox returns a bounding-box for this region. | |
Box3d | getBoundingBox3d () const override |
getBoundingBox3d returns a 3-dimensional bounding-box for this region. | |
Circle | getBoundingCircle () const override |
getBoundingCircle returns a bounding-circle for this region. | |
bool | contains (UnitVector3d const &v) const override |
contains tests whether the given unit vector is inside this region. | |
Relationship | relate (Region const &r) const override |
TriState | overlaps (Region const &other) const override |
TriState | overlaps (Box const &) const override |
TriState | overlaps (Circle const &) const override |
TriState | overlaps (ConvexPolygon const &) const override |
TriState | overlaps (Ellipse const &) const override |
std::vector< std::uint8_t > | encode () const override |
encode serializes this region into an opaque byte string. | |
virtual bool | contains (UnitVector3d const &) const=0 |
contains tests whether the given unit vector is inside this region. | |
bool | contains (double x, double y, double z) const |
contains tests whether the unit vector defined by the given (not necessarily normalized) coordinates is inside this region. | |
bool | contains (double lon, double lat) const |
contains tests whether the unit vector defined by the given longitude and latitude coordinates (in radians) is inside this region. | |
size_t | nOperands () const |
Region const & | getOperand (std::size_t n) const |
Relationship | relate (Box const &b) const override |
Relationship | relate (Circle const &c) const override |
Relationship | relate (ConvexPolygon const &p) const override |
Relationship | relate (Ellipse const &e) const override |
Static Public Member Functions | |
static std::vector< std::unique_ptr< Region > > | getRegions (Region const ®ion) |
getRegions returns a vector of Region. | |
static std::unique_ptr< IntersectionRegion > | decode (std::vector< std::uint8_t > const &s) |
static std::unique_ptr< IntersectionRegion > | decode (std::uint8_t const *buffer, size_t n) |
static std::unique_ptr< Region > | decodeBase64 (std::string const &s) |
static std::unique_ptr< Region > | decodeBase64 (std::string_view const &s) |
static TriState | decodeOverlapsBase64 (std::string const &s) |
static TriState | decodeOverlapsBase64 (std::string_view const &s) |
Static Public Attributes | |
static constexpr std::uint8_t | TYPE_CODE = 'i' |
Protected Member Functions | |
std::vector< std::uint8_t > | _encode (std::uint8_t tc) const |
std::vector< std::unique_ptr< Region > > const & | operands () const |
template<typename Compound > | |
void | flatten_operands () |
Static Protected Member Functions | |
static std::vector< std::unique_ptr< Region > > | _decode (std::uint8_t tc, std::uint8_t const *buffer, std::size_t nBytes) |
static TriState | _relationship_to_overlaps (Relationship r) |
IntersectionRegion is a lazy point-set inersection of its operands.
All operations on a IntersectionRegion are implementing by delegating to its nested operand regions and combining the results.
Definition at line 158 of file CompoundRegion.h.
|
explicit |
Construct by taking ownership of operands.
Definition at line 279 of file CompoundRegion.cc.
|
staticprotectedinherited |
Definition at line 135 of file CompoundRegion.cc.
|
protectedinherited |
Definition at line 124 of file CompoundRegion.cc.
|
inlinestaticprotectedinherited |
Definition at line 206 of file Region.h.
|
inlineoverridevirtual |
clone
returns a deep copy of this region.
Implements lsst::sphgeom::Region.
Definition at line 166 of file CompoundRegion.h.
bool lsst::sphgeom::Region::contains | ( | double | lon, |
double | lat ) const |
contains
tests whether the unit vector defined by the given longitude and latitude coordinates (in radians) is inside this region.
Definition at line 117 of file Region.cc.
bool lsst::sphgeom::Region::contains | ( | double | x, |
double | y, | ||
double | z ) const |
|
virtual |
contains
tests whether the given unit vector is inside this region.
Implements lsst::sphgeom::Region.
|
overridevirtual |
contains
tests whether the given unit vector is inside this region.
Implements lsst::sphgeom::Region.
Definition at line 323 of file CompoundRegion.cc.
|
inlinestatic |
decode
deserializes a IntersetionRegion from a byte string produced by encode.
Definition at line 187 of file CompoundRegion.h.
|
inlinestatic |
decode
deserializes a IntersetionRegion from a byte string produced by encode.
Definition at line 184 of file CompoundRegion.h.
|
inlinestaticinherited |
decodeBase64
deserializes a Region from an ASCII string produced by encode and then base64-encoding that result.
This method also interprets ':' as a delimiter for the elements of a UnionRegion, to support cases where a union of region is constructed server-side in a database as a concatenation with that delimiter.
Definition at line 176 of file Region.h.
|
staticinherited |
decodeBase64
deserializes a Region from an ASCII string produced by encode and then base64-encoding that result.
This method also interprets ':' as a delimiter for the elements of a UnionRegion, to support cases where a union of region is constructed server-side in a database as a concatenation with that delimiter.
Definition at line 93 of file Region.cc.
|
inlinestaticinherited |
decodeOverlapsBase64
evaluates an encoded overlap expression.
A single overlap expression is formed by concatenating a pair of base64-encoded regions (Region::encode
then base64 encoding) with '&' as the delimiter. Multiple such pairwise overlap expressions can then be concatenated with '|' as the delimiter to form the logical OR.
|
staticinherited |
decodeOverlapsBase64
evaluates an encoded overlap expression.
A single overlap expression is formed by concatenating a pair of base64-encoded regions (Region::encode
then base64 encoding) with '&' as the delimiter. Multiple such pairwise overlap expressions can then be concatenated with '|' as the delimiter to form the logical OR.
Definition at line 117 of file Region.cc.
|
inlineoverridevirtual |
encode
serializes this region into an opaque byte string.
Byte strings emitted by encode can be deserialized with decode.
Implements lsst::sphgeom::Region.
Definition at line 179 of file CompoundRegion.h.
|
protectedinherited |
Definition at line 103 of file CompoundRegion.cc.
|
overridevirtual |
getBoundingBox
returns a bounding-box for this region.
Implements lsst::sphgeom::Region.
Definition at line 311 of file CompoundRegion.cc.
|
overridevirtual |
getBoundingBox3d
returns a 3-dimensional bounding-box for this region.
Implements lsst::sphgeom::Region.
Definition at line 315 of file CompoundRegion.cc.
|
overridevirtual |
getBoundingCircle
returns a bounding-circle for this region.
Implements lsst::sphgeom::Region.
Definition at line 319 of file CompoundRegion.cc.
|
inlineinherited |
Definition at line 74 of file CompoundRegion.h.
|
staticinherited |
getRegions
returns a vector of Region.
Definition at line 145 of file Region.cc.
|
overridevirtual |
isEmpty
returns true when a region does not contain any points.
Implements lsst::sphgeom::Region.
Definition at line 285 of file CompoundRegion.cc.
|
inlineinherited |
Definition at line 71 of file CompoundRegion.h.
|
inlineprotectedinherited |
Definition at line 104 of file CompoundRegion.h.
overlaps
tests whether two regions overlap. This method returns a TriState
object, when the value is true
it means that regions definitely overlap, false
means they are definitely disjont, and unknown state means that they may or may not overlap.
Implements lsst::sphgeom::Region.
Definition at line 382 of file CompoundRegion.cc.
overlaps
tests whether two regions overlap. This method returns a TriState
object, when the value is true
it means that regions definitely overlap, false
means they are definitely disjont, and unknown state means that they may or may not overlap.
Implements lsst::sphgeom::Region.
Definition at line 386 of file CompoundRegion.cc.
|
overridevirtual |
overlaps
tests whether two regions overlap. This method returns a TriState
object, when the value is true
it means that regions definitely overlap, false
means they are definitely disjont, and unknown state means that they may or may not overlap.
Implements lsst::sphgeom::Region.
Definition at line 390 of file CompoundRegion.cc.
overlaps
tests whether two regions overlap. This method returns a TriState
object, when the value is true
it means that regions definitely overlap, false
means they are definitely disjont, and unknown state means that they may or may not overlap.
Implements lsst::sphgeom::Region.
Definition at line 394 of file CompoundRegion.cc.
overlaps
tests whether two regions overlap. This method returns a TriState
object, when the value is true
it means that regions definitely overlap, false
means they are definitely disjont, and unknown state means that they may or may not overlap.
Implements lsst::sphgeom::Region.
Definition at line 361 of file CompoundRegion.cc.
|
overridevirtualinherited |
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
S & DISJOINT
is set only if A and B do not have any points in common.S & CONTAINS
is set only if A contains all points in B.S & WITHIN
is set only if B contains all points in A.Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::Region.
Definition at line 119 of file CompoundRegion.cc.
|
overridevirtualinherited |
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
S & DISJOINT
is set only if A and B do not have any points in common.S & CONTAINS
is set only if A contains all points in B.S & WITHIN
is set only if B contains all points in A.Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::Region.
Definition at line 120 of file CompoundRegion.cc.
|
overridevirtualinherited |
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
S & DISJOINT
is set only if A and B do not have any points in common.S & CONTAINS
is set only if A contains all points in B.S & WITHIN
is set only if B contains all points in A.Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::Region.
Definition at line 121 of file CompoundRegion.cc.
|
overridevirtualinherited |
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
S & DISJOINT
is set only if A and B do not have any points in common.S & CONTAINS
is set only if A contains all points in B.S & WITHIN
is set only if B contains all points in A.Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::Region.
Definition at line 122 of file CompoundRegion.cc.
|
overridevirtual |
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
S & DISJOINT
is set only if A and B do not have any points in common.S & CONTAINS
is set only if A contains all points in B.S & WITHIN
is set only if B contains all points in A.Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::CompoundRegion.
Definition at line 332 of file CompoundRegion.cc.
|
staticconstexpr |
Definition at line 160 of file CompoundRegion.h.