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
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
virtual OGRBoolean Equals(OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
Definition: ogr_geometry.h:1324
virtual void StartPoint(OGRPoint *) const
Return the curve start point.
Definition: ogrcompoundcurve.cpp:287
virtual int WkbSize() const =0
Returns size of related binary representation.
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
OGRCompoundCurve & operator=(const OGRCompoundCurve &other)
Assignment operator.
Definition: ogrcompoundcurve.cpp:90
static OGRLinearRing * CastToLinearRing(OGRCompoundCurve *poCC)
Cast to linear ring.
Definition: ogrcompoundcurve.cpp:761
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 OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc)=0
Assign geometry from well known binary data.
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. In a sense this converts all Z coordinates to 0.0.
Definition: ogr_geometry.h:351
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
Definition: ogr_geometry.h:582
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
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
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
Definition: ogr_geometry.h:773
Definition: ogr_geometry.h:47
OGRwkbGeometryType
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
Definition: ogr_geometry.h:333
Definition: ogr_geometry.h:1256
virtual OGRErr importFromWkt(char **)
Assign geometry from well known text data.
Definition: ogrmultisurface.cpp:148
Definition: ogr_geometry.h:866
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 void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
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
Definition: ogr_geometry.h:104
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: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 OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
virtual int getDimension() const
Get the dimension of this object.
Definition: ogrcurvepolygon.cpp:161
void setZ(double zIn)
Assign point Z coordinate. Calling this method will force the geometry coordinate dimension to 3D (wk...
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
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
Definition: ogr_geometry.h:701
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:305
Definition: ogr_spatialref.h:129
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrcurvepolygon.cpp:712
Definition: ogr_core.h:441
Definition: ogr_core.h:161
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:45
virtual void empty()
Clear geometry information. This restores the geometry to it's initial state after construction...
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
Definition: ogr_geometry.h:264
OGRwkbVariant
Definition: ogr_core.h:439
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
Definition: ogr_geometry.h:994
Definition: ogr_geometry.h:404
Definition: ogr_core.h:48
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. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:171
virtual double get_Length() const
Returns the length of the curve.
Definition: ogrcompoundcurve.cpp:275
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