Namespace NetTopologySuite.Geometries
Contains the Geometry class hierarchy.
The .Net Topology Suite (NTS) is a .Net API that implements a core set of spatial data operations using an explicit precision model and robust geometric algorithms. NTS is intended to be used in the development of applications that support the validation, cleaning, integration and querying of spatial datasets.
It is a direct port of the popular Java Topology Suite (JTS).
NTS attempts to implement the OpenGIS Simple Features Specification (SFS) as accurately as possible. In some cases the SFS is unclear or omits a specification; in this case NTS attempts to choose a reasonable and consistent alternative. Differences from and elaborations of the SFS are documented in this specification.
Package Specification
- Java Topology Suite Technical Specifications
- OpenGIS Simple Features Specification for SQL
Classes
Coordinate
A lightweight class used to store coordinates on the 2-dimensional Cartesian plane.
The base data object is suitable for use with coordinate sequences with
dimension
= 2 and measures
= 0.
CoordinateArrays
Useful utility functions for handling Coordinate arrays.
CoordinateArrays.BidirectionalComparator
A comparator for Coordinate arrays modulo their directionality. E.g. if two coordinate arrays are identical but reversed they will compare as equal under this ordering. If the arrays are not equal, the ordering returned is the ordering in the forward direction.
CoordinateArrays.ForwardComparator
Compares two Coordinate arrays in the forward direction of their coordinates, using lexicographic ordering.
CoordinateEqualityComparer
A class that can be used to test coordinates for equality.
It uses the algorithm that was default for NTS prior to v2.2,
i.e. checks if the 2d distance between coordinates x
and y
is less than or equal to a tolerance value.
CoordinateList
A list of Coordinates, which may be set to prevent repeated coordinates from occurring in the list.
CoordinateM
A lightweight class used to store coordinates on the 2-dimensional Cartesian plane and an additional measure (M) value.
This data object is suitable for use with coordinate sequences with
dimension
= 3 and measures
= 1.
Coordinates
Useful utility functions for handling Coordinate objects.
CoordinateSequence
CoordinateSequenceComparator
Compares two CoordinateSequences.
CoordinateSequenceEx
CoordinateSequenceFactory
An object that knows how to build a particular implementation of
CoordinateSequence
from an array of Coordinates.
CoordinateSequences
Utility functions for manipulating CoordinateSequences.
CoordinateZ
A lightweight class used to store coordinates on the 2-dimensional Cartesian plane and an additional z-ordinate (Z) value.
This base data object is suitable for use with coordinate sequences with
dimension
= 3 and measures
= 0.
CoordinateZM
A lightweight class used to store coordinates on the 2-dimensional Cartesian plane and additional z- and m-ordinate values (Z, M).
This data object is suitable for use with coordinate sequences with
dimension
= 4 and measures
= 1.
DimensionUtility
Class containing static methods for conversions between dimension values and characters.
Envelope
Defines a rectangular region of the 2D coordinate plane.
Geometry
A representation of a planar, linear vector geometry.
GeometryCollection
Basic implementation of GeometryCollection
.
GeometryCollectionEnumerator
Iterates over all Geometry
's in a GeometryCollection
.
Implements a pre-order depth-first traversal of the GeometryCollection
(which may be nested). The original GeometryCollection
is
returned as well (as the first object), as are all sub-collections. It is
simple to ignore the GeometryCollection
objects if they are not
needed.
GeometryComponentFilter
An IGeometryComponentFilter implementation that applies filtering with the provided FilterMethod
GeometryFactory
Supplies a set of utility methods for building Geometry objects from lists of Coordinates.
GeometryFactoryEx
An extended GeometryFactory that is capable of enforcing a ring orientation for polygons.
GeometryOverlay
A class that encapsulates geometry overlay functionality
IntersectionMatrix
Models a Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix.
LinearRing
Models an OGC SFS LinearRing
.
LineSegment
Represents a line segment defined by two Coordinate
s.
Provides methods to compute various geometric properties
and relationships of line segments.
This class is designed to be easily mutable (to the extent of
having its contained points public).
This supports a common pattern of reusing a single LineSegment
object as a way of computing segment properties on the
segments defined by arrays or lists of Coordinate
s.
LineString
Models an OGC-style LineString
LocationUtility
Utility class for Location enumeration
MultiLineString
Models a collection of LineStrings.
Any collection of LineString
s is a valid MultiLineString
.
MultiPoint
Models a collection of Point
s.
MultiPolygon
Basic implementation of MultiPolygon
.
OctagonalEnvelope
A bounding container for a Geometry which is in the shape of a general octagon.
OgcCompliantGeometryFactory
OGC compliant geometry factory
OrdinatesUtility
Static utility functions for dealing with Ordinates and dimension
PerOrdinateEqualityComparer
A class that can be used to test coordinates for equality.
This class test for each ordinate if the distance is less than a tolerance value.
Point
Represents a single point.
A Point
is topologically valid if and only if:
- The coordinate which defines it if any) is a valid coordinate
(i.e. does not have an
NaN
X- or Y-ordinate
Polygon
Represents a polygon with linear edges, which may include holes. The outer boundary (shell) and inner boundaries (holes) of the polygon are represented by {@link LinearRing}s. The boundary rings of the polygon may have any orientation. Polygons are closed, simple geometries by definition.
The polygon model conforms to the assertions specified in the OpenGIS Simple Features Specification for SQL.
A Polygon
is topologically valid if and only if:
- the coordinates which define it are valid coordinates
- the linear rings for the shell and holes are valid (i.e. are closed and do not self-intersect)
- holes touch the shell or another hole at at most one point (which implies that the rings of the shell and holes must not cross)
- the interior of the polygon is connected, or equivalently no sequence of touching holes makes the interior of the polygon disconnected (i.e. effectively split the polygon into two pieces).
PrecisionModel
Specifies the precision model of the Coordinate
s in a Geometry
.
In other words, specifies the grid of allowable points for a Geometry
.
A precision model may befloating (Floating or FloatingSingle),
in which case normal floating-point value semantics apply.
TopologyException
Indicates an invalid or inconsistent topological situation encountered during processing
Triangle
Represents a planar triangle, and provides methods for calculating various properties of triangles.
Structs
Position
Indicates the position of a location relative to a node or edge component of a planar topological structure.
Quadrant
Quadrant values
Interfaces
IBoundable<T, TItem>
A spatial object in an AbstractSTRtree.
ICoordinateFilter
An interface for classes which use the values of the coordinates in a Geometry. Coordinate filters can be used to implement centroid and envelope computation, and many other functions.
ICoordinateFilter
is
an example of the Gang-of-Four Visitor pattern.
Note: it is not recommended to use these filters to mutate the coordinates. There is no guarantee that the coordinate is the actual object stored in the source geometry. In particular, modified values may not be preserved if the source Geometry uses a non-default CoordinateSequence. If in-place mutation is required, use ICoordinateSequenceFilter.
ICoordinateSequenceFilter
An interface for classes which process the coordinates in a CoordinateSequence.
A filter can either record information about each coordinate,
or change the value of the coordinate.
Filters can be
used to implement operations such as coordinate transformations, centroid and
envelope computation, and many other functions.
Geometry classes support the concept of applying a
CoordinateSequenceFilter
to each
CoordinateSequences they contain.
For maximum efficiency, the execution of filters can be short-circuited by using the Done property.
IEntireCoordinateSequenceFilter
A variant of ICoordinateSequenceFilter, except it receives each CoordinateSequence just once, instead of once for each of its coordinates.
IExpandable<T>
Interface describing objects that can expand themselves by objects of type T
.
IGeometryComponentFilter
Geometry
classes support the concept of applying
an IGeometryComponentFilter
filter to the Geometry
.
IGeometryFilter
GeometryCollection
classes support the concept of
applying a IGeometryFilter
to the Geometry
.
The filter is applied to every element Geometry
.
A IGeometryFilter
can either record information about the Geometry
or change the Geometry
in some way.
IGeometryFilter
is an example of the Gang-of-Four Visitor pattern.
IIntersectable<T>
Interface describing objects that can perform an intersects predicate with T
objects.
ILineal
Interface to identify all Geometry
subclasses that have a Dimension
of Curve
and have components which are LineStrings.
IPolygonal
Interface to identify all Geometry
subclasses that have a Dimension
of Surface
and have components that are Polygons.
IPuntal
Interface to identify all Geometry
subclasses that have a Dimension
of Point
and have components that ar Points.
Enums
Dimension
Provides constants representing the dimensions of a point, a curve and a surface.
Geometry.SortIndexValue
An enumeration of sort values for geometries
LinearRingOrientation
An enumeration of ring orientation values
Location
The location of a Coordinate relative to a Geometry
OgcGeometryType
Enumeration of OGC Geometry Types
Ordinate
Identifies the different well-supported components of coordinate values.
All supported coordinates define values for at least the X and the Y components.
The first 16 spatial and 16 measure dimensions may also be accessed this way.
Ordinates
Flags for Ordinate values
PrecisionModels
Delegates
FilterMethod
Delegate function declaration to handle filter operation