GEOS 3.14.0dev
Public Member Functions | Static Public Member Functions | List of all members
geos::geom::IntersectionMatrix Class Reference

Implementation of Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. More...

#include <IntersectionMatrix.h>

Public Member Functions

 IntersectionMatrix ()
 Default constructor.
 
 IntersectionMatrix (const std::string &elements)
 Overridden constructor.
 
 IntersectionMatrix (const IntersectionMatrix &other)
 Copy constructor.
 
bool matches (const std::string &requiredDimensionSymbols) const
 Returns whether the elements of this IntersectionMatrix satisfies the required dimension symbols.
 
void add (IntersectionMatrix *other)
 Adds one matrix to another.
 
void set (Location row, Location column, int dimensionValue)
 Changes the value of one of this IntersectionMatrixs elements.
 
void set (const std::string &dimensionSymbols)
 Changes the elements of this IntersectionMatrix to the dimension symbols in dimensionSymbols.
 
void setAtLeast (Location row, Location column, int minimumDimensionValue)
 Changes the specified element to minimumDimensionValue if the element is less.
 
void setAtLeastIfValid (Location row, Location column, int minimumDimensionValue)
 If row >= 0 and column >= 0, changes the specified element to minimumDimensionValue if the element is less. Does nothing if row <0 or column < 0.
 
void setAtLeast (std::string minimumDimensionSymbols)
 For each element in this IntersectionMatrix, changes the element to the corresponding minimum dimension symbol if the element is less.
 
void setAll (int dimensionValue)
 Changes the elements of this IntersectionMatrix to dimensionValue.
 
int get (Location row, Location column) const
 Returns the value of one of this IntersectionMatrixs elements.
 
bool isDisjoint () const
 Returns true if this IntersectionMatrix is FF*FF****.
 
bool isIntersects () const
 Returns true if isDisjoint returns false.
 
bool isTouches (int dimensionOfGeometryA, int dimensionOfGeometryB) const
 Returns true if this IntersectionMatrix is FT*******, F**T***** or F***T****.
 
bool isCrosses (int dimensionOfGeometryA, int dimensionOfGeometryB) const
 Returns true if this IntersectionMatrix is:
 
bool isWithin () const
 Returns true if this IntersectionMatrix is T*F**F***.
 
bool isContains () const
 Returns true if this IntersectionMatrix is T*****FF*.
 
bool isEquals (int dimensionOfGeometryA, int dimensionOfGeometryB) const
 Returns true if this IntersectionMatrix is T*F**FFF*.
 
bool isOverlaps (int dimensionOfGeometryA, int dimensionOfGeometryB) const
 Returns true if this IntersectionMatrix is:
 
bool isCovers () const
 Returns true if this IntersectionMatrix is T*****FF* or T****FF or ***T**FF* or ****T*FF*
 
bool isCoveredBy () const
 Returns true if this IntersectionMatrix is T*F**F*** *TF**F*** or **FT*F*** or **F*TF***
 
IntersectionMatrixtranspose ()
 Transposes this IntersectionMatrix.
 
std::string toString () const
 Returns a nine-character String representation of this IntersectionMatrix.
 

Static Public Member Functions

static bool matches (int actualDimensionValue, char requiredDimensionSymbol)
 Tests if given dimension value satisfies the dimension symbol.
 
static bool matches (const std::string &actualDimensionSymbols, const std::string &requiredDimensionSymbols)
 Returns true if each of the actual dimension symbols satisfies the corresponding required dimension symbol.
 

Detailed Description

Implementation of Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix.

Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. This class can used to represent both computed DE-9IM's (like 212FF1FF2) as well as patterns for matching them (like T*T******).

Methods are provided to:

For a description of the DE-9IM, see the OpenGIS Simple Features Specification for SQL.

Todo:
Suggestion: add equal and not-equal operator to this class.

Constructor & Destructor Documentation

◆ IntersectionMatrix() [1/3]

geos::geom::IntersectionMatrix::IntersectionMatrix ( )

Default constructor.

Creates an IntersectionMatrix with Dimension::False dimension values ('F').

◆ IntersectionMatrix() [2/3]

geos::geom::IntersectionMatrix::IntersectionMatrix ( const std::string &  elements)

Overridden constructor.

Creates an IntersectionMatrix with the given dimension symbols.

Parameters
elements- reference to string containing pattern of dimension values for elements.

◆ IntersectionMatrix() [3/3]

geos::geom::IntersectionMatrix::IntersectionMatrix ( const IntersectionMatrix other)

Copy constructor.

Creates an IntersectionMatrix with the same elements as other.

Todo:
Add assignment operator to make this class fully copyable.

Member Function Documentation

◆ add()

