32 #ifndef OGR_GEOMETRY_H_INCLUDED 33 #define OGR_GEOMETRY_H_INCLUDED 125 friend class OGRCurveCollection;
129 OGRErr importPreambuleFromWkt(
char ** ppszInput,
130 int* pbHasZ,
int* pbHasM,
132 OGRErr importCurveCollectionFromWkt(
134 int bAllowEmptyComponent,
135 int bAllowLineString,
137 int bAllowCompoundCurve,
140 OGRErr importPreambuleFromWkb(
unsigned char * pabyData,
144 OGRErr importPreambuleOfCollectionFromWkb(
145 unsigned char * pabyData,
166 static const unsigned int OGR_G_NOT_EMPTY_POINT = 0x1;
167 static const unsigned int OGR_G_3D = 0x2;
168 static const unsigned int OGR_G_MEASURED = 0x4;
178 virtual int getDimension()
const = 0;
179 virtual int getCoordinateDimension()
const;
180 int CoordinateDimension()
const;
189 virtual void empty() = 0;
191 virtual void getEnvelope( OGREnvelope * psEnvelope )
const = 0;
192 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const = 0;
195 virtual int WkbSize()
const = 0;
196 virtual OGRErr importFromWkb(
unsigned char *,
int=-1,
200 virtual OGRErr importFromWkt(
char ** ppszInput ) = 0;
201 virtual OGRErr exportToWkt(
char ** ppszDstText,
207 virtual const char *getGeometryName()
const = 0;
208 virtual void dumpReadable( FILE *,
const char * = NULL
209 ,
char** papszOptions = NULL )
const;
210 virtual void flattenTo2D() = 0;
211 virtual char * exportToGML(
const char*
const * papszOptions = NULL )
const;
212 virtual char * exportToKML()
const;
213 virtual char * exportToJson()
const;
219 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
223 double dfMaxAngleStepSizeDegrees = 0,
231 virtual void closeRings();
233 virtual void setCoordinateDimension(
int nDimension );
235 virtual void setMeasured(
OGRBoolean bIsMeasured );
243 virtual void segmentize(
double dfMaxLength);
259 virtual double Distance(
const OGRGeometry * )
const ;
261 virtual OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
275 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
282 virtual double Distance3D(
const OGRGeometry *poOtherGeom )
const;
287 const CPL_WARN_DEPRECATED(
"Non standard method. " 288 "Use Intersects() instead");
290 const CPL_WARN_DEPRECATED(
"Non standard method. " 291 "Use Equals() instead");
293 const CPL_WARN_DEPRECATED(
"Non standard method. " 294 "Use SymDifference() instead");
296 const CPL_WARN_DEPRECATED(
"Non standard method. " 297 "Use Boundary() instead");
302 static int bGenerate_DB2_V72_BYTE_ORDER;
305 virtual void swapXY();
332 OGRPoint(
double x,
double y,
double z );
333 OGRPoint(
double x,
double y,
double z,
double m );
341 virtual OGRErr importFromWkb(
unsigned char *,
int=-1,
347 virtual OGRErr exportToWkt(
char ** ppszDstText,
355 virtual void getEnvelope( OGREnvelope * psEnvelope )
const CPL_OVERRIDE;
356 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const CPL_OVERRIDE;
358 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
366 double getZ()
const {
return z; }
368 double getM()
const {
return m; }
371 virtual void setCoordinateDimension(
int nDimension )
CPL_OVERRIDE;
375 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
379 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
384 { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
389 { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
397 virtual const char *getGeometryName()
const CPL_OVERRIDE;
440 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
441 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
463 const char*
const* papszOptions = NULL)
471 virtual double get_Area()
const = 0;
507 OGRErr importFromWKTListOnly(
char ** ppszInput,
int bHasZ,
int bHasM,
514 virtual double get_LinearArea()
const;
548 virtual double Project(
const OGRPoint * )
const;
549 virtual OGRLineString* getSubLine(
double,
double,
int )
const;
553 void getPoint(
int,
OGRPoint * )
const;
554 double getX(
int i )
const {
return paoPoints[i].
x; }
555 double getY(
int i )
const {
return paoPoints[i].
y; }
556 double getZ(
int i )
const;
557 double getM(
int i )
const;
566 void setNumPoints(
int nNewPointCount,
567 int bZeroizeNewContent = TRUE );
569 void setPoint(
int,
double,
double );
570 void setZ(
int,
double );
571 void setM(
int,
double );
572 void setPoint(
int,
double,
double,
double );
573 void setPointM(
int,
double,
double,
double );
574 void setPoint(
int,
double,
double,
double,
double );
575 void setPoints(
int,
OGRRawPoint *,
double * = NULL );
577 void setPoints(
int,
OGRRawPoint *,
double *,
double * );
578 void setPoints(
int,
double * padfX,
double * padfY,
579 double *padfZIn = NULL );
580 void setPointsM(
int,
double * padfX,
double * padfY,
581 double *padfMIn = NULL );
582 void setPoints(
int,
double * padfX,
double * padfY,
583 double *padfZIn,
double *padfMIn );
585 void addPoint(
double,
double );
586 void addPoint(
double,
double,
double );
587 void addPointM(
double,
double,
double );
588 void addPoint(
double,
double,
double,
double );
590 void getPoints(
OGRRawPoint *,
double * = NULL )
const;
591 void getPoints(
void* pabyX,
int nXStride,
592 void* pabyY,
int nYStride,
593 void* pabyZ = NULL,
int nZStride = 0 )
const;
594 void getPoints(
void* pabyX,
int nXStride,
595 void* pabyY,
int nYStride,
596 void* pabyZ,
int nZStride,
597 void* pabyM,
int nMStride )
const;
600 int nStartVertex = 0,
int nEndVertex = -1 );
601 void reversePoints(
void );
631 virtual OGRCurveCasterToLineString GetCasterToLineString()
633 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
636 virtual double get_AreaOfCurveSegments()
const CPL_OVERRIDE;
648 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
649 const char*
const* papszOptions = NULL )
652 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
657 virtual const char *getGeometryName()
const CPL_OVERRIDE;
692 virtual int _WkbSize(
int _flags )
const;
694 unsigned char *,
int=-1 );
696 unsigned char * )
const;
698 virtual OGRCurveCasterToLineString GetCasterToLineString()
700 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
717 virtual int isClockwise()
const;
718 virtual void reverseWindingOrder();
721 int bTestEnvelope = TRUE )
const;
723 int bTestEnvelope = TRUE )
const;
756 void ExtendEnvelopeWithCircular( OGREnvelope * psEnvelope )
const;
758 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
762 virtual OGRCurveCasterToLineString GetCasterToLineString()
764 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
767 virtual double get_AreaOfCurveSegments()
const CPL_OVERRIDE;
770 int IntersectsPoint(
const OGRPoint* p )
const;
798 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
799 const char*
const* papszOptions = NULL )
811 double dfMaxAngleStepSizeDegrees = 0,
812 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
829 class CPL_DLL OGRCurveCollection
842 OGRCurveCollection();
843 OGRCurveCollection(
const OGRCurveCollection& other);
844 ~OGRCurveCollection();
846 OGRCurveCollection&
operator=(
const OGRCurveCollection& other);
850 void getEnvelope( OGREnvelope * psEnvelope )
const;
851 void getEnvelope( OGREnvelope3D * psEnvelope )
const;
857 unsigned char * pabyData,
865 unsigned char * pabyData,
868 int bAcceptCompoundCurve,
873 char ** ppszDstText )
const;
882 int getNumCurves()
const;
884 const OGRCurve *getCurve(
int )
const;
912 OGRCurveCollection oCC;
915 double dfToleranceEps,
921 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
922 const char*
const* papszOptions,
923 int bIsLinearRing )
const;
930 virtual OGRCurveCasterToLineString GetCasterToLineString()
932 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
945 virtual OGRErr importFromWkb(
unsigned char *,
int = -1,
951 virtual OGRErr exportToWkt(
char ** ppszDstText,
958 virtual void getEnvelope( OGREnvelope * psEnvelope )
const CPL_OVERRIDE;
959 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const CPL_OVERRIDE;
967 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
968 const char*
const* papszOptions = NULL )
972 virtual double get_AreaOfCurveSegments()
const CPL_OVERRIDE;
979 int getNumCurves()
const;
981 const OGRCurve *getCurve(
int )
const;
984 virtual void setCoordinateDimension(
int nDimension )
CPL_OVERRIDE;
989 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
995 virtual const char *getGeometryName()
const CPL_OVERRIDE;
998 virtual void segmentize(
double dfMaxLength)
CPL_OVERRIDE;
999 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
1002 double dfMaxAngleStepSizeDegrees = 0,
1003 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
1021 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1022 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1026 virtual double get_Area()
const = 0;
1055 virtual int checkRing(
OGRCurve * poNewRing )
const;
1067 OGRCurveCollection oCC;
1069 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1071 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1096 double dfMaxAngleStepSizeDegrees = 0,
1097 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1122 double dfMaxAngleStepSizeDegrees = 0,
1123 const char*
const* papszOptions = NULL )
const;
1171 virtual OGRErr importFromWKTListOnly(
char ** ppszInput,
1172 int bHasZ,
int bHasM,
1179 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1181 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1198 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1200 double dfMaxAngleStepSizeDegrees = 0,
1201 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
1221 double dfMaxAngleStepSizeDegrees = 0,
1222 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1250 bool quickValidityCheck()
const;
1254 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const CPL_OVERRIDE;
1255 virtual OGRErr importFromWKTListOnly(
char ** ppszInput,
1256 int bHasZ,
int bHasM,
1269 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1273 virtual OGRErr importFromWkb(
unsigned char *,
int = -1,
1297 OGRErr importFromWkbInternal(
unsigned char * pabyData,
int nSize,
1300 OGRErr importFromWktInternal(
char **ppszInput,
int nRecLevel );
1307 OGRErr exportToWktInternal(
char ** ppszDstText,
1309 const char* pszSkipPrefix )
const;
1324 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1331 virtual void segmentize(
double dfMaxLength)
CPL_OVERRIDE;
1332 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1335 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1337 double dfMaxAngleStepSizeDegrees = 0,
1338 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1342 virtual OGRErr importFromWkb(
unsigned char *,
int = -1,
1348 virtual OGRErr exportToWkt(
char ** ppszDstText,
1352 virtual double get_Length()
const;
1353 virtual double get_Area()
const;
1357 virtual void getEnvelope( OGREnvelope * psEnvelope )
const CPL_OVERRIDE;
1358 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const CPL_OVERRIDE;
1361 int getNumGeometries()
const;
1369 virtual void setCoordinateDimension(
int nDimension )
CPL_OVERRIDE;
1374 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
1408 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1421 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1445 OGRErr _addGeometryWithExpectedSubGeometryType(
1448 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
1493 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1495 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1498 virtual const char* getSubGeometryName()
const;
1501 const char* pszSkipPrefix )
const;
1503 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
1576 virtual const char* getSubGeometryName()
const CPL_OVERRIDE;
1579 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
1591 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1612 OGRErr importFromWkt_Bracketed(
char **,
int bHasM,
int bHasZ );
1626 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1636 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1668 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1678 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1706 virtual const char *getGeometryName()
const CPL_OVERRIDE;
1712 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1728 static OGRErr createFromFgfInternal(
unsigned char *pabyData,
1732 int *pnBytesConsumed,
1742 static OGRGeometry *createFromGML(
const char * );
1751 bool bOnlyInOrder =
true );
1758 const char*
const* papszOptions = NULL );
1762 int *pbResultValidGeometry,
1763 const char **papszOptions = NULL);
1764 static bool haveGEOS();
1768 char** papszOptions );
1771 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
1772 double dfPrimaryRadius,
double dfSecondaryAxis,
1774 double dfStartAngle,
double dfEndAngle,
1775 double dfMaxAngleStepSizeDegrees );
1777 static int GetCurveParmeters(
double x0,
double y0,
1778 double x1,
double y1,
1779 double x2,
double y2,
1780 double& R,
double& cx,
double& cy,
1781 double& alpha0,
double& alpha1,
1784 double x0,
double y0,
double z0,
1785 double x1,
double y1,
double z1,
1786 double x2,
double y2,
double z2,
1788 double dfMaxAngleStepSizeDegrees,
1789 const char*
const * papszOptions = NULL );
1790 static OGRCurve* curveFromLineString(
1792 const char*
const * papszOptions = NULL);
virtual OGRErr PointOnSurface(OGRPoint *) const CPL_OVERRIDE
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogrpolyhedralsurface.cpp:771
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrcurvepolygon.cpp:507
virtual double get_Area() const CPL_OVERRIDE
Get the area of the surface object.
Definition: ogrcurvepolygon.cpp:663
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:364
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrpolyhedralsurface.cpp:216
virtual OGRErr transform(OGRCoordinateTransformation *) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrpolyhedralsurface.cpp:639
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:4970
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrcurve.cpp:74
virtual const char * getGeometryName() const CPL_OVERRIDE
Returns the geometry name of the TriangulatedSurface.
Definition: ogrtriangulatedsurface.cpp:120
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrpolyhedralsurface.cpp:144
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1022
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2028
virtual OGRBoolean Intersects(const OGRGeometry *) const CPL_OVERRIDE
Do these features intersect?
Definition: ogrcurvepolygon.cpp:775
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1045
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1068
virtual double get_Area() const CPL_OVERRIDE
Returns the area enclosed.
Definition: ogrpolyhedralsurface.cpp:744
double y
y
Definition: ogr_geometry.h:59
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:623
virtual OGRErr importFromWkt(char **ppszInput)=0
Assign geometry from well known text data.
#define CPL_OVERRIDE
To be used in public headers only.
Definition: cpl_port.h:1049
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:473
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5706
double getX() const
Return x.
Definition: ogr_geometry.h:362
virtual void StartPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve start point.
Definition: ogrcompoundcurve.cpp:288
Create geometry objects from well known text/binary.
Definition: ogr_geometry.h:1726
double x
x
Definition: ogr_geometry.h:57
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant eWkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrcurvepolygon.cpp:523
virtual double get_Length() const CPL_OVERRIDE
Returns the length of the curve.
Definition: ogrcompoundcurve.cpp:276
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrcurvepolygon.cpp:159
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:47
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrtriangle.cpp:193
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
virtual void closeRings() CPL_OVERRIDE
Force rings to be closed.
Definition: ogrpolygon.cpp:791
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:311
int OGRBoolean
Type for a OGR boolean.
Definition: ogr_core.h:301
virtual void Value(double, OGRPoint *) const CPL_OVERRIDE
Fetch point at given distance along curve.
Definition: ogrcompoundcurve.cpp:308
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:205
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) CPL_OVERRIDE
Add a ring to a polygon.
Definition: ogrtriangle.cpp:249
virtual void setMeasured(OGRBoolean bIsMeasured) CPL_OVERRIDE
Set the type as Measured.
Definition: ogrpolyhedralsurface.cpp:1001
virtual void empty() CPL_OVERRIDE
Clear geometry information.
Definition: ogrpolyhedralsurface.cpp:153
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:357
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:821
Coordinate systems services.
OGRCompoundCurve & operator=(const OGRCompoundCurve &other)
Assignment operator.
Definition: ogrcompoundcurve.cpp:90
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Returns the WKB Type of TriangulatedSurface.
Definition: ogrtriangulatedsurface.cpp:134
OGRRawPoint()
Constructor.
Definition: ogr_geometry.h:51
A collection of non-overlapping OGRPolygon.
Definition: ogr_geometry.h:1435
virtual void flattenTo2D() CPL_OVERRIDE
Convert geometry to strictly 2D.
Definition: ogrpolyhedralsurface.cpp:627
int OGRHasPreparedGeometrySupport()
Returns if GEOS has prepared geometry support.
Definition: ogrgeometry.cpp:5736
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrcurvepolygon.cpp:179
virtual OGRBoolean Equals(OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc)=0
Assign geometry from well known binary data.
OGRwkbByteOrder
Enumeration to describe byte order.
Definition: ogr_core.h:479
Concrete representation of a circular string, that is to say a curve made of one or several arc circl...
Definition: ogr_geometry.h:753
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrtriangle.cpp:165
virtual void flattenTo2D()=0
Convert geometry to strictly 2D.
Abstract curve base class for OGRLineString, OGRCircularString and OGRCompoundCurve.
Definition: ogr_geometry.h:433
A collection of 1 or more geometry objects.
Definition: ogr_geometry.h:1295
Concrete representation of a closed ring.
Definition: ogr_geometry.h:684
void setM(double mIn)
Set m.
Definition: ogr_geometry.h:388
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:614
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:141
virtual int getNumPoints() const CPL_OVERRIDE
Fetch vertex count.
Definition: ogr_geometry.h:552
virtual void swapXY() CPL_OVERRIDE
Swap x and y coordinates.
Definition: ogrpolyhedralsurface.cpp:1037
virtual OGRGeometry * clone() const CPL_OVERRIDE
Make a copy of this object.
Definition: ogrcurvepolygon.cpp:106
virtual OGRBoolean Contains(const OGRGeometry *) const CPL_OVERRIDE
Test for containment.
Definition: ogrcurvepolygon.cpp:752
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=NULL) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3116
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Checks if the PolyhedralSurface is empty.
Definition: ogrpolyhedralsurface.cpp:973
A collection of non-overlapping OGRSurface.
Definition: ogr_geometry.h:1394
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const CPL_OVERRIDE
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogrpolygon.cpp:758
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrpolyhedralsurface.cpp:300
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Map OGCgeometry format type to corresponding OGR constants.
Definition: ogrgeometry.cpp:2257
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:554
virtual void segmentize(double dfMaxLength) CPL_OVERRIDE
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:712
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:872
Utility class to store a collection of curves.
Definition: ogr_geometry.h:909
Simple container for a position.
Definition: ogr_geometry.h:47
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:312
virtual void swapXY() CPL_OVERRIDE
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:726
virtual int get_IsClosed() const
Return TRUE if curve is closed.
Definition: ogrcurve.cpp:97
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrcurvepolygon.cpp:142
virtual OGRErr addGeometry(const OGRGeometry *) CPL_OVERRIDE
Add a new geometry to a collection.
Definition: ogrtriangulatedsurface.cpp:184
virtual OGRGeometry * clone() const CPL_OVERRIDE
Make a copy of this object.
Definition: ogrpolyhedralsurface.cpp:169
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:448
virtual ~OGRPolyhedralSurface()
Destructor.
Definition: ogrpolyhedralsurface.cpp:74
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrpolygon.cpp:438
Interface for a point iterator.
Definition: ogr_geometry.h:415
virtual OGRBoolean Equals(OGRGeometry *) const CPL_OVERRIDE
Returns TRUE if two geometries are equivalent.
Definition: ogrpolyhedralsurface.cpp:704
TriangulatedSurface class.
Definition: ogr_geometry.h:1570
A collection of OGRCurve.
Definition: ogr_geometry.h:1650
Abstract base class for 2 dimensional objects like polygons or curve polygons.
Definition: ogr_geometry.h:1017
A collection of OGRLineString.
Definition: ogr_geometry.h:1692
virtual double get_AreaOfCurveSegments() const CPL_OVERRIDE
Return area of curve segments.
Definition: ogrcompoundcurve.cpp:879
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:118
virtual void empty()=0
Clear geometry information.
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrgeometry.cpp:804
void setX(double xIn)
Set x.
Definition: ogr_geometry.h:375
void sfcgal_geometry_t
SFCGAL geometry type.
Definition: ogr_geometry.h:67
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:377
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:143
double getM() const
Return m.
Definition: ogr_geometry.h:368
void OGRDestroyPreparedGeometry(OGRPreparedGeometry *poPreparedGeom)
Destroys a prepared geometry.
Definition: ogrgeometry.cpp:5792
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:398
virtual OGRBoolean IsConvex() const
Returns if a (closed) curve forms a convex shape.
Definition: ogrcurve.cpp:278
struct GEOSGeom_t * GEOSGeom
GEOS geometry type.
Definition: ogr_geometry.h:63
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrpolygon.cpp:822
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrcurvepolygon.cpp:587
void setZ(double zIn)
Set z.
Definition: ogr_geometry.h:383
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1073
virtual double get_Area() const CPL_OVERRIDE
Get the area of the (closed) curve.
Definition: ogrcompoundcurve.cpp:839
double getY() const
Return y.
Definition: ogr_geometry.h:364
Core portability services for cross-platform OGR code.
int OGRPreparedGeometryIntersects(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry intersects with a geometry.
Definition: ogrgeometry.cpp:5814
Concrete class representing curve polygons.
Definition: ogr_geometry.h:1051
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:187
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:242
virtual OGRErr transform(OGRCoordinateTransformation *poCT) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:653
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrpolyhedralsurface.cpp:1047
PolyhedralSurface class.
Definition: ogr_geometry.h:1487
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:802
void setY(double yIn)
Set y.
Definition: ogr_geometry.h:379
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:703
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:132
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrtriangle.cpp:156
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrpolyhedralsurface.cpp:350
struct _OGRPreparedGeometry OGRPreparedGeometry
Prepared geometry API (needs GEOS >= 3.1.0)
Definition: ogr_geometry.h:1799
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:420
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:555
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:52
OGRPreparedGeometry * OGRCreatePreparedGeometry(const OGRGeometry *poGeom)
Creates a prepared geometry.
Definition: ogrgeometry.cpp:5756
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:572
Point class.
Definition: ogr_geometry.h:322
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:418
OGRSpatialReference * getSpatialReference(void) const
Returns spatial reference system for object.
Definition: ogr_geometry.h:238
virtual int WkbSize() const =0
Returns size of related binary representation.
virtual void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
virtual void setCoordinateDimension(int nDimension) CPL_OVERRIDE
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:683
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_WARN_UNUSED_RESULT
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrgeometry.cpp:3081
Concrete class representing polygons.
Definition: ogr_geometry.h:1162
Abstract curve base class for OGRLineString and OGRCircularString.
Definition: ogr_geometry.h:491
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
struct GEOSContextHandle_HS * GEOSContextHandle_t
GEOS context handle type.
Definition: ogr_geometry.h:65
OGRTriangulatedSurface & operator=(const OGRTriangulatedSurface &other)
Assignment operator.
Definition: ogrtriangulatedsurface.cpp:88
virtual OGRBoolean Equals(OGRGeometry *) const CPL_OVERRIDE
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:627
virtual void setCoordinateDimension(int nDimension) CPL_OVERRIDE
Set the coordinate dimension.
Definition: ogrpolyhedralsurface.cpp:1022
OGRRawPoint(double xIn, double yIn)
Constructor.
Definition: ogr_geometry.h:54
virtual void flattenTo2D() CPL_OVERRIDE
Convert geometry to strictly 2D.
Definition: ogrcurvepolygon.cpp:169
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrpolyhedralsurface.cpp:132
virtual int getNumPoints() const CPL_OVERRIDE
Return the number of points of a curve geometry.
Definition: ogrcompoundcurve.cpp:677
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:815
static OGRCompoundCurve * CastToCompoundCurve(OGRCurve *puCurve)
Cast to compound curve.
Definition: ogrcurve.cpp:324
virtual void set3D(OGRBoolean bIs3D) CPL_OVERRIDE
Set the type as 3D geometry.
Definition: ogrpolyhedralsurface.cpp:986
int OGRPreparedGeometryContains(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry contains a geometry.
Definition: ogrgeometry.cpp:5844
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:338
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:91
Triangle class.
Definition: ogr_geometry.h:1247
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:355
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
virtual OGRPointIterator * getPointIterator() const CPL_OVERRIDE
Returns a point iterator over the curve.
Definition: ogrcompoundcurve.cpp:735
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:285
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrpolygon.cpp:299
virtual void set3D(OGRBoolean bIs3D) CPL_OVERRIDE
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:689
virtual void getEnvelope(OGREnvelope *psEnvelope) const CPL_OVERRIDE
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrcurvepolygon.cpp:607
virtual void setMeasured(OGRBoolean bIsMeasured) CPL_OVERRIDE
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:694
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:914
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Map OGR geometry format constants to corresponding OGC geometry type.
Definition: ogrgeometry.cpp:2330
A collection of OGRPoint.
Definition: ogr_geometry.h:1609
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:813
virtual void EndPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve end point.
Definition: ogrcompoundcurve.cpp:298
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrpolyhedralsurface.cpp:462
virtual void getEnvelope(OGREnvelope *psEnvelope) const CPL_OVERRIDE
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrpolyhedralsurface.cpp:198
double getZ() const
Return z.
Definition: ogr_geometry.h:366
OGRBoolean Is3D() const
Definition: ogr_geometry.h:185
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:270
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return a linestring from a curve geometry.
Definition: ogrcompoundcurve.cpp:367
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:999
virtual void empty() CPL_OVERRIDE
Clear geometry information.
Definition: ogrcurvepolygon.cpp:132
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:936