using System;
using GeoAPI.Operations.Buffer;
namespace GeoAPI.Geometries
{
///
///
///
public interface IGeometry : ICloneable, IComparable, IComparable, IEquatable
{
IGeometryFactory Factory { get; }
IPrecisionModel PrecisionModel { get; }
int SRID { get; set; }
string GeometryType { get; }
///
/// A ISurface method moved in IGeometry
///
double Area { get; }
///
/// A ICurve method moved in IGeometry
///
double Length { get; }
///
/// A IGeometryCollection method moved in IGeometry
///
int NumGeometries { get; }
///
/// A ILineString method moved to IGeometry
///
int NumPoints { get; }
IGeometry Boundary { get; set; }
Dimensions BoundaryDimension { get; set; }
///
/// A ISurface method moved in IGeometry
///
IPoint Centroid { get; }
ICoordinate Coordinate { get; }
ICoordinate[] Coordinates { get; }
Dimensions Dimension { get; set; }
IGeometry Envelope { get; }
IEnvelope EnvelopeInternal { get; }
IPoint InteriorPoint { get; }
///
/// A ISurface method moved in IGeometry
///
IPoint PointOnSurface { get; }
object UserData { get; set; }
bool IsEmpty { get; }
bool IsRectangle { get; }
bool IsSimple { get; }
bool IsValid { get; }
///
/// A IGeometryCollection method moved in IGeometry
///
///
///
IGeometry GetGeometryN(int n);
void Normalize();
byte[] AsBinary();
string AsText();
IGeometry ConvexHull();
IntersectionMatrix Relate(IGeometry g);
IGeometry Difference(IGeometry other);
IGeometry SymmetricDifference(IGeometry other);
IGeometry Buffer(double distance);
IGeometry Buffer(double distance, int quadrantSegments);
IGeometry Buffer(double distance, BufferStyle endCapStyle);
IGeometry Buffer(double distance, int quadrantSegments, BufferStyle endCapStyle);
IGeometry Intersection(IGeometry other);
IGeometry Union(IGeometry other);
bool EqualsExact(IGeometry other);
bool EqualsExact(IGeometry other, double tolerance);
bool Within(IGeometry g);
bool Contains(IGeometry g);
bool IsWithinDistance(IGeometry geom, double distance);
bool CoveredBy(IGeometry g);
bool Covers(IGeometry g);
bool Crosses(IGeometry g);
bool Intersects(IGeometry g);
bool Overlaps(IGeometry g);
bool Relate(IGeometry g, string intersectionPattern);
bool Touches(IGeometry g);
bool Disjoint(IGeometry g);
double Distance(IGeometry g);
void Apply(ICoordinateFilter filter);
void Apply(IGeometryFilter filter);
void Apply(IGeometryComponentFilter filter);
void GeometryChanged();
void GeometryChangedAction();
}
}