Go to the documentation of this file.
32 #ifndef OGR_GEOMETRY_H_INCLUDED
33 #define OGR_GEOMETRY_H_INCLUDED
49 #ifndef DEFINEH_OGRGeometryH
50 #define DEFINEH_OGRGeometryH
84 static int defPrecision = getDefaultPrecision();
85 static bool defRound = getDefaultRound();
95 static int getDefaultPrecision();
96 static bool getDefaultRound();
237 virtual void visit(
const OGRPoint*) = 0;
332 friend class OGRCurveCollection;
334 unsigned int flags = 0;
336 OGRErr importPreambleFromWkt(
const char ** ppszInput,
337 int* pbHasZ,
int* pbHasM,
339 OGRErr importCurveCollectionFromWkt(
340 const char ** ppszInput,
341 int bAllowEmptyComponent,
342 int bAllowLineString,
344 int bAllowCompoundCurve,
347 OGRErr importPreambleFromWkb(
const unsigned char * pabyData,
351 OGRErr importPreambleOfCollectionFromWkb(
352 const unsigned char * pabyData,
362 void HomogenizeDimensionalityWith(
OGRGeometry* poOtherGeom );
377 static const unsigned int OGR_G_NOT_EMPTY_POINT = 0x1;
378 static const unsigned int OGR_G_3D = 0x2;
379 static const unsigned int OGR_G_MEASURED = 0x4;
395 virtual int getDimension()
const = 0;
396 virtual int getCoordinateDimension()
const;
397 int CoordinateDimension()
const;
407 virtual void empty() = 0;
409 virtual
void getEnvelope(
OGREnvelope * psEnvelope ) const = 0;
410 virtual
void getEnvelope(
OGREnvelope3D * psEnvelope ) const = 0;
413 virtual
int WkbSize() const = 0;
416 virtual
OGRErr importFromWkb( const
unsigned char *,
419 int& nBytesConsumedOut ) = 0;
422 virtual
OGRErr importFromWkt( const
char ** ppszInput ) = 0;
427 OGRErr importFromWkt(
char ** ppszInput ) CPL_WARN_DEPRECATED("Use importFromWkt(const
char**) instead")
429 return importFromWkt(
const_cast<const char**
>(ppszInput) );
432 OGRErr exportToWkt(
char ** ppszDstText,
440 OGRErr *err =
nullptr)
const = 0;
445 virtual const char *getGeometryName()
const = 0;
446 virtual void dumpReadable( FILE *,
const char * =
nullptr
447 ,
char** papszOptions =
nullptr )
const;
448 virtual void flattenTo2D() = 0;
449 virtual char * exportToGML(
const char*
const * papszOptions =
nullptr )
const;
450 virtual char * exportToKML()
const;
451 virtual char * exportToJson()
const;
463 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
467 double dfMaxAngleStepSizeDegrees = 0,
475 virtual
void closeRings();
477 virtual
void setCoordinateDimension(
int nDimension );
479 virtual
void setMeasured(
OGRBoolean bIsMeasured );
487 virtual void segmentize(
double dfMaxLength);
503 virtual
double Distance( const
OGRGeometry * ) const ;
505 virtual
OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
519 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
526 virtual
double Distance3D( const
OGRGeometry *poOtherGeom ) const;
531 const CPL_WARN_DEPRECATED("Non standard method. "
532 "Use Intersects() instead");
534 const CPL_WARN_DEPRECATED("Non standard method. "
535 "Use Equals() instead");
537 const CPL_WARN_DEPRECATED("Non standard method. "
538 "Use SymDifference() instead");
540 const CPL_WARN_DEPRECATED("Non standard method. "
541 "Use Boundary() instead");
546 static
int bGenerate_DB2_V72_BYTE_ORDER;
549 virtual
void swapXY();
572 {
return cpl::down_cast<OGRPoint*>(
this); }
579 {
return cpl::down_cast<const OGRPoint*>(
this); }
586 {
return cpl::down_cast<OGRCurve*>(
this); }
593 {
return cpl::down_cast<const OGRCurve*>(
this); }
600 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
607 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
614 {
return cpl::down_cast<OGRLineString*>(
this); }
621 {
return cpl::down_cast<const OGRLineString*>(
this); }
628 {
return cpl::down_cast<OGRLinearRing*>(
this); }
635 {
return cpl::down_cast<const OGRLinearRing*>(
this); }
642 {
return cpl::down_cast<OGRCircularString*>(
this); }
649 {
return cpl::down_cast<const OGRCircularString*>(
this); }
656 {
return cpl::down_cast<OGRCompoundCurve*>(
this); }
663 {
return cpl::down_cast<const OGRCompoundCurve*>(
this); }
670 {
return cpl::down_cast<OGRSurface*>(
this); }
677 {
return cpl::down_cast<const OGRSurface*>(
this); }
684 {
return cpl::down_cast<OGRPolygon*>(
this); }
691 {
return cpl::down_cast<const OGRPolygon*>(
this); }
698 {
return cpl::down_cast<OGRTriangle*>(
this); }
705 {
return cpl::down_cast<const OGRTriangle*>(
this); }
712 {
return cpl::down_cast<OGRCurvePolygon*>(
this); }
719 {
return cpl::down_cast<const OGRCurvePolygon*>(
this); }
726 {
return cpl::down_cast<OGRGeometryCollection*>(
this); }
733 {
return cpl::down_cast<const OGRGeometryCollection*>(
this); }
740 {
return cpl::down_cast<OGRMultiPoint*>(
this); }
747 {
return cpl::down_cast<const OGRMultiPoint*>(
this); }
754 {
return cpl::down_cast<OGRMultiLineString*>(
this); }
761 {
return cpl::down_cast<const OGRMultiLineString*>(
this); }
768 {
return cpl::down_cast<OGRMultiPolygon*>(
this); }
775 {
return cpl::down_cast<const OGRMultiPolygon*>(
this); }
782 {
return cpl::down_cast<OGRMultiCurve*>(
this); }
789 {
return cpl::down_cast<const OGRMultiCurve*>(
this); }
796 {
return cpl::down_cast<OGRMultiSurface*>(
this); }
803 {
return cpl::down_cast<const OGRMultiSurface*>(
this); }
810 {
return cpl::down_cast<OGRPolyhedralSurface*>(
this); }
817 {
return cpl::down_cast<const OGRPolyhedralSurface*>(
this); }
824 {
return cpl::down_cast<OGRTriangulatedSurface*>(
this); }
831 {
return cpl::down_cast<const OGRTriangulatedSurface*>(
this); }
836 struct CPL_DLL OGRGeometryUniquePtrDeleter
867 OGRPoint(
double x,
double y,
double z );
868 OGRPoint(
double x,
double y,
double z,
double m );
870 static OGRPoint* createXYM(
double x,
double y,
double m );
880 int& nBytesConsumedOut )
override;
893 OGRErr *err =
nullptr)
const override;
898 virtual void empty()
override;
902 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
906 double getX()
const {
return x; }
908 double getY()
const {
return y; }
910 double getZ()
const {
return z; }
912 double getM()
const {
return m; }
919 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
923 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
928 { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
933 { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
948 virtual void swapXY()
override;
986 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
987 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
998 class CPL_DLL ConstIterator
1001 std::unique_ptr<Private> m_poPrivate;
1003 ConstIterator(
const OGRCurve* poSelf,
bool bStart);
1004 ConstIterator(ConstIterator&& oOther) noexcept;
1007 ConstIterator& operator++();
1008 bool operator!=(
const ConstIterator& it)
const;
1032 ConstIterator
begin()
const;
1034 ConstIterator
end()
const;
1037 virtual double get_Length()
const = 0;
1038 virtual void StartPoint(
OGRPoint * )
const = 0;
1039 virtual void EndPoint(
OGRPoint * )
const = 0;
1040 virtual int get_IsClosed()
const;
1041 virtual void Value(
double,
OGRPoint * )
const = 0;
1042 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
1043 const char*
const* papszOptions =
nullptr)
1045 virtual int getDimension()
const override;
1048 virtual int getNumPoints()
const = 0;
1051 virtual double get_Area()
const = 0;
1056 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
1061 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
1070 inline OGRCurve::ConstIterator
begin(
const OGRCurve* poCurve) {
return poCurve->begin(); }
1072 inline OGRCurve::ConstIterator
end(
const OGRCurve* poCurve) {
return poCurve->end(); }
1104 OGRErr importFromWKTListOnly(
const char ** ppszInput,
int bHasZ,
int bHasM,
1111 virtual double get_LinearArea()
const;
1117 class CPL_DLL Iterator
1120 std::unique_ptr<Private> m_poPrivate;
1124 Iterator(Iterator&& oOther) noexcept;
1127 Iterator& operator++();
1128 bool operator!=(
const Iterator& it)
const;
1134 class CPL_DLL ConstIterator
1137 std::unique_ptr<Private> m_poPrivate;
1140 ConstIterator(ConstIterator&& oOther) noexcept;
1143 ConstIterator& operator++();
1144 bool operator!=(
const ConstIterator& it)
const;
1177 ConstIterator
begin()
const;
1179 ConstIterator
end()
const;
1182 virtual int WkbSize()
const override;
1183 virtual OGRErr importFromWkb(
const unsigned char *,
1186 int& nBytesConsumedOut )
override;
1191 OGRErr importFromWkt(
const char ** )
override;
1199 OGRErr *err =
nullptr)
const override;
1203 virtual void empty()
override;
1204 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const override;
1205 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const override;
1209 virtual double get_Length()
const override;
1210 virtual void StartPoint(
OGRPoint * )
const override;
1211 virtual void EndPoint(
OGRPoint * )
const override;
1212 virtual void Value(
double,
OGRPoint * )
const override;
1213 virtual double Project(
const OGRPoint * )
const;
1214 virtual OGRLineString* getSubLine(
double,
double,
int )
const;
1218 void getPoint(
int,
OGRPoint * )
const;
1219 double getX(
int i )
const {
return paoPoints[i].
x; }
1220 double getY(
int i )
const {
return paoPoints[i].
y; }
1221 double getZ(
int i )
const;
1222 double getM(
int i )
const;
1228 virtual void setCoordinateDimension(
int nDimension )
override;
1229 virtual void set3D(
OGRBoolean bIs3D )
override;
1230 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1231 void setNumPoints(
int nNewPointCount,
1232 int bZeroizeNewContent = TRUE );
1234 void setPoint(
int,
double,
double );
1235 void setZ(
int,
double );
1236 void setM(
int,
double );
1237 void setPoint(
int,
double,
double,
double );
1238 void setPointM(
int,
double,
double,
double );
1239 void setPoint(
int,
double,
double,
double,
double );
1240 void setPoints(
int,
const OGRRawPoint *,
const double * =
nullptr );
1241 void setPointsM(
int,
const OGRRawPoint *,
const double * );
1242 void setPoints(
int,
const OGRRawPoint *,
const double *,
const double * );
1243 void setPoints(
int,
const double * padfX,
const double * padfY,
1244 const double *padfZIn =
nullptr );
1245 void setPointsM(
int,
const double * padfX,
const double * padfY,
1246 const double *padfMIn =
nullptr );
1247 void setPoints(
int,
const double * padfX,
const double * padfY,
1248 const double *padfZIn,
const double *padfMIn );
1250 void addPoint(
double,
double );
1251 void addPoint(
double,
double,
double );
1252 void addPointM(
double,
double,
double );
1253 void addPoint(
double,
double,
double,
double );
1255 void getPoints(
OGRRawPoint *,
double * =
nullptr )
const;
1256 void getPoints(
void* pabyX,
int nXStride,
1257 void* pabyY,
int nYStride,
1258 void* pabyZ =
nullptr,
int nZStride = 0,
1259 void* pabyM =
nullptr,
int nMStride = 0 )
const;
1262 int nStartVertex = 0,
int nEndVertex = -1 );
1263 void reversePoints(
void );
1268 virtual void flattenTo2D()
override;
1269 virtual void segmentize(
double dfMaxLength)
override;
1271 virtual void swapXY()
override;
1276 inline OGRSimpleCurve::Iterator
begin(
OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1278 inline OGRSimpleCurve::Iterator
end(
OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1281 inline OGRSimpleCurve::ConstIterator
begin(
const OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1283 inline OGRSimpleCurve::ConstIterator
end(
const OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1308 virtual OGRCurveCasterToLineString GetCasterToLineString()
1310 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1326 const char*
const* papszOptions =
nullptr )
1329 const char*
const* papszOptions =
nullptr )
const override;
1330 virtual double get_Area()
const override;
1379 virtual int _WkbSize(
int _flags )
const;
1381 const unsigned char *,
int,
1382 int& nBytesConsumedOut );
1384 unsigned char * )
const;
1386 virtual OGRCurveCasterToLineString GetCasterToLineString()
1388 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1405 virtual int isClockwise()
const;
1406 virtual void reverseWindingOrder();
1409 int bTestEnvelope = TRUE )
const;
1411 int bTestEnvelope = TRUE )
const;
1425 virtual int WkbSize()
const override;
1429 int& nBytesConsumedOut )
override;
1454 void ExtendEnvelopeWithCircular(
OGREnvelope * psEnvelope )
const;
1456 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
1460 virtual OGRCurveCasterToLineString GetCasterToLineString()
1462 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1480 int& nBytesConsumedOut )
override;
1493 OGRErr *err =
nullptr)
const override;
1503 const char*
const* papszOptions =
nullptr )
1506 virtual double get_Area()
const override;
1511 virtual void segmentize(
double dfMaxLength )
override;
1515 double dfMaxAngleStepSizeDegrees = 0,
1516 const char*
const* papszOptions =
nullptr)
const override;
1541 class CPL_DLL OGRCurveCollection
1550 int nCurveCount = 0;
1554 OGRCurveCollection();
1555 OGRCurveCollection(
const OGRCurveCollection& other);
1556 ~OGRCurveCollection();
1558 OGRCurveCollection&
operator=(
const OGRCurveCollection& other);
1568 OGRCurve**
end() {
return papoCurves + nCurveCount; }
1574 const OGRCurve*
const*
end()
const {
return papoCurves + nCurveCount; }
1585 const unsigned char * pabyData,
1589 int nMinSubGeomSize,
1591 OGRErr importBodyFromWkb(
1593 const unsigned char * pabyData,
1595 int bAcceptCompoundCurve,
1599 int& nBytesConsumedOut );
1607 int nNewDimension );
1611 int getNumCurves()
const;
1613 const OGRCurve *getCurve(
int )
const;
1616 OGRErr removeCurve(
int iIndex,
bool bDelete =
true );
1644 OGRCurveCollection oCC{};
1647 double dfToleranceEps,
1653 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
1654 const char*
const* papszOptions,
1655 int bIsLinearRing )
const;
1666 virtual OGRCurveCasterToLineString GetCasterToLineString()
1668 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1696 virtual int WkbSize()
const override;
1700 int& nBytesConsumedOut )
override;
1713 OGRErr *err =
nullptr)
const override;
1717 virtual void empty()
override;
1728 const char*
const* papszOptions =
nullptr )
1733 virtual double get_Area()
const override;
1739 int getNumCurves()
const;
1741 const OGRCurve *getCurve(
int )
const;
1751 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1760 virtual void segmentize(
double dfMaxLength)
override;
1764 double dfMaxAngleStepSizeDegrees = 0,
1765 const char*
const* papszOptions =
nullptr)
const override;
1769 virtual void swapXY()
override;
1797 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1798 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1802 virtual double get_Area()
const = 0;
1804 {
return PointOnSurfaceInternal(poPoint); }
1835 virtual int checkRing(
OGRCurve * poNewRing )
const;
1847 OGRCurveCollection oCC{};
1849 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1851 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1884 virtual void empty()
override;
1888 virtual void segmentize(
double dfMaxLength )
override;
1892 double dfMaxAngleStepSizeDegrees = 0,
1893 const char*
const* papszOptions =
nullptr )
const override;
1896 virtual double get_Area()
const override;
1899 virtual int WkbSize()
const override;
1903 int& nBytesConsumedOut )
override;
1916 OGRErr *err =
nullptr)
const override;
1925 double dfMaxAngleStepSizeDegrees = 0,
1926 const char*
const* papszOptions =
nullptr )
const;
1955 virtual void swapXY()
override;
1993 virtual int checkRing(
OGRCurve * poNewRing )
const override;
1994 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
1995 int bHasZ,
int bHasM,
2002 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2004 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2037 const char*
const* papszOptions =
nullptr )
const override;
2039 double dfMaxAngleStepSizeDegrees = 0,
2040 const char*
const* papszOptions =
nullptr)
const override;
2043 virtual int WkbSize()
const override;
2047 int& nBytesConsumedOut )
override;
2061 OGRErr *err =
nullptr)
const override;
2065 double dfMaxAngleStepSizeDegrees = 0,
2066 const char*
const* papszOptions =
nullptr )
const override;
2116 bool quickValidityCheck()
const;
2120 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const override;
2121 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
2122 int bHasZ,
int bHasM,
2125 double*& padfZ )
override;
2142 int& nBytesConsumedOut )
override;
2173 OGRErr importFromWkbInternal(
const unsigned char * pabyData,
2177 OGRErr importFromWktInternal(
const char **ppszInput,
int nRecLevel );
2185 std::string exclude = std::string())
const;
2219 virtual void empty()
override;
2223 virtual void segmentize(
double dfMaxLength)
override;
2227 const char*
const* papszOptions =
nullptr )
const override;
2229 double dfMaxAngleStepSizeDegrees = 0,
2230 const char*
const* papszOptions =
nullptr )
const override;
2233 virtual int WkbSize()
const override;
2237 int& nBytesConsumedOut )
override;
2251 OGRErr *err =
nullptr)
const override;
2253 virtual double get_Length()
const;
2254 virtual double get_Area()
const;
2262 int getNumGeometries()
const;
2275 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2281 virtual void swapXY()
override;
2354 OGRErr *err =
nullptr)
const override;
2407 OGRErr _addGeometryWithExpectedSubGeometryType(
2410 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
2449 OGRErr *err =
nullptr)
const override;
2494 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2496 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2499 virtual const char* getSubGeometryName()
const;
2503 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2531 virtual int WkbSize()
const override;
2537 int& nBytesConsumedOut )
override;
2550 OGRErr *err =
nullptr)
const override;
2555 virtual void empty()
override;
2564 virtual double get_Area()
const override;
2580 virtual void swapXY()
override;
2617 virtual const char* getSubGeometryName()
const override;
2620 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2689 OGRErr importFromWkt_Bracketed(
const char **,
int bHasM,
int bHasZ );
2730 OGRErr *err =
nullptr)
const override;
2815 OGRErr *err =
nullptr)
const override;
2894 OGRErr *err =
nullptr)
const override;
2933 static OGRErr createFromFgfInternal(
const unsigned char *pabyData,
2937 int *pnBytesConsumed,
2943 static OGRErr createFromWkb(
const void * pabyData,
2948 int& nBytesConsumedOut );
2958 CPL_WARN_DEPRECATED(
"Use createFromWkt(const char**, ...) instead")
2960 return createFromWkt(
const_cast<const char**
>(ppszInput), poSRS, ppoGeom);
2965 static OGRGeometry *createFromGML(
const char * );
2968 static OGRGeometry *createFromGeoJson(
const char *);
2976 bool bOnlyInOrder =
true );
2983 const char*
const* papszOptions =
nullptr );
2989 int *pbResultValidGeometry,
2990 const char **papszOptions =
nullptr);
2991 static bool haveGEOS();
2998 std::unique_ptr<Private> d;
3007 char** papszOptions,
3011 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
3012 double dfPrimaryRadius,
double dfSecondaryAxis,
3014 double dfStartAngle,
double dfEndAngle,
3015 double dfMaxAngleStepSizeDegrees,
3016 const bool bUseMaxGap =
false );
3018 static int GetCurveParmeters(
double x0,
double y0,
3019 double x1,
double y1,
3020 double x2,
double y2,
3021 double& R,
double& cx,
double& cy,
3022 double& alpha0,
double& alpha1,
3025 double x0,
double y0,
double z0,
3026 double x1,
double y1,
double z1,
3027 double x2,
double y2,
double z2,
3029 double dfMaxAngleStepSizeDegrees,
3030 const char*
const * papszOptions =
nullptr );
3031 static OGRCurve* curveFromLineString(
3033 const char*
const * papszOptions =
nullptr);
3050 struct CPL_DLL OGRPreparedGeometryUniquePtrDeleter
virtual void visit(OGRPoint *)=0
Visit OGRPoint.
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition: ogrlinestring.cpp:2214
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition: ogrcurvepolygon.cpp:616
OGRBoolean Is3D() const
Definition: ogr_geometry.h:403
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
OGRMultiPolygon * toMultiPolygon()
Down-cast to OGRMultiPolygon*.
Definition: ogr_geometry.h:767
OGRPolygon ChildType
Type of child elements.
Definition: ogr_geometry.h:2424
OGRLineString ChildType
Type of child elements.
Definition: ogr_geometry.h:2869
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1019
virtual OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:419
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2901
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2874
A collection of OGRCurve.
Definition: ogr_geometry.h:2770
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:353
OGRRawPoint()
Constructor.
Definition: ogr_geometry.h:106
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition: ogrgeometrycollection.cpp:1177
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:1219
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2522
virtual double get_Area() const =0
Get the area of the surface object.
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
bool operator==(const OGRGeometry &other) const
Returns if two geometries are equal.
Definition: ogr_geometry.h:389
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:1297
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:792
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4968
A collection of non-overlapping OGRPolygon.
Definition: ogr_geometry.h:2397
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:215
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:703
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:760
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2736
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2528
Interface for a point iterator.
Definition: ogr_geometry.h:961
OGRSurface ChildType
Type of child elements.
Definition: ogr_geometry.h:2326
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2331
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:165
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:5104
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2372
Utility class to store a collection of curves.
Definition: ogr_geometry.h:1641
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2083
virtual int getNumPoints() const override
Fetch vertex count.
Definition: ogr_geometry.h:1217
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5794
OGRErr importFromWkt(const char **) override
deprecated
Definition: ogrlinestring.cpp:1713
virtual OGRwkbGeometryType getGeometryType() const override
Returns the WKB Type of PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:109
OGRSimpleCurve * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:1337
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1188
OGRCurve * toCurve()
Down-cast to OGRCurve*.
Definition: ogr_geometry.h:585
OGRWktFormat format
Formatting type.
Definition: ogr_geometry.h:78
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:287
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:714
OGRGeometry visitor interface.
Definition: ogr_geometry.h:230
OGRWktOptions()
Constructor.
Definition: ogr_geometry.h:81
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrlinestring.cpp:1615
void setM(double mIn)
Set m.
Definition: ogr_geometry.h:932
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2639
const OGRLineString * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:1417
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const
Return a polygon from a curve polygon.
Definition: ogrcurvepolygon.cpp:566
ChildType ** begin()
Return begin of curve iterator.
Definition: ogr_geometry.h:1685
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1042
const OGRCompoundCurve * toCompoundCurve() const
Down-cast to OGRCompoundCurve*.
Definition: ogr_geometry.h:662
Create geometry objects from well known text/binary.
Definition: ogr_geometry.h:2931
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2435
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3213
OGRMultiSurface * toMultiSurface()
Down-cast to OGRMultiSurface*.
Definition: ogr_geometry.h:795
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:318
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2458
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2584
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition: ogrmulticurve.cpp:135
const OGRPolygon * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2150
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2710
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Convert a OGRGeometryH to a OGRGeometry*.
Definition: ogr_geometry.h:564
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2799
OGRLinearRing ChildType
Type of child elements.
Definition: ogr_geometry.h:2016
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:591
A collection of 1 or more geometry objects.
Definition: ogr_geometry.h:2171
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrgeometry.cpp:3145
@ wkbVariantOldOgc
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:463
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2716
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:157
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolyhedralsurface.cpp:95
OGRCircularString * toCircularString()
Down-cast to OGRCircularString*.
Definition: ogr_geometry.h:641
PolyhedralSurface class.
Definition: ogr_geometry.h:2488
const OGRCircularString * toCircularString() const
Down-cast to OGRCircularString*.
Definition: ogr_geometry.h:648
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2460
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:1766
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrgeometrycollection.cpp:232
OGRTriangulatedSurface * toTriangulatedSurface()
Down-cast to OGRTriangulatedSurface*.
Definition: ogr_geometry.h:823
const OGRTriangle * toTriangle() const
Down-cast to OGRTriangle*.
Definition: ogr_geometry.h:704
const OGRPolygon * toPolygon() const
Down-cast to OGRPolygon*.
Definition: ogr_geometry.h:690
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:325
A collection of OGRPoint.
Definition: ogr_geometry.h:2686
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2103
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2882
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:121
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2084
const OGRSimpleCurve * toSimpleCurve() const
Down-cast to OGRSimpleCurve*.
Definition: ogr_geometry.h:1060
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2520
OGRErr importFromWkb(const GByte *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometry.cpp:1385
A collection of non-overlapping OGRSurface.
Definition: ogr_geometry.h:2312
Point class.
Definition: ogr_geometry.h:857
bool round
Whether GDAL-special rounding should be applied.
Definition: ogr_geometry.h:76
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:372
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2829
virtual OGRErr addGeometry(const OGRGeometry *) override
Add a new geometry to a collection.
Definition: ogrtriangulatedsurface.cpp:180
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrgeometry.cpp:3178
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:1220
OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known text format.
Definition: ogrgeometry.cpp:1787
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2827
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction,...
Definition: ogrcurvepolygon.cpp:128
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a curve polygon to WKT.
Definition: ogrcurvepolygon.cpp:538
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2437
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:151
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2461
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a multicurve to WKT.
Definition: ogrmulticurve.cpp:175
OGRwkbVariant variant
Type of WKT output to produce.
Definition: ogr_geometry.h:72
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:91
@ Default
Format as F when abs(value) < 1, otherwise as G.
int OGRBoolean
Type for a OGR boolean.
Definition: ogr_core.h:334
double x
x
Definition: ogr_geometry.h:112
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2795
void setX(double xIn)
Set x.
Definition: ogr_geometry.h:919
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrlinestring.cpp:2702
int precision
Precision of output. Interpretation depends on format.
Definition: ogr_geometry.h:74
const OGRLinearRing * toLinearRing() const
Down-cast to OGRLinearRing*.
Definition: ogr_geometry.h:634
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2283
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogr_geometry.h:1803
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a polygon to WKT.
Definition: ogrpolygon.cpp:621
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:1419
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2429
Simple container for a position.
Definition: ogr_geometry.h:102
A collection of OGRLineString.
Definition: ogr_geometry.h:2855
OGRCurve ChildType
Type of child elements.
Definition: ogr_geometry.h:1865
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
virtual void flattenTo2D()=0
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition: ogrmultisurface.cpp:137
OGRMultiCurve * toMultiCurve()
Down-cast to OGRMultiCurve*.
Definition: ogr_geometry.h:781
OGRPoint ChildType
Type of child elements.
Definition: ogr_geometry.h:2703
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrcurvepolygon.cpp:440
virtual OGRErr addGeometry(const OGRGeometry *)
Add a new geometry to a collection.
Definition: ogrpolyhedralsurface.cpp:724
Abstract base class for 2 dimensional objects like polygons or curve polygons.
Definition: ogr_geometry.h:1793
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:114
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:277
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
OGRwkbByteOrder
Enumeration to describe byte order.
Definition: ogr_core.h:527
OGRPolyhedralSurface * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2655
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:1524
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:138
OGRTriangle ChildType
Type of child elements.
Definition: ogr_geometry.h:2632
Concrete representation of a circular string, that is to say a curve made of one or several arc circl...
Definition: ogr_geometry.h:1451
OGRCurvePolygon()
Create an empty curve polygon.
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmulticurve.cpp:98
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrgeometry.cpp:503
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:720
const OGRLineString * toLineString() const
Down-cast to OGRLineString*.
Definition: ogr_geometry.h:620
OGRTriangle * toTriangle()
Down-cast to OGRTriangle*.
Definition: ogr_geometry.h:697
The CPLJSONArray class holds JSON object from CPLJSONDocument.
Definition: cpl_json.h:53
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition: ogrgeometrycollection.cpp:110
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a simple curve to WKT.
Definition: ogrlinestring.cpp:1832
int OGRHasPreparedGeometrySupport()
Returns if GEOS has prepared geometry support.
Definition: ogrgeometry.cpp:5842
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2659
OGRPoint * toPoint()
Down-cast to OGRPoint*.
Definition: ogr_geometry.h:571
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2337
virtual void set3D(OGRBoolean bIs3D) override
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:691
const ChildType *const * begin() const
Return begin of sub-geometry iterator.
Definition: ogr_geometry.h:2211
OGRSurface * toSurface()
Down-cast to OGRSurface*.
Definition: ogr_geometry.h:669
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2714
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2793
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2371
const ChildType *const * begin() const
Return begin of curve iterator.
Definition: ogr_geometry.h:1691
OGRGeometry ChildType
Type of child elements.
Definition: ogr_geometry.h:2200
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2369
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1499
OGRPolyhedralSurface * toPolyhedralSurface()
Down-cast to OGRPolyhedralSurface*.
Definition: ogr_geometry.h:809
void sfcgal_geometry_t
SFCGAL geometry type.
Definition: ogr_geometry.h:122
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:655
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const =0
Return a linestring from a curve geometry.
~OGRPolyhedralSurface() override
Destructor.
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2153
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2905
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2645
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Deprecated.
Definition: ogr_geometry.h:2956
OGRErr importFromWkt(const char **) override
deprecated
Definition: ogrgeometrycollection.cpp:792
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:1342
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:396
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:685
ChildType ** end()
Return end of curve iterator.
Definition: ogr_geometry.h:1872
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2367
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:464
OGRPoint ChildType
Type of child elements.
Definition: ogr_geometry.h:1156
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:946
const OGRPoint * toPoint() const
Down-cast to OGRPoint*.
Definition: ogr_geometry.h:578
OGRRawPoint(double xIn, double yIn)
Constructor.
Definition: ogr_geometry.h:109
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:951
virtual void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition: ogrgeometry.cpp:433
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrcurvepolygon.cpp:138
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2825
OGRSimpleCurve * toSimpleCurve()
Down-cast to OGRSimpleCurve*.
Definition: ogr_geometry.h:1055
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2029
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:827
const OGRPolyhedralSurface * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2657
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrpolygon.cpp:104
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2284
OGRLineString * toLineString()
Down-cast to OGRLineString*.
Definition: ogr_geometry.h:613
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:814
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
OGRSimpleCurve * toSimpleCurve()
Down-cast to OGRSimpleCurve*.
Definition: ogr_geometry.h:599
const ChildType *const * end() const
Return end of curve iterator.
Definition: ogr_geometry.h:1878
virtual void empty()=0
Clear geometry information. This restores the geometry to its initial state after construction,...
OGRPolygon * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2148
const OGRCurvePolygon * toCurvePolygon() const
Down-cast to OGRCurvePolygon*.
Definition: ogr_geometry.h:718
const OGRTriangulatedSurface * toTriangulatedSurface() const
Down-cast to OGRTriangulatedSurface*.
Definition: ogr_geometry.h:830
OGRCurve ChildType
Type of child elements.
Definition: ogr_geometry.h:2788
const OGRSimpleCurve * toSimpleCurve() const
Down-cast to OGRSimpleCurve*.
Definition: ogr_geometry.h:606
Abstract curve base class for OGRLineString and OGRCircularString.
Definition: ogr_geometry.h:1088
void OGRDestroyPreparedGeometry(OGRPreparedGeometry *poPreparedGeom)
Destroys a prepared geometry.
Definition: ogrgeometry.cpp:5898
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Map OGCgeometry format type to corresponding OGR constants.
Definition: ogrgeometry.cpp:2344
struct _OGRPreparedGeometry OGRPreparedGeometry
Prepared geometry API (needs GEOS >= 3.1.0)
Definition: ogr_geometry.h:3040
void * OGRGeometryH
Opaque type for a geometry.
Definition: ogr_api.h:60
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:125
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2431
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmultisurface.cpp:99
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2801
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) override
Add a ring to a polygon.
Definition: ogrtriangle.cpp:246
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:1953
struct GEOSGeom_t * GEOSGeom
GEOS geometry type.
Definition: ogr_geometry.h:118
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:901
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:292
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2741
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:1952
OGRGeometry visitor interface.
Definition: ogr_geometry.h:156
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2660
ChildType ** end()
Return end of curve iterator.
Definition: ogr_geometry.h:1687
const OGRSimpleCurve * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:1521
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:945
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2880
OGRSimpleCurve * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:1519
virtual int getDimension() const =0
Get the dimension of this object.
OGRLinearRing * toLinearRing()
Down-cast to OGRLinearRing*.
Definition: ogr_geometry.h:627
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:318
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrlinestring.cpp:2438
OGRCurvePolygon * toCurvePolygon()
Down-cast to OGRCurvePolygon*.
Definition: ogr_geometry.h:711
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrgeometry.cpp:801
int OGRPreparedGeometryIntersects(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry intersects with a geometry.
Definition: ogrgeometry.cpp:5920
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2903
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:1767
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:86
OGRPolygon * toPolygon()
Down-cast to OGRPolygon*.
Definition: ogr_geometry.h:683
OGRWktFormat
WKT Output formatting options.
Definition: ogr_geometry.h:60
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a geometry collection to WKT.
Definition: ogrmultisurface.cpp:266
OGRGeometryCollection * toGeometryCollection()
Down-cast to OGRGeometryCollection*.
Definition: ogr_geometry.h:725
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:201
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrlinestring.cpp:208
const OGRMultiCurve * toMultiCurve() const
Down-cast to OGRMultiCurve*.
Definition: ogr_geometry.h:788
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:238
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2740
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:345
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2333
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:636
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition: ogrmulticurve.cpp:85
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2637
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:942
Triangle class.
Definition: ogr_geometry.h:2111
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2906
const ChildType *const * end() const
Return end of iterator.
Definition: ogr_geometry.h:2339
const OGRMultiPoint * toMultiPoint() const
Down-cast to OGRMultiPoint*.
Definition: ogr_geometry.h:746
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrcurvepolygon.cpp:175
void setY(double yIn)
Set y.
Definition: ogr_geometry.h:923
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2021
OGRGeometry visitor default implementation.
Definition: ogr_geometry.h:277
OGRErr removeRing(int iIndex, bool bDelete=true)
Remove a geometry from the container.
Definition: ogrcurvepolygon.cpp:339
virtual double get_AreaOfCurveSegments() const override
Return area of curve segments.
Definition: ogrcompoundcurve.cpp:902
ChildType ** end()
Return end of sub-geometry iterator.
Definition: ogr_geometry.h:2207
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2027
const OGRMultiSurface * toMultiSurface() const
Down-cast to OGRMultiSurface*.
Definition: ogr_geometry.h:802
ChildType ** begin()
Return begin of sub-geometry iterator.
Definition: ogr_geometry.h:2205
double getZ() const
Return z.
Definition: ogr_geometry.h:910
void setZ(double zIn)
Set z.
Definition: ogr_geometry.h:927
const OGRSurface * toSurface() const
Down-cast to OGRSurface*.
Definition: ogr_geometry.h:676
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:362
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:731
Simple container for a bounding region in 3D.
Definition: ogr_core.h:175
virtual int WkbSize() const =0
Returns size of related binary representation.
const ChildType *const * end() const
Return end of curve iterator.
Definition: ogr_geometry.h:1693
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:405
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:88
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Unique pointer type for OGRPreparedGeometry.
Definition: ogr_geometry.h:3059
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:186
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2643
Abstract curve base class for OGRLineString, OGRCircularString and OGRCompoundCurve.
Definition: ogr_geometry.h:979
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2317
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrcurvepolygon.cpp:705
virtual double get_Length() const override
Returns the length of the curve.
Definition: ogrlinestring.cpp:1871
double getY() const
Return y.
Definition: ogr_geometry.h:908
void visit(OGRPoint *) override
Visit OGRPoint.
Definition: ogr_geometry.h:209
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2738
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:723
struct GEOSContextHandle_HS * GEOSContextHandle_t
GEOS context handle type.
Definition: ogr_geometry.h:120
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2023
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrgeometrycollection.cpp:193
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition: ogrpolyhedralsurface.cpp:80
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2456
Concrete representation of a closed ring.
Definition: ogr_geometry.h:1369
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Unique pointer type for OGRGeometry.
Definition: ogr_geometry.h:845
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:57
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2152
const OGRGeometryCollection * toGeometryCollection() const
Down-cast to OGRGeometryCollection*.
Definition: ogr_geometry.h:732
virtual void Value(double, OGRPoint *) const override
Fetch point at given distance along curve.
Definition: ogrlinestring.cpp:1913
ChildType ** begin()
Return begin of curve iterator.
Definition: ogr_geometry.h:1870
OGRPreparedGeometry * OGRCreatePreparedGeometry(const OGRGeometry *poGeom)
Creates a prepared geometry.
Definition: ogrgeometry.cpp:5862
const OGRMultiPolygon * toMultiPolygon() const
Down-cast to OGRMultiPolygon*.
Definition: ogr_geometry.h:774
virtual void visit(const OGRPoint *)=0
Visit OGRPoint.
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:375
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:2830
OGRPolygon ChildType
Type of child elements.
Definition: ogr_geometry.h:2515
ChildType ** begin()
Return begin of iterator.
Definition: ogr_geometry.h:2708
OGRMultiPoint * toMultiPoint()
Down-cast to OGRMultiPoint*.
Definition: ogr_geometry.h:739
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Map OGR geometry format constants to corresponding OGC geometry type.
Definition: ogrgeometry.cpp:2417
double y
y
Definition: ogr_geometry.h:114
const OGRCurve * toCurve() const
Down-cast to OGRCurve*.
Definition: ogr_geometry.h:592
Options for formatting WKT output.
Definition: ogr_geometry.h:68
OGRErr importFromWkt(const char **) override
deprecated
Definition: ogrcurvepolygon.cpp:523
const OGRMultiLineString * toMultiLineString() const
Down-cast to OGRMultiLineString*.
Definition: ogr_geometry.h:760
const OGRSimpleCurve * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:1339
virtual void setMeasured(OGRBoolean bIsMeasured) override
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:696
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition: ogrcurve.cpp:416
const OGRCurvePolygon * toUpperClass() const
Return pointer of this in upper class.
Definition: ogr_geometry.h:2081
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:1341
Concrete class representing polygons.
Definition: ogr_geometry.h:1983
TriangulatedSurface class.
Definition: ogr_geometry.h:2611
Concrete class representing curve polygons.
Definition: ogr_geometry.h:1828
double getM() const
Return m.
Definition: ogr_geometry.h:912
virtual void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:2583
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:266
virtual OGRBoolean Equals(const OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
const ChildType *const * begin() const
Return begin of curve iterator.
Definition: ogr_geometry.h:1876
virtual double get_Length() const =0
Returns the length of the curve.
int OGRPreparedGeometryContains(const OGRPreparedGeometry *poPreparedGeom, const OGRGeometry *poOtherGeom)
Returns whether a prepared geometry contains a geometry.
Definition: ogrgeometry.cpp:5950
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:126
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrlinestring.cpp:141
const OGRPolyhedralSurface * toPolyhedralSurface() const
Down-cast to OGRPolyhedralSurface*.
Definition: ogr_geometry.h:816
OGRMultiLineString * toMultiLineString()
Down-cast to OGRMultiLineString*.
Definition: ogr_geometry.h:753
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2672
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrcurvepolygon.cpp:606
virtual OGRBoolean Within(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4894
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrgeometrycollection.cpp:176
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition: ogr_geometry.h:1523
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1065
OGRCurvePolygon * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:2079
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:495
bool operator!=(const OGRGeometry &other) const
Returns if two geometries are different.
Definition: ogr_geometry.h:392
const ChildType *const * begin() const
Return begin of iterator.
Definition: ogr_geometry.h:2526
void visit(const OGRPoint *) override
Visit OGRPoint.
Definition: ogr_geometry.h:283
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolygon.cpp:298
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:461
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a geometry collection to WKT.
Definition: ogrgeometrycollection.cpp:805
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:307
OGRPoint ChildType
Type of child elements.
Definition: ogr_geometry.h:1022
OGRCurve ChildType
Type of child elements.
Definition: ogr_geometry.h:1680
OGRLineString * toUpperClass()
Return pointer of this in upper class.
Definition: ogr_geometry.h:1415
const ChildType *const * end() const
Return end of sub-geometry iterator.
Definition: ogr_geometry.h:2213
OGRCompoundCurve * toCompoundCurve()
Down-cast to OGRCompoundCurve*.
Definition: ogr_geometry.h:655
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:737
double getX() const
Return x.
Definition: ogr_geometry.h:906
virtual double get_Area() const =0
Get the area of the (closed) curve.
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Convert a OGRGeometry* to a OGRGeometryH.
Definition: ogr_geometry.h:558
ChildType ** end()
Return end of iterator.
Definition: ogr_geometry.h:2876
OGRGeometry visitor default implementation.
Definition: ogr_geometry.h:203
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition: ogr_geometry.h:1420