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***`.
IntersectionMatrix * | transpose ()
| 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:

- set and query the elements of the matrix in a convenient fashion
- convert to and from the standard string representation (specified in SFS Section 2.1.13.2).
- test to see if a matrix matches a given pattern string.

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').

Referenced by add(), IntersectionMatrix(), and transpose().

## 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.

References IntersectionMatrix().

## 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?

References IntersectionMatrix().

## 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]

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]

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?

References IntersectionMatrix().

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

- IntersectionMatrix.h