void geos::geom::IntersectionMatrix::add ( IntersectionMatrix other)

Adds one matrix to another.

Addition is defined by taking the maximum dimension value of each position in the summand matrices.

Parameters
other- the matrix to add.
Todo:
Why the 'other' matrix is not passed by const-reference?

◆ get()

int geos::geom::IntersectionMatrix::get ( Location  row,
Location  column 
) const
inline

Returns the value of one of this IntersectionMatrixs elements.

Parameters
row- the row of this IntersectionMatrix, indicating the interior, boundary or exterior of the first Geometry.
column- the column of this IntersectionMatrix, indicating the interior, boundary or exterior of the second Geometry.
Returns
the dimension value at the given matrix position.

◆ isContains()

bool geos::geom::IntersectionMatrix::isContains ( ) const

Returns true if this IntersectionMatrix is T*****FF*.

Returns
true if the first Geometry contains the second.

◆ isCoveredBy()

bool geos::geom::IntersectionMatrix::isCoveredBy ( ) const

Returns true if this IntersectionMatrix is T*F**F*** *TF**F*** or **FT*F*** or **F*TF***

Returns
true if the first Geometry is covered by the second

◆ isCovers()

bool geos::geom::IntersectionMatrix::isCovers ( ) const

Returns true if this IntersectionMatrix is T*****FF* or T****FF or ***T**FF* or ****T*FF*

Returns
true if the first Geometry covers the second

◆ isCrosses()

bool geos::geom::IntersectionMatrix::isCrosses ( int  dimensionOfGeometryA,
int  dimensionOfGeometryB 
) const

Returns true if this IntersectionMatrix is:

  • T*T****** (for a point and a curve, a point and an area or a line and an area)
  • 0******** (for two curves)
Parameters
dimensionOfGeometryA- he dimension of the first Geometry.
dimensionOfGeometryB- the dimension of the second Geometry.
Returns
true if the two Geometry's related by this IntersectionMatrix cross.

For this function to return true, the Geometrys must be a point and a curve; a point and a surface; two curves; or a curve and a surface.

◆ isDisjoint()

bool geos::geom::IntersectionMatrix::isDisjoint ( ) const

Returns true if this IntersectionMatrix is FF*FF****.

Returns
true if the two Geometrys related by this IntersectionMatrix are disjoint.

◆ isEquals()

bool geos::geom::IntersectionMatrix::isEquals ( int  dimensionOfGeometryA,
int  dimensionOfGeometryB 
) const

Returns true if this IntersectionMatrix is T*F**FFF*.

Parameters
dimensionOfGeometryA- he dimension of the first Geometry.
dimensionOfGeometryB- the dimension of the second Geometry.
Returns
true if the two Geometry's related by this IntersectionMatrix are equal; the Geometrys must have the same dimension for this function to return true

◆ isIntersects()

bool geos::geom::IntersectionMatrix::isIntersects ( ) const

Returns true if isDisjoint returns false.

Returns
true if the two Geometrys related by this IntersectionMatrix intersect.

◆ isOverlaps()

bool geos::geom::IntersectionMatrix::isOverlaps ( int  dimensionOfGeometryA,
int  dimensionOfGeometryB 
) const

Returns true if this IntersectionMatrix is:

  • T*T***T** (for two points or two surfaces)
  • 1*T***T** (for two curves)
Parameters
dimensionOfGeometryA- he dimension of the first Geometry.
dimensionOfGeometryB- the dimension of the second Geometry.
Returns
true if the two Geometry's related by this IntersectionMatrix overlap.

For this function to return true, the Geometrys must be two points, two curves or two surfaces.

◆ isTouches()

bool geos::geom::IntersectionMatrix::isTouches ( int  dimensionOfGeometryA,
int  dimensionOfGeometryB 
) const

Returns true if this IntersectionMatrix is FT*******, F**T***** or F***T****.

Parameters
dimensionOfGeometryA- the dimension of the first Geometry.
dimensionOfGeometryB- the dimension of the second Geometry.
Returns
true if the two Geometry's related by this IntersectionMatrix touch, false if both Geometrys are points.

◆ isWithin()

bool geos::geom::IntersectionMatrix::isWithin ( ) const

Returns true if this IntersectionMatrix is T*F**F***.

Returns
true if the first Geometry is within the second.

◆ matches() [1/3]

static bool geos::geom::IntersectionMatrix::matches ( const std::string &  actualDimensionSymbols,
const std::string &  requiredDimensionSymbols 
)
static

Returns true if each of the actual dimension symbols satisfies the corresponding required dimension symbol.

