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(
const unsigned char * pabyData,
144 OGRErr importPreambuleOfCollectionFromWkb(
145 const 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 OGRErr importFromWkb(
unsigned char *,
int=-1,
198 virtual
OGRErr importFromWkb( const
unsigned char *,
201 int& nBytesConsumedOut ) = 0;
203 OGRwkbVariant=wkbVariantOldOgc ) const = 0;
204 virtual
OGRErr importFromWkt(
char ** ppszInput ) = 0;
205 virtual
OGRErr exportToWkt(
char ** ppszDstText,
206 OGRwkbVariant=wkbVariantOldOgc ) const = 0;
211 virtual const
char *getGeometryName() const = 0;
212 virtual
void dumpReadable( FILE *, const
char * = NULL
213 ,
char** papszOptions = NULL ) const;
214 virtual
void flattenTo2D() = 0;
215 virtual
char * exportToGML( const
char* const * papszOptions = NULL ) const;
216 virtual
char * exportToKML() const;
217 virtual
char * exportToJson() const;
223 virtual
OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE) const;
225 const
char* const* papszOptions = NULL ) const CPL_WARN_UNUSED_RESULT;
227 double dfMaxAngleStepSizeDegrees = 0,
228 const
char* const* papszOptions = NULL ) const CPL_WARN_UNUSED_RESULT;
235 virtual
void closeRings();
237 virtual
void setCoordinateDimension(
int nDimension );
239 virtual
void setMeasured(
OGRBoolean bIsMeasured );
247 virtual void segmentize(
double dfMaxLength);
263 virtual
double Distance( const
OGRGeometry * ) const ;
265 virtual
OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
266 const CPL_WARN_UNUSED_RESULT;
268 const CPL_WARN_UNUSED_RESULT;
270 const CPL_WARN_UNUSED_RESULT;
271 virtual
OGRGeometry *UnionCascaded() const CPL_WARN_UNUSED_RESULT;
273 const CPL_WARN_UNUSED_RESULT;
275 const CPL_WARN_UNUSED_RESULT;
278 const CPL_WARN_UNUSED_RESULT;
279 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
280 const CPL_WARN_UNUSED_RESULT;
282 double dfTolerance,
int bOnlyEdges ) const CPL_WARN_UNUSED_RESULT;
284 virtual
OGRGeometry *Polygonize() const CPL_WARN_UNUSED_RESULT;
286 virtual
double Distance3D( const
OGRGeometry *poOtherGeom ) const;
291 const CPL_WARN_DEPRECATED("Non standard method. "
292 "Use Intersects() instead");
294 const CPL_WARN_DEPRECATED("Non standard method. "
295 "Use Equals() instead");
297 const CPL_WARN_DEPRECATED("Non standard method. "
298 "Use SymDifference() instead");
300 const CPL_WARN_DEPRECATED("Non standard method. "
301 "Use Boundary() instead");
306 static
int bGenerate_DB2_V72_BYTE_ORDER;
309 virtual
void swapXY();
336 OGRPoint(
double x,
double y,
double z );
337 OGRPoint(
double x,
double y,
double z,
double m );
364 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
368 double getX()
const {
return x; }
370 double getY()
const {
return y; }
372 double getZ()
const {
return z; }
374 double getM()
const {
return m; }
381 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
385 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
390 { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
395 { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
403 virtual const
char *getGeometryName() const CPL_OVERRIDE;
406 virtual
void flattenTo2D() CPL_OVERRIDE;
408 virtual
void swapXY() CPL_OVERRIDE;
424 virtual ~OGRPointIterator();
427 static void destroy( OGRPointIterator* );
446 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
447 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
469 const char*
const* papszOptions = NULL)
477 virtual double get_Area()
const = 0;
513 OGRErr importFromWKTListOnly(
char ** ppszInput,
int bHasZ,
int bHasM,
520 virtual double get_LinearArea()
const;
556 virtual double Project(
const OGRPoint * )
const;
557 virtual OGRLineString* getSubLine(
double,
double,
int )
const;
561 void getPoint(
int,
OGRPoint * )
const;
562 double getX(
int i )
const {
return paoPoints[i].
x; }
563 double getY(
int i )
const {
return paoPoints[i].
y; }
564 double getZ(
int i )
const;
565 double getM(
int i )
const;
574 void setNumPoints(
int nNewPointCount,
575 int bZeroizeNewContent = TRUE );
577 void setPoint(
int,
double,
double );
578 void setZ(
int,
double );
579 void setM(
int,
double );
580 void setPoint(
int,
double,
double,
double );
581 void setPointM(
int,
double,
double,
double );
582 void setPoint(
int,
double,
double,
double,
double );
583 void setPoints(
int,
OGRRawPoint *,
double * = NULL );
584 void setPointsM(
int, OGRRawPoint *,
double * );
585 void setPoints(
int, OGRRawPoint *,
double *,
double * );
586 void setPoints(
int,
double * padfX,
double * padfY,
587 double *padfZIn = NULL );
588 void setPointsM(
int,
double * padfX,
double * padfY,
589 double *padfMIn = NULL );
590 void setPoints(
int,
double * padfX,
double * padfY,
591 double *padfZIn,
double *padfMIn );
592 void addPoint( const OGRPoint * );
593 void addPoint(
double,
double );
594 void addPoint(
double,
double,
double );
595 void addPointM(
double,
double,
double );
596 void addPoint(
double,
double,
double,
double );
598 void getPoints( OGRRawPoint *,
double * = NULL ) const;
599 void getPoints(
void* pabyX,
int nXStride,
600 void* pabyY,
int nYStride,
601 void* pabyZ = NULL,
int nZStride = 0 ) const;
602 void getPoints(
void* pabyX,
int nXStride,
603 void* pabyY,
int nYStride,
604 void* pabyZ,
int nZStride,
605 void* pabyM,
int nMStride ) const;
608 int nStartVertex = 0,
int nEndVertex = -1 );
609 void reversePoints(
void );
615 virtual
void segmentize(
double dfMaxLength) CPL_OVERRIDE;
617 virtual
void swapXY() CPL_OVERRIDE;
637 static OGRLineString* TransferMembersAndDestroy(
638 OGRLineString* poSrc,
639 OGRLineString* poDst);
641 virtual OGRCurveCasterToLineString GetCasterToLineString()
643 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
653 OGRLineString(
const OGRLineString& other );
654 virtual ~OGRLineString();
656 OGRLineString&
operator=(
const OGRLineString& other);
658 virtual OGRLineString*
CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
659 const char*
const* papszOptions = NULL )
662 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
704 virtual int _WkbSize(
int _flags )
const;
706 const unsigned char *,
int,
707 int& nBytesConsumedOut );
709 unsigned char * )
const;
711 virtual OGRCurveCasterToLineString GetCasterToLineString()
713 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
730 virtual int isClockwise()
const;
731 virtual void reverseWindingOrder();
734 int bTestEnvelope = TRUE )
const;
736 int bTestEnvelope = TRUE )
const;
771 void ExtendEnvelopeWithCircular( OGREnvelope * psEnvelope )
const;
773 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
777 virtual OGRCurveCasterToLineString GetCasterToLineString()
779 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
813 const char*
const* papszOptions = NULL )
825 double dfMaxAngleStepSizeDegrees = 0,
826 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
843 class CPL_DLL OGRCurveCollection
856 OGRCurveCollection();
857 OGRCurveCollection(
const OGRCurveCollection& other);
858 ~OGRCurveCollection();
860 OGRCurveCollection&
operator=(
const OGRCurveCollection& other);
864 void getEnvelope( OGREnvelope * psEnvelope )
const;
865 void getEnvelope( OGREnvelope3D * psEnvelope )
const;
871 const unsigned char * pabyData,
879 const unsigned char * pabyData,
881 int bAcceptCompoundCurve,
885 int& nBytesConsumedOut );
887 char ** ppszDstText )
const;
896 int getNumCurves()
const;
898 const OGRCurve *getCurve(
int )
const;
926 OGRCurveCollection oCC;
929 double dfToleranceEps,
935 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
936 const char*
const* papszOptions,
937 int bIsLinearRing )
const;
946 virtual OGRCurveCasterToLineString GetCasterToLineString()
948 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
986 const char*
const* papszOptions = NULL )
997 int getNumCurves()
const;
999 const OGRCurve *getCurve(
int )
const;
1007 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1020 double dfMaxAngleStepSizeDegrees = 0,
1021 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
1039 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1040 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1044 virtual double get_Area()
const = 0;
1075 virtual int checkRing(
OGRCurve * poNewRing )
const;
1087 OGRCurveCollection oCC;
1089 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1091 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1116 double dfMaxAngleStepSizeDegrees = 0,
1117 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1144 double dfMaxAngleStepSizeDegrees = 0,
1145 const char*
const* papszOptions = NULL )
const;
1195 virtual OGRErr importFromWKTListOnly(
char ** ppszInput,
1196 int bHasZ,
int bHasM,
1203 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1205 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1222 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1224 double dfMaxAngleStepSizeDegrees = 0,
1225 const char*
const* papszOptions = NULL)
const CPL_OVERRIDE;
1247 double dfMaxAngleStepSizeDegrees = 0,
1248 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1277 bool quickValidityCheck()
const;
1281 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const CPL_OVERRIDE;
1282 virtual OGRErr importFromWKTListOnly(
char ** ppszInput,
1283 int bHasZ,
int bHasM,
1326 OGRErr importFromWkbInternal(
const unsigned char * pabyData,
1330 OGRErr importFromWktInternal(
char **ppszInput,
int nRecLevel );
1337 OGRErr exportToWktInternal(
char ** ppszDstText,
1339 const char* pszSkipPrefix )
const;
1365 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1367 double dfMaxAngleStepSizeDegrees = 0,
1368 const char*
const* papszOptions = NULL )
const CPL_OVERRIDE;
1384 virtual double get_Length()
const;
1385 virtual double get_Area()
const;
1393 int getNumGeometries()
const;
1406 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
1477 OGRErr _addGeometryWithExpectedSubGeometryType(
1480 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
1525 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1527 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1530 virtual const char* getSubGeometryName()
const;
1533 const char* pszSkipPrefix )
const;
1535 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
1610 virtual const char* getSubGeometryName()
const CPL_OVERRIDE;
1613 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
1646 OGRErr importFromWkt_Bracketed(
char **,
int bHasM,
int bHasZ );
1762 static OGRErr createFromFgfInternal(
unsigned char *pabyData,
1766 int *pnBytesConsumed,
1772 static OGRErr createFromWkb(
const unsigned char * pabyData,
1777 int& nBytesConsumedOut );
1783 static OGRGeometry *createFromGML(
const char * );
1792 bool bOnlyInOrder =
true );
1799 const char*
const* papszOptions = NULL );
1803 int *pbResultValidGeometry,
1804 const char **papszOptions = NULL);
1805 static bool haveGEOS();
1809 char** papszOptions );
1812 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
1813 double dfPrimaryRadius,
double dfSecondaryAxis,
1815 double dfStartAngle,
double dfEndAngle,
1816 double dfMaxAngleStepSizeDegrees );
1818 static int GetCurveParmeters(
double x0,
double y0,
1819 double x1,
double y1,
1820 double x2,
double y2,
1821 double& R,
double& cx,
double& cy,
1822 double& alpha0,
double& alpha1,
1825 double x0,
double y0,
double z0,
1826 double x1,
double y1,
double z1,
1827 double x2,
double y2,
double z2,
1829 double dfMaxAngleStepSizeDegrees,
1830 const char*
const * papszOptions = NULL );
1831 static OGRCurve* curveFromLineString(
1833 const char*
const * papszOptions = NULL);
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:319
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrcurvepolygon.cpp:513
virtual void Value(double, OGRPoint *) const CPL_OVERRIDE
Fetch point at given distance along curve.
Definition: ogrlinestring.cpp:1950
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:373
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:5008
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrcurvepolygon.cpp:418
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmulticurve.cpp:100
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1022
OGRBoolean Is3D() const
Definition: ogr_geometry.h:185
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1045
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmultisurface.cpp:101
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:193
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrgeometrycollection.cpp:812
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1068
double y
y
Definition: ogr_geometry.h:59
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:631
virtual OGRErr importFromWkt(char **ppszInput)=0
Assign geometry from well known text data.
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrgeometry.cpp:3086
#define CPL_OVERRIDE
To be used in public headers only.
Definition: cpl_port.h:1055
double getY() const
Return y.
Definition: ogr_geometry.h:370
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:479
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5744
virtual void StartPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve start point.
Definition: ogrcompoundcurve.cpp:293
virtual double get_Length() const CPL_OVERRIDE
Returns the length of the curve.
Definition: ogrlinestring.cpp:1908
Create geometry objects from well known text/binary.
Definition: ogr_geometry.h:1760
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:529
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:281
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Returns whether a geometry of the specified geometry type can be a member of this collection...
Definition: ogrmultisurface.cpp:139
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.
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition: ogrmulticurve.cpp:87
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrgeometrycollection.cpp:231
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:311
int OGRBoolean
Type for a OGR boolean.
Definition: ogr_core.h:303
virtual void Value(double, OGRPoint *) const CPL_OVERRIDE
Fetch point at given distance along curve.
Definition: ogrcompoundcurve.cpp:313
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:251
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:363
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:819
Coordinate systems services.
double getM() const
Return m.
Definition: ogr_geometry.h:374
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrgeometrycollection.cpp:177
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrlinestring.cpp:2697
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:123
OGRRawPoint()
Constructor.
Definition: ogr_geometry.h:51
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:448
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1310
A collection of non-overlapping OGRPolygon.
Definition: ogr_geometry.h:1467
int OGRHasPreparedGeometrySupport()
Returns if GEOS has prepared geometry support.
Definition: ogrgeometry.cpp:5774
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.
OGRwkbByteOrder
Enumeration to describe byte order.
Definition: ogr_core.h:481
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1478
Concrete representation of a circular string, that is to say a curve made of one or several arc circl...
Definition: ogr_geometry.h:768
virtual void flattenTo2D()=0
Convert geometry to strictly 2D.
Abstract curve base class for OGRLineString, OGRCircularString and OGRCompoundCurve.
Definition: ogr_geometry.h:439
A collection of 1 or more geometry objects.
Definition: ogr_geometry.h:1324
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:242
Concrete representation of a closed ring.
Definition: ogr_geometry.h:694
void setM(double mIn)
Set m.
Definition: ogr_geometry.h:394
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:623
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:141
virtual int getNumPoints() const CPL_OVERRIDE
Fetch vertex count.
Definition: ogr_geometry.h:560
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM IMultiSurface::get_PointOnSurface() method.
Definition: ogrmultisurface.cpp:299
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Returns whether a geometry of the specified geometry type can be a member of this collection...
Definition: ogrmulticurve.cpp:137
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrlinestring.cpp:1688
virtual int get_IsClosed() const
Return TRUE if curve is closed.
Definition: ogrcurve.cpp:95
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=NULL) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3154
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Returns whether a geometry of the specified geometry type can be a member of this collection...
Definition: ogrgeometrycollection.cpp:1299
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:127
A collection of non-overlapping OGRSurface.
Definition: ogr_geometry.h:1426
virtual double get_Length() const =0
Returns the length of the curve.
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrlinestring.cpp:195
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Map OGCgeometry format type to corresponding OGR constants.
Definition: ogrgeometry.cpp:2295
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:99
virtual void segmentize(double dfMaxLength) CPL_OVERRIDE
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:718
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:278
virtual double get_Area() const =0
Get the area of the (closed) curve.
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:896
Utility class to store a collection of curves.
Definition: ogr_geometry.h:923
Simple container for a position.
Definition: ogr_geometry.h:47
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:314
virtual void swapXY() CPL_OVERRIDE
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:732
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 ~OGRPolyhedralSurface()
Destructor.
Definition: ogrpolyhedralsurface.cpp:74
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:88
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:429
Interface for a point iterator.
Definition: ogr_geometry.h:421
TriangulatedSurface class.
Definition: ogr_geometry.h:1604
A collection of OGRCurve.
Definition: ogr_geometry.h:1684
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const =0
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Abstract base class for 2 dimensional objects like polygons or curve polygons.
Definition: ogr_geometry.h:1035
A collection of OGRLineString.
Definition: ogr_geometry.h:1726
virtual double get_AreaOfCurveSegments() const CPL_OVERRIDE
Return area of curve segments.
Definition: ogrcompoundcurve.cpp:898
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
double getZ() const
Return z.
Definition: ogr_geometry.h:372
void setX(double xIn)
Set x.
Definition: ogr_geometry.h:381
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:187
void sfcgal_geometry_t
SFCGAL geometry type.
Definition: ogr_geometry.h:67
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2066
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:408
virtual double get_Area() const =0
Get the area of the surface object.
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:143
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrgeometry.cpp:515
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition: ogrpolyhedralsurface.cpp:87
void OGRDestroyPreparedGeometry(OGRPreparedGeometry *poPreparedGeom)
Destroys a prepared geometry.
Definition: ogrgeometry.cpp:5830
struct GEOSGeom_t * GEOSGeom
GEOS geometry type.
Definition: ogr_geometry.h:63
virtual OGRErr transform(OGRCoordinateTransformation *poCT) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2354
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2667
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrpolygon.cpp:106
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:593
void setZ(double zIn)
Set z.
Definition: ogr_geometry.h:389
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1097
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmulticurve.cpp:182
virtual OGRGeometry * clone() const CPL_OVERRIDE
Make a copy of this object.
Definition: ogrlinestring.cpp:126
virtual double get_Area() const CPL_OVERRIDE
Get the area of the (closed) curve.
Definition: ogrcompoundcurve.cpp:858
Core portability services for cross-platform OGR code.
virtual int getDimension() const =0
Get the dimension of this object.
int OGRPreparedGeometryIntersects(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry intersects with a geometry.
Definition: ogrgeometry.cpp:5852
Concrete class representing curve polygons.
Definition: ogr_geometry.h:1069
virtual OGRErr transform(OGRCoordinateTransformation *poCT) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:659
PolyhedralSurface class.
Definition: ogr_geometry.h:1519
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrlinestring.cpp:1594
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:811
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrgeometrycollection.cpp:799
void setY(double yIn)
Set y.
Definition: ogr_geometry.h:385
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:709
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:132
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
struct _OGRPreparedGeometry OGRPreparedGeometry
Prepared geometry API (needs GEOS >= 3.1.0)
Definition: ogr_geometry.h:1840
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrgeometrycollection.cpp:194
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:422
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:52
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const =0
Return a linestring from a curve geometry.
OGRPreparedGeometry * OGRCreatePreparedGeometry(const OGRGeometry *poGeom)
Creates a prepared geometry.
Definition: ogrgeometry.cpp:5794
virtual OGRErr addGeometry(const OGRGeometry *)
Add a new geometry to a collection.
Definition: ogrpolyhedralsurface.cpp:860
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:578
virtual void getEnvelope(OGREnvelope *psEnvelope) const CPL_OVERRIDE
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrlinestring.cpp:2251
virtual OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:397
Point class.
Definition: ogr_geometry.h:326
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const CPL_OVERRIDE
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogrcurvepolygon.cpp:603
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:420
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...
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition: ogrgeometrycollection.cpp:110
virtual void setCoordinateDimension(int nDimension) CPL_OVERRIDE
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:689
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:3119
double getX() const
Return x.
Definition: ogr_geometry.h:368
Concrete class representing polygons.
Definition: ogr_geometry.h:1184
Abstract curve base class for OGRLineString and OGRCircularString.
Definition: ogr_geometry.h:497
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
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrpolyhedralsurface.cpp:102
virtual void segmentize(double dfMaxLength) CPL_OVERRIDE
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrlinestring.cpp:2475
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4850
virtual OGRBoolean Equals(OGRGeometry *) const CPL_OVERRIDE
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:633
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
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:562
virtual int getNumPoints() const CPL_OVERRIDE
Return the number of points of a curve geometry.
Definition: ogrcompoundcurve.cpp:682
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:839
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Returns the WKB Type of PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:116
OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometry.cpp:1388
static OGRCompoundCurve * CastToCompoundCurve(OGRCurve *puCurve)
Cast to compound curve.
Definition: ogrcurve.cpp:355
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:938
int OGRPreparedGeometryContains(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry contains a geometry.
Definition: ogrgeometry.cpp:5882
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const
Return a polygon from a curve polygon.
Definition: ogrcurvepolygon.cpp:559
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:338
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:91
Triangle class.
Definition: ogr_geometry.h:1273
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:93
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:386
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:740
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrlinestring.cpp:1810
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:287
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:695
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:613
virtual void setMeasured(OGRBoolean bIsMeasured) CPL_OVERRIDE
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:700
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:267
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Map OGR geometry format constants to corresponding OGC geometry type.
Definition: ogrgeometry.cpp:2368
A collection of OGRPoint.
Definition: ogr_geometry.h:1643
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:822
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:128
virtual void EndPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve end point.
Definition: ogrcompoundcurve.cpp:303
virtual OGRBoolean IsConvex() const
Returns if a (closed) curve forms a convex shape.
Definition: ogrcurve.cpp:309
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:372
#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:960
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:563