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;
221 const
char* const* papszOptions = NULL ) const CPL_WARN_UNUSED_RESULT;
223 double dfMaxAngleStepSizeDegrees = 0,
224 const
char* const* papszOptions = NULL ) const CPL_WARN_UNUSED_RESULT;
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 )
262 const CPL_WARN_UNUSED_RESULT;
264 const CPL_WARN_UNUSED_RESULT;
266 const CPL_WARN_UNUSED_RESULT;
267 virtual
OGRGeometry *UnionCascaded() const CPL_WARN_UNUSED_RESULT;
269 const CPL_WARN_UNUSED_RESULT;
271 const CPL_WARN_UNUSED_RESULT;
274 const CPL_WARN_UNUSED_RESULT;
275 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
276 const CPL_WARN_UNUSED_RESULT;
278 double dfTolerance,
int bOnlyEdges ) const CPL_WARN_UNUSED_RESULT;
280 virtual
OGRGeometry *Polygonize() const CPL_WARN_UNUSED_RESULT;
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 );
358 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
362 double getX()
const {
return x; }
364 double getY()
const {
return y; }
366 double getZ()
const {
return z; }
368 double getM()
const {
return m; }
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;
400 virtual
void flattenTo2D() CPL_OVERRIDE;
402 virtual
void swapXY() CPL_OVERRIDE;
418 virtual ~OGRPointIterator();
421 static void destroy( OGRPointIterator* );
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 );
576 void setPointsM(
int, OGRRawPoint *,
double * );
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 );
584 void addPoint( const OGRPoint * );
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 );
607 virtual
void segmentize(
double dfMaxLength) CPL_OVERRIDE;
609 virtual
void swapXY() CPL_OVERRIDE;
627 static OGRLineString* TransferMembersAndDestroy(
628 OGRLineString* poSrc,
629 OGRLineString* poDst);
631 virtual OGRCurveCasterToLineString GetCasterToLineString()
633 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
636 virtual double get_AreaOfCurveSegments()
const CPL_OVERRIDE;
639 static OGRLinearRing* CastToLinearRing( OGRLineString* poLS );
643 OGRLineString(
const OGRLineString& other );
644 virtual ~OGRLineString();
646 OGRLineString&
operator=(
const OGRLineString& other);
648 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
649 const char*
const* papszOptions = NULL )
652 const char*
const* papszOptions = NULL )
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 OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
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
OGRBoolean Is3D() const
Definition: ogr_geometry.h:185
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
Definition: ogr_geometry.h:59
Definition: ogr_geometry.h:623
virtual OGRErr importFromWkt(char **ppszInput)=0
Assign geometry from well known text data.
#define CPL_OVERRIDE
Definition: cpl_port.h:1055
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:364
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
virtual void StartPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve start point.
Definition: ogrcompoundcurve.cpp:288
Definition: ogr_geometry.h:1726
double 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 const char * getGeometryName() const =0
Fetch WKT name for geometry type.
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
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. This restores the geometry to it's initial state after construction...
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
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
double getM() const
Definition: ogr_geometry.h:368
OGRRawPoint()
Definition: ogr_geometry.h:51
Definition: ogr_geometry.h:1435
virtual void flattenTo2D() CPL_OVERRIDE
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrpolyhedralsurface.cpp:627
int OGRHasPreparedGeometrySupport()
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
Definition: ogr_core.h:479
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. In a sense this converts all Z coordinates to 0.0.
Definition: ogr_geometry.h:433
Definition: ogr_geometry.h:1295
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:242
Definition: ogr_geometry.h:684
void setM(double mIn)
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 int get_IsClosed() const
Return TRUE if curve is closed.
Definition: ogrcurve.cpp:97
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
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)
Definition: ogrgeometry.cpp:2257
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
Definition: ogr_geometry.h:909
Definition: ogr_geometry.h:47
OGRwkbGeometryType
Definition: ogr_core.h:312
virtual void swapXY() CPL_OVERRIDE
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:726
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
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:398
Definition: ogr_geometry.h:415
virtual OGRBoolean Equals(OGRGeometry *) const CPL_OVERRIDE
Returns TRUE if two geometries are equivalent.
Definition: ogrpolyhedralsurface.cpp:704
Definition: ogr_geometry.h:1570
Definition: ogr_geometry.h:1650
Definition: ogr_geometry.h:1017
Definition: ogr_geometry.h:1692
virtual double get_AreaOfCurveSegments() const CPL_OVERRIDE
Definition: ogrcompoundcurve.cpp:879
Definition: ogr_geometry.h:118
virtual void empty()=0
Clear geometry information. This restores the geometry to it's initial state after construction...
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrgeometry.cpp:804
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:366
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:375
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:187
void sfcgal_geometry_t
Definition: ogr_geometry.h:67
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2028
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:377
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:143
struct GEOSGeom_t * GEOSGeom
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)
Assign point Z coordinate. Calling this method will force the geometry coordinate dimension to 3D (wk...
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
virtual int getDimension() const =0
Get the dimension of this object.
Definition: ogr_geometry.h:1051
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
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)
Assign point Y coordinate.
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
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
Definition: ogr_geometry.h:1799
Definition: ogr_core.h:420
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:52
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:572
Definition: ogr_geometry.h:322
OGRwkbVariant
Definition: ogr_core.h:418
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
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:362
Definition: ogr_geometry.h:1162
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
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)
Definition: ogr_geometry.h:54
virtual void flattenTo2D() CPL_OVERRIDE
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:169
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrpolyhedralsurface.cpp:132
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:554
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
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:914
virtual void set3D(OGRBoolean bIs3D) CPL_OVERRIDE
Set the type as 3D geometry.
Definition: ogrpolyhedralsurface.cpp:986
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
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
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
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Definition: ogrgeometry.cpp:2330
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
virtual OGRBoolean IsConvex() const
Returns if a (closed) curve forms a convex shape.
Definition: ogrcurve.cpp:278
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
Definition: cpl_port.h:999
virtual void empty() CPL_OVERRIDE
Clear geometry information. This restores the geometry to it's initial state after construction...
Definition: ogrcurvepolygon.cpp:132
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:936
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:555