Parameters
actualDimensionSymbols- nine dimension symbols to validate. Possible values are {T, F, * , 0, 1, 2}.
requiredDimensionSymbols- nine dimension symbols to validate against. Possible values are {T, F, * , 0, 1, 2}.
Returns
true if each of the required dimension symbols encompass the corresponding actual dimension symbol.

◆ matches() [2/3]

bool geos::geom::IntersectionMatrix::matches ( const std::string &  requiredDimensionSymbols) const

Returns whether the elements of this IntersectionMatrix satisfies the required dimension symbols.

Parameters
requiredDimensionSymbols- nine dimension symbols with which to compare the elements of this IntersectionMatrix. Possible values are {T, F, * , 0, 1, 2}.
Returns
true if this IntersectionMatrix matches the required dimension symbols.

◆ matches() [3/3]

static bool geos::geom::IntersectionMatrix::matches ( int  actualDimensionValue,
char  requiredDimensionSymbol 
)
static

Tests if given dimension value satisfies the dimension symbol.

Parameters
actualDimensionValue- valid dimension value stored in the IntersectionMatrix. Possible values are {TRUE, FALSE, DONTCARE, 0, 1, 2}.
requiredDimensionSymbol- a character used in the string representation of an IntersectionMatrix. Possible values are {T, F, * , 0, 1, 2}.
Returns
true if the dimension symbol encompasses the dimension value.

◆ set() [1/2]

void geos::geom::IntersectionMatrix::set ( const std::string &  dimensionSymbols)

Changes the elements of this IntersectionMatrix to the dimension symbols in dimensionSymbols.

Parameters
dimensionSymbols- nine dimension symbols to which to set this IntersectionMatrix elements. Possible values are {T, F, * , 0, 1, 2}.

◆ set() [2/2]

void geos::geom::IntersectionMatrix::set ( Location  row,
Location  column,
int  dimensionValue 
)

Changes the value of one of this IntersectionMatrixs elements.

Parameters
row- the row of this IntersectionMatrix, indicating the interior, boundary or exterior of the first Geometry.
column- the column of this IntersectionMatrix, indicating the interior, boundary or exterior of the second Geometry.
dimensionValue- the new value of the element.

◆ setAll()

void geos::geom::IntersectionMatrix::setAll ( int  dimensionValue)

Changes the elements of this IntersectionMatrix to dimensionValue.

Parameters
dimensionValue- the dimension value to which to set this IntersectionMatrix elements. Possible values {TRUE, FALSE, DONTCARE, 0, 1, 2}.

◆ setAtLeast() [1/2]

void geos::geom::IntersectionMatrix::setAtLeast ( Location  row,
Location  column,
int  minimumDimensionValue 
)

Changes the specified element to minimumDimensionValue if the element is less.

Parameters
row- the row of this IntersectionMatrix, indicating the interior, boundary or exterior of the first Geometry.
column- the column of this IntersectionMatrix, indicating the interior, boundary or exterior of the second Geometry.
minimumDimensionValue- the dimension value with which to compare the element. The order of dimension values from least to greatest is {DONTCARE, TRUE, FALSE, 0, 1, 2}.

◆ setAtLeast() [2/2]

void geos::geom::IntersectionMatrix::setAtLeast ( std::string  minimumDimensionSymbols)

For each element in this IntersectionMatrix, changes the element to the corresponding minimum dimension symbol if the element is less.

Parameters
minimumDimensionSymbols- nine dimension symbols with which to compare the elements of this IntersectionMatrix. The order of dimension values from least to greatest is {DONTCARE, TRUE, FALSE, 0, 1, 2} .

◆ setAtLeastIfValid()

void geos::geom::IntersectionMatrix::setAtLeastIfValid ( Location  row,
Location  column,
int  minimumDimensionValue 
)

If row >= 0 and column >= 0, changes the specified element to minimumDimensionValue if the element is less. Does nothing if row <0 or column < 0.

Parameters
row- the row of this IntersectionMatrix, indicating the interior, boundary or exterior of the first Geometry.
column- the column of this IntersectionMatrix, indicating the interior, boundary or exterior of the second Geometry.
minimumDimensionValue- the dimension value with which to compare the element. The order of dimension values from least to greatest is {DONTCARE, TRUE, FALSE, 0, 1, 2}.

◆ toString()

std::string geos::geom::IntersectionMatrix::toString ( ) const

Returns a nine-character String representation of this IntersectionMatrix.

Returns
the nine dimension symbols of this IntersectionMatrix in row-major order.

◆ transpose()

IntersectionMatrix * geos::geom::IntersectionMatrix::transpose ( )

Transposes this IntersectionMatrix.

Returns
this IntersectionMatrix as a convenience.
Todo:

It returns 'this' pointer so why not to return const-pointer?

May be it would be better to return copy of transposed matrix?


The documentation for this class was generated from the following file: