|
virtual Geometry * | clone () const =0 |
| Make a deep-copy of this Geometry.
|
|
virtual | ~Geometry () |
| Destroy Geometry and all components.
|
|
const GeometryFactory * | getFactory () const |
| Gets the factory which contains the context in which this geometry was created. More...
|
|
void | setUserData (void *newUserData) |
| A simple scheme for applications to add their own custom data to a Geometry. An example use might be to add an object representing a Coordinate Reference System. More...
|
|
void * | getUserData () const |
| Gets the user data object for this geometry, if any. More...
|
|
virtual int | getSRID () const |
|
virtual void | setSRID (int newSRID) |
|
const PrecisionModel * | getPrecisionModel () const |
| Get the PrecisionModel used to create this Geometry.
|
|
virtual const Coordinate * | getCoordinate () const =0 |
| Returns a vertex of this Geometry, or NULL if this is the empty geometry.
|
|
virtual CoordinateSequence * | getCoordinates () const =0 |
| Returns this Geometry vertices. Caller takes ownership of the returned object.
|
|
virtual std::size_t | getNumPoints () const =0 |
| Returns the count of this Geometrys vertices.
|
|
virtual bool | isSimple () const |
| Returns false if the Geometry not simple.
|
|
virtual std::string | getGeometryType () const =0 |
| Return a string representation of this Geometry type.
|
|
virtual GeometryTypeId | getGeometryTypeId () const =0 |
| Return an integer representation of this Geometry type.
|
|
virtual std::size_t | getNumGeometries () const |
|
virtual const Geometry * | getGeometryN (std::size_t) const |
|
virtual bool | isValid () const |
| Tests the validity of this Geometry . More...
|
|
virtual bool | isEmpty () const =0 |
| Returns whether or not the set of points in this Geometry is empty.
|
|
virtual bool | isRectangle () const |
| Polygon overrides to check for actual rectangle.
|
|
virtual Dimension::DimensionType | getDimension () const =0 |
| Returns the dimension of this Geometry (0=point, 1=line, 2=surface)
|
|
virtual int | getCoordinateDimension () const =0 |
| Returns the coordinate dimension of this Geometry (2=XY, 3=XYZ, 4=XYZM in future).
|
|
virtual Geometry * | getBoundary () const =0 |
| Returns the boundary, or an empty geometry of appropriate dimension if this Geometry is empty. More...
|
|
virtual int | getBoundaryDimension () const =0 |
| Returns the dimension of this Geometrys inherent boundary.
|
|
virtual Geometry * | getEnvelope () const |
| Returns this Geometrys bounding box.
|
|
virtual const Envelope * | getEnvelopeInternal () const |
| Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty.
|
|
virtual bool | disjoint (const Geometry *other) const |
|
virtual bool | touches (const Geometry *other) const |
| Returns true if the DE-9IM intersection matrix for the two Geometrys is FT*******, F**T***** or F***T****.
|
|
virtual bool | intersects (const Geometry *g) const |
| Returns true if disjoint returns false.
|
|
virtual bool | crosses (const Geometry *g) const |
|
virtual bool | within (const Geometry *g) const |
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**F***.
|
|
virtual bool | contains (const Geometry *g) const |
| Returns true if other.within(this) returns true.
|
|
virtual bool | overlaps (const Geometry *g) const |
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).
|
|
virtual bool | relate (const Geometry *g, const std::string &intersectionPattern) const |
| Returns true if the elements in the DE-9IM intersection matrix for the two Geometrys match the elements in intersectionPattern. More...
|
|
bool | relate (const Geometry &g, const std::string &intersectionPattern) const |
|
virtual IntersectionMatrix * | relate (const Geometry *g) const |
| Returns the DE-9IM intersection matrix for the two Geometrys.
|
|
IntersectionMatrix * | relate (const Geometry &g) const |
|
virtual bool | equals (const Geometry *g) const |
| Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**FFF*.
|
|
bool | covers (const Geometry *g) const |
| Returns true if this geometry covers the specified geometry. More...
|
|
bool | coveredBy (const Geometry *g) const |
| Tests whether this geometry is covered by the specified geometry. More...
|
|
virtual std::string | toString () const |
| Returns the Well-known Text representation of this Geometry.
|
|
virtual std::string | toText () const |
|
virtual Geometry * | buffer (double distance) const |
| Returns a buffer region around this Geometry having the given width. More...
|
|
virtual Geometry * | buffer (double distance, int quadrantSegments) const |
| Returns a buffer region around this Geometry having the given width and with a specified number of segments used to approximate curves. More...
|
|
virtual Geometry * | buffer (double distance, int quadrantSegments, int endCapStyle) const |
| Computes a buffer area around this geometry having the given width and with a specified accuracy of approximation for circular arcs, and using a specified end cap style. More...
|
|
virtual Geometry * | convexHull () const |
| Returns the smallest convex Polygon that contains all the points in the Geometry.
|
|
virtual Geometry * | intersection (const Geometry *other) const |
| Returns a Geometry representing the points shared by this Geometry and other. More...
|
|
Geometry * | Union (const Geometry *other) const |
| Returns a Geometry representing all the points in this Geometry and other. More...
|
|
AutoPtr | Union () const |
|
virtual Geometry * | difference (const Geometry *other) const |
| Returns a Geometry representing the points making up this Geometry that do not make up other. More...
|
|
virtual Geometry * | symDifference (const Geometry *other) const |
| Returns a set combining the points in this Geometry not in other, and the points in other not in this Geometry. More...
|
|
virtual bool | equalsExact (const Geometry *other, double tolerance=0) const =0 |
| Returns true if the two Geometrys are exactly equal, up to a specified tolerance.
|
|
virtual void | apply_rw (const CoordinateFilter *filter)=0 |
|
virtual void | apply_ro (CoordinateFilter *filter) const =0 |
|
virtual void | apply_rw (GeometryFilter *filter) |
|
virtual void | apply_ro (GeometryFilter *filter) const |
|
virtual void | apply_rw (GeometryComponentFilter *filter) |
|
virtual void | apply_ro (GeometryComponentFilter *filter) const |
|
virtual void | apply_rw (CoordinateSequenceFilter &filter)=0 |
|
virtual void | apply_ro (CoordinateSequenceFilter &filter) const =0 |
|
template<class T > |
void | applyComponentFilter (T &f) const |
| Apply a fiter to each component of this geometry. The filter is expected to provide a .filter(const Geometry*) method. More...
|
|
virtual void | normalize ()=0 |
| Converts this Geometry to normal form (or canonical form).
|
|
virtual int | compareTo (const Geometry *geom) const |
|
virtual double | distance (const Geometry *g) const |
| Returns the minimum distance between this Geometry and the Geometry g.
|
|
virtual double | getArea () const |
| Returns the area of this Geometry.
|
|
virtual double | getLength () const |
| Returns the length of this Geometry.
|
|
virtual bool | isWithinDistance (const Geometry *geom, double cDistance) const |
| Tests whether the distance from this Geometry to another is less than or equal to a specified value. More...
|
|
virtual Point * | getCentroid () const |
| Computes the centroid of this Geometry . More...
|
|
virtual bool | getCentroid (Coordinate &ret) const |
| Computes the centroid of this Geometry as a Coordinate. More...
|
|
virtual Point * | getInteriorPoint () const |
| Computes an interior point of this Geometry . More...
|
|
virtual void | geometryChanged () |
|
void | geometryChangedAction () |
| Notifies this Geometry that its Coordinates have been changed by an external party.
|
|
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
clone
returns a deep copy of the object. Use GeometryFactory to construct.
Binary Predicates
Because it is not clear at this time what semantics for spatial analysis methods involving GeometryCollection
s would be useful, GeometryCollection
s are not supported as arguments to binary predicates (other than convexHull
) or the relate
method.
Set-Theoretic Methods
The spatial analysis methods will return the most specific class possible to represent the result. If the result is homogeneous, a Point
, LineString
, or Polygon
will be returned if the result contains a single element; otherwise, a MultiPoint
, MultiLineString
, or MultiPolygon
will be returned. If the result is heterogeneous a GeometryCollection
will be returned.
Because it is not clear at this time what semantics for set-theoretic methods involving GeometryCollection
s would be useful, GeometryCollections
are not supported as arguments to the set-theoretic methods.
Representation of Computed Geometries
The SFS states that the result of a set-theoretic method is the "point-set" result of the usual set-theoretic definition of the operation (SFS 3.2.21.1). However, there are sometimes many ways of representing a point set as a Geometry
.
The SFS does not specify an unambiguous representation of a given point set returned from a spatial analysis method. One goal of JTS is to make this specification precise and unambiguous. JTS will use a canonical form for Geometry
s returned from spatial analysis methods. The canonical form is a Geometry
which is simple and noded:
-
Simple means that the Geometry returned will be simple according to the JTS definition of
isSimple
.
-
Noded applies only to overlays involving
LineString
s. It means that all intersection points on LineString
s will be present as endpoints of LineString
s in the result.
This definition implies that non-simple geometries which are arguments to spatial analysis methods must be subjected to a line-dissolve process to ensure that the results are simple.
Constructed Points And The Precision Model
The results computed by the set-theoretic methods may contain constructed points which are not present in the input Geometry. These new points arise from intersections between line segments in the edges of the input Geometry. In the general case it is not possible to represent constructed points exactly. This is due to the fact that the coordinates of an intersection point may contain twice as many bits of precision as the coordinates of the input line segments. In order to represent these constructed points explicitly, JTS must truncate them to fit the PrecisionModel.
Unfortunately, truncating coordinates moves them slightly. Line segments which would not be coincident in the exact result may become coincident in the truncated representation. This in turn leads to "topology collapses" – situations where a computed element has a lower dimension than it would in the exact result.
When JTS detects topology collapses during the computation of spatial analysis methods, it will throw an exception. If possible the exception will report the location of the collapse.
equals(Object) and hashCode are not overridden, so that when two topologically equal Geometries are added to HashMaps and HashSets, they remain distinct. This behaviour is desired in many cases.