32 #ifndef OGR_GEOMETRY_H_INCLUDED 33 #define OGR_GEOMETRY_H_INCLUDED 55 OGRRawPoint(
double xIn,
double yIn) : x(xIn), y(yIn) {}
60 typedef struct GEOSGeom_t *GEOSGeom;
61 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
114 OGRErr importPreambuleFromWkt(
char ** ppszInput,
115 int* pbHasZ,
int* pbHasM,
117 OGRErr importCurveCollectionFromWkt(
char ** ppszInput,
118 int bAllowEmptyComponent,
119 int bAllowLineString,
121 int bAllowCompoundCurve,
123 OGRErr importPreambuleFromWkb(
unsigned char * pabyData,
125 OGRwkbByteOrder& eByteOrder,
127 OGRErr importPreambuleOfCollectionFromWkb(
128 unsigned char * pabyData,
131 OGRwkbByteOrder& eByteOrder,
135 OGRErr PointOnSurfaceInternal(
OGRPoint * poPoint )
const;
146 static const unsigned int OGR_G_NOT_EMPTY_POINT = 0x1;
147 static const unsigned int OGR_G_3D = 0x2;
148 static const unsigned int OGR_G_MEASURED = 0x4;
157 virtual int getDimension()
const = 0;
158 virtual int getCoordinateDimension()
const;
159 int CoordinateDimension()
const;
160 virtual OGRBoolean IsEmpty()
const;
161 virtual OGRBoolean IsValid()
const;
162 virtual OGRBoolean IsSimple()
const;
163 OGRBoolean Is3D()
const {
return flags & OGR_G_3D; }
164 OGRBoolean IsMeasured()
const {
return flags & OGR_G_MEASURED; }
165 virtual OGRBoolean IsRing()
const;
166 virtual void empty() = 0;
167 virtual OGRGeometry *clone()
const CPL_WARN_UNUSED_RESULT = 0;
168 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const = 0;
169 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const = 0;
172 virtual int WkbSize()
const = 0;
175 virtual OGRErr importFromWkt(
char ** ppszInput ) = 0;
181 virtual const char *getGeometryName()
const = 0;
182 virtual void dumpReadable( FILE *,
const char * = NULL,
char** papszOptions = NULL )
const;
183 virtual void flattenTo2D() = 0;
184 virtual char * exportToGML(
const char*
const * papszOptions = NULL )
const;
185 virtual char * exportToKML()
const;
186 virtual char * exportToJson()
const;
188 static GEOSContextHandle_t createGEOSContext();
189 static void freeGEOSContext(GEOSContextHandle_t hGEOSCtxt);
190 virtual GEOSGeom exportToGEOS(GEOSContextHandle_t hGEOSCtxt)
const CPL_WARN_UNUSED_RESULT;
191 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
192 virtual OGRGeometry* getCurveGeometry(
const char*
const* papszOptions = NULL)
const CPL_WARN_UNUSED_RESULT;
193 virtual OGRGeometry* getLinearGeometry(
double dfMaxAngleStepSizeDegrees = 0,
194 const char*
const* papszOptions = NULL)
const CPL_WARN_UNUSED_RESULT;
196 virtual void closeRings();
198 virtual void setCoordinateDimension(
int nDimension );
199 virtual void set3D( OGRBoolean bIs3D );
200 virtual void setMeasured( OGRBoolean bIsMeasured );
208 virtual void segmentize(
double dfMaxLength);
211 virtual OGRBoolean Intersects(
const OGRGeometry * )
const;
212 virtual OGRBoolean Equals(
OGRGeometry * )
const = 0;
213 virtual OGRBoolean Disjoint(
const OGRGeometry * )
const;
214 virtual OGRBoolean Touches(
const OGRGeometry * )
const;
215 virtual OGRBoolean Crosses(
const OGRGeometry * )
const;
216 virtual OGRBoolean Within(
const OGRGeometry * )
const;
217 virtual OGRBoolean Contains(
const OGRGeometry * )
const;
218 virtual OGRBoolean Overlaps(
const OGRGeometry * )
const;
223 virtual OGRGeometry *Boundary()
const CPL_WARN_UNUSED_RESULT;
224 virtual double Distance(
const OGRGeometry * )
const ;
225 virtual OGRGeometry *ConvexHull()
const CPL_WARN_UNUSED_RESULT;
226 virtual OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
const CPL_WARN_UNUSED_RESULT;
229 virtual OGRGeometry *UnionCascaded()
const CPL_WARN_UNUSED_RESULT;
232 virtual OGRErr Centroid(
OGRPoint * poPoint )
const;
233 virtual OGRGeometry *Simplify(
double dTolerance)
const CPL_WARN_UNUSED_RESULT;
234 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
const CPL_WARN_UNUSED_RESULT;
235 virtual OGRGeometry *DelaunayTriangulation(
double dfTolerance,
int bOnlyEdges)
const CPL_WARN_UNUSED_RESULT;
237 virtual OGRGeometry *Polygonize()
const CPL_WARN_UNUSED_RESULT;
240 OGRBoolean Intersect(
OGRGeometry * )
const CPL_WARN_DEPRECATED(
"Non standard method. Use Intersects() instead");
241 OGRBoolean Equal(
OGRGeometry * )
const CPL_WARN_DEPRECATED(
"Non standard method. Use Equals() instead");
242 OGRGeometry *SymmetricDifference(
const OGRGeometry * )
const CPL_WARN_DEPRECATED(
"Non standard method. Use SymDifference() instead");
243 OGRGeometry *getBoundary()
const CPL_WARN_DEPRECATED(
"Non standard method. Use Boundary() instead");
246 static int bGenerate_DB2_V72_BYTE_ORDER;
248 virtual void swapXY();
274 OGRPoint(
double x,
double y,
double z );
275 OGRPoint(
double x,
double y,
double z,
double m );
282 virtual int WkbSize()
const;
285 virtual OGRErr importFromWkt(
char ** );
289 virtual int getDimension()
const;
291 virtual void empty();
292 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const;
293 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const;
294 virtual OGRBoolean
IsEmpty()
const {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
297 double getX()
const {
return x; }
298 double getY()
const {
return y; }
299 double getZ()
const {
return z; }
300 double getM()
const {
return m; }
303 virtual void setCoordinateDimension(
int nDimension );
304 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
305 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
306 void setZ(
double zIn ) { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
307 void setM(
double mIn ) { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
311 virtual OGRBoolean Intersects(
const OGRGeometry * )
const;
312 virtual OGRBoolean Within(
const OGRGeometry * )
const;
315 virtual const char *getGeometryName()
const;
318 virtual void flattenTo2D();
320 virtual void swapXY();
337 virtual OGRBoolean getNextPoint(
OGRPoint* p) = 0;
357 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
358 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
377 const char*
const* papszOptions = NULL)
const = 0;
383 virtual OGRBoolean
IsConvex()
const;
384 virtual double get_Area()
const = 0;
419 OGRErr importFromWKTListOnly(
char ** ppszInput,
int bHasZ,
int bHasM,
423 virtual double get_LinearArea()
const;
442 virtual void empty();
445 virtual OGRBoolean
IsEmpty()
const;
448 virtual double get_Length()
const;
449 virtual void StartPoint(
OGRPoint *)
const;
450 virtual void EndPoint(
OGRPoint *)
const;
451 virtual void Value(
double,
OGRPoint * )
const;
452 virtual double Project(
const OGRPoint *)
const;
453 virtual OGRLineString* getSubLine(
double,
double,
int)
const;
457 void getPoint(
int,
OGRPoint * )
const;
458 double getX(
int i )
const {
return paoPoints[i].x; }
459 double getY(
int i )
const {
return paoPoints[i].y; }
460 double getZ(
int i )
const;
461 double getM(
int i )
const;
468 virtual void set3D( OGRBoolean bIs3D );
469 virtual void setMeasured( OGRBoolean bIsMeasured );
470 void setNumPoints(
int nNewPointCount,
int bZeroizeNewContent = TRUE );
472 void setPoint(
int,
double,
double );
473 void setZ(
int,
double );
474 void setM(
int,
double );
475 void setPoint(
int,
double,
double,
double );
476 void setPointM(
int,
double,
double,
double );
477 void setPoint(
int,
double,
double,
double,
double );
478 void setPoints(
int,
OGRRawPoint *,
double * = NULL );
480 void setPoints(
int,
OGRRawPoint *,
double *,
double * );
481 void setPoints(
int,
double * padfX,
double * padfY,
482 double *padfZIn = NULL );
483 void setPointsM(
int,
double * padfX,
double * padfY,
484 double *padfMIn = NULL );
485 void setPoints(
int,
double * padfX,
double * padfY,
486 double *padfZIn,
double *padfMIn );
488 void addPoint(
double,
double );
489 void addPoint(
double,
double,
double );
490 void addPointM(
double,
double,
double );
491 void addPoint(
double,
double,
double,
double );
493 void getPoints(
OGRRawPoint *,
double * = NULL )
const;
494 void getPoints(
OGRRawPoint *,
double *,
double * )
const;
495 void getPoints(
void* pabyX,
int nXStride,
496 void* pabyY,
int nYStride,
497 void* pabyZ = NULL,
int nZStride = 0 )
const;
498 void getPoints(
void* pabyX,
int nXStride,
499 void* pabyY,
int nYStride,
500 void* pabyZ,
int nZStride,
501 void* pabyM,
int nMStride )
const;
504 int nStartVertex = 0,
int nEndVertex = -1 );
505 void reversePoints(
void );
536 virtual OGRCurveCasterToLineString GetCasterToLineString()
const;
537 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const;
539 virtual double get_AreaOfCurveSegments()
const;
548 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
549 const char*
const* papszOptions = NULL)
const;
550 virtual OGRGeometry* getCurveGeometry(
const char*
const* papszOptions = NULL)
const;
551 virtual double get_Area()
const;
555 virtual const char *getGeometryName()
const;
588 virtual int _WkbSize(
int _flags )
const;
589 virtual OGRErr _importFromWkb( OGRwkbByteOrder,
int _flags,
590 unsigned char *,
int=-1 );
591 virtual OGRErr _exportToWkb( OGRwkbByteOrder,
int _flags,
592 unsigned char * )
const;
596 virtual OGRCurveCasterToLineString GetCasterToLineString()
const;
597 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const;
610 virtual int isClockwise()
const;
611 virtual void reverseWindingOrder();
613 OGRBoolean isPointInRing(
const OGRPoint* pt,
int bTestEnvelope = TRUE)
const;
614 OGRBoolean isPointOnRingBoundary(
const OGRPoint* pt,
int bTestEnvelope = TRUE)
const;
643 void ExtendEnvelopeWithCircular(
OGREnvelope * psEnvelope )
const;
644 OGRBoolean IsValidFast()
const;
645 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
648 virtual OGRCurveCasterToLineString GetCasterToLineString()
const;
649 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const;
650 virtual int ContainsPoint(
const OGRPoint* p )
const;
651 virtual double get_AreaOfCurveSegments()
const;
663 virtual OGRErr importFromWkt(
char ** );
667 virtual OGRBoolean IsValid()
const;
668 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const;
669 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const;
672 virtual double get_Length()
const;
673 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
674 const char*
const* papszOptions = NULL)
const;
675 virtual void Value(
double,
OGRPoint * )
const;
676 virtual double get_Area()
const;
680 virtual const char *getGeometryName()
const;
681 virtual void segmentize(
double dfMaxLength);
682 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
683 virtual OGRGeometry* getLinearGeometry(
double dfMaxAngleStepSizeDegrees = 0,
684 const char*
const* papszOptions = NULL)
const;
726 OGRErr importPreambuleFromWkb(
OGRGeometry* poGeom,
727 unsigned char * pabyData,
730 OGRwkbByteOrder& eByteOrder,
734 unsigned char * pabyData,
737 int bAcceptCompoundCurve,
747 int getNumCurves()
const;
749 const OGRCurve *getCurve(
int )
const;
778 OGRErr addCurveDirectlyInternal(
OGRCurve* poCurve,
779 double dfToleranceEps,
783 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
784 const char*
const* papszOptions,
785 int bIsLinearRing)
const;
791 virtual OGRCurveCasterToLineString GetCasterToLineString()
const;
792 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const;
802 virtual int WkbSize()
const;
805 virtual OGRErr importFromWkt(
char ** );
810 virtual void empty();
811 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const;
812 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const;
813 virtual OGRBoolean IsEmpty()
const;
816 virtual double get_Length()
const;
817 virtual void StartPoint(
OGRPoint *)
const;
818 virtual void EndPoint(
OGRPoint *)
const;
819 virtual void Value(
double,
OGRPoint * )
const;
820 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
821 const char*
const* papszOptions = NULL)
const;
823 virtual int getNumPoints()
const;
824 virtual double get_AreaOfCurveSegments()
const;
825 virtual double get_Area()
const;
831 int getNumCurves()
const;
833 const OGRCurve *getCurve(
int )
const;
836 virtual void setCoordinateDimension(
int nDimension );
837 virtual void set3D( OGRBoolean bIs3D );
838 virtual void setMeasured( OGRBoolean bIsMeasured );
840 OGRErr addCurve(
OGRCurve*,
double dfToleranceEps = 1e-14 );
841 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
847 virtual const char *getGeometryName()
const;
849 virtual void flattenTo2D();
850 virtual void segmentize(
double dfMaxLength);
851 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
852 virtual OGRGeometry* getLinearGeometry(
double dfMaxAngleStepSizeDegrees = 0,
853 const char*
const* papszOptions = NULL)
const;
855 virtual void swapXY();
870 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
871 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
874 virtual double get_Area()
const = 0;
875 virtual OGRErr PointOnSurface(
OGRPoint * poPoint )
const = 0;
902 OGRBoolean ContainsPoint(
const OGRPoint* p )
const;
903 virtual int checkRing(
OGRCurve * poNewRing )
const;
904 OGRErr addRingDirectlyInternal(
OGRCurve* poCurve,
int bNeedRealloc );
914 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const;
915 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const;
928 virtual void empty();
931 virtual OGRBoolean
IsEmpty()
const;
935 const char*
const* papszOptions = NULL)
const;
955 const char*
const* papszOptions = NULL)
const;
964 virtual void set3D( OGRBoolean bIs3D );
965 virtual void setMeasured( OGRBoolean bIsMeasured );
999 virtual int checkRing(
OGRCurve * poNewRing )
const;
1000 OGRErr importFromWKTListOnly(
char ** ppszInput,
int bHasZ,
int bHasM,
1006 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const;
1007 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const;
1022 const char*
const* papszOptions = NULL)
const;
1035 virtual OGRPolygon* CurvePolyToPoly(
double dfMaxAngleStepSizeDegrees = 0,
1036 const char*
const* papszOptions = NULL)
const;
1046 OGRBoolean IsPointOnSurface(
const OGRPoint * )
const;
1064 OGRErr importFromWkbInternal(
unsigned char * pabyData,
int nSize,
int nRecLevel,
1066 OGRErr importFromWktInternal(
char **ppszInput,
int nRecLevel );
1072 OGRErr exportToWktInternal(
char ** ppszDstText,
1074 const char* pszSkipPrefix )
const;
1088 virtual const char *getGeometryName()
const;
1091 virtual void empty();
1093 virtual void flattenTo2D();
1094 virtual OGRBoolean IsEmpty()
const;
1095 virtual void segmentize(
double dfMaxLength);
1096 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1097 virtual OGRGeometry* getCurveGeometry(
const char*
const* papszOptions = NULL)
const;
1098 virtual OGRGeometry* getLinearGeometry(
double dfMaxAngleStepSizeDegrees = 0,
const char*
const* papszOptions = NULL)
const;
1101 virtual int WkbSize()
const;
1104 virtual OGRErr importFromWkt(
char ** );
1107 virtual double get_Length()
const;
1108 virtual double get_Area()
const;
1111 virtual int getDimension()
const;
1112 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const;
1113 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const;
1116 int getNumGeometries()
const;
1124 virtual void setCoordinateDimension(
int nDimension );
1125 virtual void set3D( OGRBoolean bIs3D );
1126 virtual void setMeasured( OGRBoolean bIsMeasured );
1127 virtual OGRErr addGeometry(
const OGRGeometry * );
1128 virtual OGRErr addGeometryDirectly(
OGRGeometry * );
1129 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
1133 virtual void swapXY();
1159 virtual const char *getGeometryName()
const;
1161 virtual OGRErr importFromWkt(
char ** );
1165 virtual OGRErr PointOnSurface(
OGRPoint * poPoint )
const;
1168 virtual int getDimension()
const;
1171 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1197 virtual const char *getGeometryName()
const;
1202 virtual OGRErr PointOnSurface(
OGRPoint * poPoint )
const;
1205 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1221 OGRErr importFromWkt_Bracketed(
char **,
int bHasM,
int bHasZ );
1234 virtual const char *getGeometryName()
const;
1236 virtual OGRErr importFromWkt(
char ** );
1240 virtual int getDimension()
const;
1243 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1270 virtual const char *getGeometryName()
const;
1272 virtual OGRErr importFromWkt(
char ** );
1276 virtual int getDimension()
const;
1279 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1305 virtual const char *getGeometryName()
const;
1310 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
1326 static OGRErr createFromFgfInternal(
unsigned char *pabyData,
1330 int *pnBytesConsumed,
1339 static OGRGeometry *createFromGML(
const char * );
1340 static OGRGeometry *createFromGEOS( GEOSContextHandle_t hGEOSCtxt, GEOSGeom );
1353 const char*
const* papszOptions = NULL );
1357 int *pbResultValidGeometry,
1358 const char **papszOptions = NULL);
1359 static int haveGEOS();
1363 char** papszOptions );
1366 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
1367 double dfPrimaryRadius,
double dfSecondaryAxis,
1369 double dfStartAngle,
double dfEndAngle,
1370 double dfMaxAngleStepSizeDegrees );
1372 static int GetCurveParmeters(
double x0,
double y0,
1373 double x1,
double y1,
1374 double x2,
double y2,
1375 double& R,
double& cx,
double& cy,
1376 double& alpha0,
double& alpha1,
double& alpha2 );
1377 static OGRLineString* curveToLineString(
double x0,
double y0,
double z0,
1378 double x1,
double y1,
double z1,
1379 double x2,
double y2,
double z2,
1381 double dfMaxAngleStepSizeDegrees,
1382 const char*
const* papszOptions = NULL );
1384 const char*
const* papszOptions = NULL);
1391 typedef struct _OGRPreparedGeometry OGRPreparedGeometry;
1392 int OGRHasPreparedGeometrySupport();
1393 OGRPreparedGeometry* OGRCreatePreparedGeometry(
const OGRGeometry* poGeom );
1394 void OGRDestroyPreparedGeometry( OGRPreparedGeometry* poPreparedGeom );
1395 int OGRPreparedGeometryIntersects(
const OGRPreparedGeometry* poPreparedGeom,
1397 int OGRPreparedGeometryContains(
const OGRPreparedGeometry* poPreparedGeom,
virtual double get_Area() const
Get the area of the (closed) curve.
Definition: ogrcompoundcurve.cpp:810
virtual OGRPointIterator * getPointIterator() const
Returns a point iterator over the curve.
Definition: ogrcompoundcurve.cpp:712
virtual OGRBoolean IsEmpty() const
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:294
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:969
virtual void closeRings()
Force rings to be closed.
Definition: ogrpolygon.cpp:738
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:992
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1014
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:527
virtual OGRErr importFromWkt(char **ppszInput)=0
Assign geometry from well known text data.
virtual OGRErr importFromWkt(char **)
Assign geometry from well known text data.
Definition: ogrpolygon.cpp:402
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:298
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5038
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:662
Create geometry objects from well known text/binary.
Definition: ogr_geometry.h:1324
virtual void StartPoint(OGRPoint *) const
Return the curve start point.
Definition: ogrcompoundcurve.cpp:287
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
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:284
virtual OGRErr transform(OGRCoordinateTransformation *poCT)
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:599
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:205
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:759
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:743
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:644
Coordinate systems services.
OGRCompoundCurve & operator=(const OGRCompoundCurve &other)
Assignment operator.
Definition: ogrcompoundcurve.cpp:90
static OGRLinearRing * CastToLinearRing(OGRCompoundCurve *poCC)
Cast to linear ring.
Definition: ogrcompoundcurve.cpp:761
A collection of non-overlapping OGRPolygon.
Definition: ogr_geometry.h:1184
virtual void Value(double, OGRPoint *) const
Fetch point at given distance along curve.
Definition: ogrcompoundcurve.cpp:307
virtual OGRGeometry * clone() const
Make a copy of this object.
Definition: ogrcurvepolygon.cpp:106
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.
Concrete representation of a circular string, that is to say a curve made of one or several arc circl...
Definition: ogr_geometry.h:640
OGRCurveCollection & operator=(const OGRCurveCollection &other)
Assignment operator.
Definition: ogrcurvecollection.cpp:102
virtual void flattenTo2D()=0
Convert geometry to strictly 2D.
Abstract curve base class for OGRLineString, OGRCircularString and OGRCompoundCurve.
Definition: ogr_geometry.h:351
A collection of 1 or more geometry objects.
Definition: ogr_geometry.h:1062
virtual OGRBoolean Equals(OGRGeometry *) const
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:579
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:230
Concrete representation of a closed ring.
Definition: ogr_geometry.h:582
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:124
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM IMultiSurface::get_PointOnSurface() method.
Definition: ogrmultisurface.cpp:289
virtual int WkbSize() const
Returns size of related binary representation.
Definition: ogrpolygon.cpp:264
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known binary format.
Definition: ogrgeometrycollection.cpp:579
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const
Return a linestring from a curve geometry.
Definition: ogrcompoundcurve.cpp:365
virtual int WkbSize() const
Returns size of related binary representation.
Definition: ogrgeometrycollection.cpp:441
virtual int get_IsClosed() const
Return TRUE if curve is closed.
Definition: ogrcurve.cpp:98
virtual int getNumPoints() const
Return the number of points of a curve geometry.
Definition: ogrcompoundcurve.cpp:654
A collection of non-overlapping OGRSurface.
Definition: ogr_geometry.h:1146
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:284
Concrete representation of a compound curve, made of curves: OGRLineString and OGRCircularString.
Definition: ogr_geometry.h:773
Simple container for a position.
Definition: ogr_geometry.h:47
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:333
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:329
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:87
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:375
Interface for a point iterator.
Definition: ogr_geometry.h:333
A collection of OGRCurve.
Definition: ogr_geometry.h:1256
virtual OGRErr importFromWkt(char **)
Assign geometry from well known text data.
Definition: ogrmultisurface.cpp:148
Abstract base class for 2 dimensional objects like polygons or curve polygons.
Definition: ogr_geometry.h:866
A collection of OGRLineString.
Definition: ogr_geometry.h:1292
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:570
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometrycollection.cpp:565
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrcurvepolygon.cpp:696
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:104
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:753
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:299
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:304
virtual OGRwkbGeometryType getGeometryType() const
Fetch geometry type.
Definition: ogrpolygon.cpp:104
virtual OGRBoolean IsEmpty() const
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:653
virtual OGRBoolean IsEmpty() const
Returns TRUE (non-zero) if the object has no points.
Definition: ogrgeometry.cpp:138
virtual int getDimension() const
Get the dimension of this object.
Definition: ogrcurvepolygon.cpp:161
void setZ(double zIn)
Assign point Z coordinate.
Definition: ogr_geometry.h:306
virtual void EndPoint(OGRPoint *) const
Return the curve end point.
Definition: ogrcompoundcurve.cpp:297
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:639
Core portability services for cross-platform OGR code.
Concrete class representing curve polygons.
Definition: ogr_geometry.h:899
virtual double get_Area() const
Get the area of the surface object.
Definition: ogrcurvepolygon.cpp:609
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrgeometrycollection.cpp:1228
Utility class to store a collection of curves.
Definition: ogr_geometry.h:701
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:305
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:129
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrcurvepolygon.cpp:712
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:441
Simple container for a bounding region in 3D.
Definition: ogr_core.h:161
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:45
virtual void empty()
Clear geometry information.
Definition: ogrcurvepolygon.cpp:134
virtual double get_AreaOfCurveSegments() const
Get the area of the purely curve portions of a (closed) curve.
Definition: ogrcompoundcurve.cpp:849
OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:370
Point class.
Definition: ogr_geometry.h:264
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:439
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 OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogrpolygon.cpp:708
virtual int getDimension() const
Get the dimension of this object.
Definition: ogrcurve.cpp:77
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:297
Concrete class representing polygons.
Definition: ogr_geometry.h:994
Abstract curve base class for OGRLineString and OGRCircularString.
Definition: ogr_geometry.h:404
Simple container for a bounding region.
Definition: ogr_core.h:48
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
virtual void getEnvelope(OGREnvelope *psEnvelope) const
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrcurvepolygon.cpp:559
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:258
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:458
OGRSpatialReference * getSpatialReference(void) const
Returns spatial reference system for object.
Definition: ogr_geometry.h:203
virtual OGRwkbGeometryType getGeometryType() const
Fetch geometry type.
Definition: ogrmultisurface.cpp:100
virtual int getNumPoints() const
Fetch vertex count.
Definition: ogr_geometry.h:456
static OGRCompoundCurve * CastToCompoundCurve(OGRCurve *puCurve)
Cast to compound curve.
Definition: ogrcurve.cpp:301
OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:311
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:91
virtual const char * getGeometryName() const
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:121
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:749
virtual void flattenTo2D()
Convert geometry to strictly 2D.
Definition: ogrcurvepolygon.cpp:171
virtual double get_Length() const
Returns the length of the curve.
Definition: ogrcompoundcurve.cpp:275
A collection of OGRPoint.
Definition: ogr_geometry.h:1218
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:671
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:633
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=NULL) const
Return curve version of this geometry.
Definition: ogrgeometrycollection.cpp:1249
virtual OGRBoolean IsConvex() const
Returns if a (closed) curve forms a convex shape.
Definition: ogrcurve.cpp:258
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:269
void closeRings()
Force rings to be closed.
Definition: ogrgeometrycollection.cpp:1044
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:259
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrpolygon.cpp:768
virtual const char * getGeometryName() const
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:127
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:459