32#ifndef OGR_GEOMETRY_H_INCLUDED
33#define OGR_GEOMETRY_H_INCLUDED
50#ifndef DEFINEH_OGRGeometryH
51#define DEFINEH_OGRGeometryH
85 static int defPrecision = getDefaultPrecision();
86 static bool defRound = getDefaultRound();
96 static int getDefaultPrecision();
97 static bool getDefaultRound();
326class CPL_DLL OGRGeometry
333 friend class OGRCurveCollection;
335 unsigned int flags = 0;
337 OGRErr importPreambleFromWkt(
const char ** ppszInput,
338 int* pbHasZ,
int* pbHasM,
340 OGRErr importCurveCollectionFromWkt(
341 const char ** ppszInput,
342 int bAllowEmptyComponent,
343 int bAllowLineString,
345 int bAllowCompoundCurve,
346 OGRErr (*pfnAddCurveDirectly)(OGRGeometry* poSelf,
348 OGRErr importPreambleFromWkb(
const unsigned char * pabyData,
352 OGRErr importPreambleOfCollectionFromWkb(
353 const unsigned char * pabyData,
357 size_t nMinSubGeomSize,
363 void HomogenizeDimensionalityWith( OGRGeometry* poOtherGeom );
378 static const unsigned int OGR_G_NOT_EMPTY_POINT = 0x1;
379 static const unsigned int OGR_G_3D = 0x2;
380 static const unsigned int OGR_G_MEASURED = 0x4;
384 OGRGeometry(
const OGRGeometry& other );
385 virtual ~OGRGeometry();
387 OGRGeometry&
operator=(
const OGRGeometry& other );
421 size_t& nBytesConsumedOut ) = 0;
432 CPL_WARN_DEPRECATED(
"Use importFromWkt(const char**) instead")
439 OGRErr exportToWkt(
char ** ppszDstText,
447 OGRErr *err =
nullptr)
const = 0;
453 virtual void dumpReadable( FILE *,
const char * =
nullptr
454 ,
char** papszOptions =
nullptr )
const;
456 virtual char *
exportToGML(
const char*
const * papszOptions =
nullptr )
const;
474 double dfMaxAngleStepSizeDegrees = 0,
510 virtual
double Distance( const OGRGeometry * ) const ;
512 virtual OGRGeometry *
Buffer(
double dfDist,
int nQuadSegs = 30 )
516 virtual OGRGeometry *
Union( const OGRGeometry * )
519 virtual OGRGeometry *
Difference( const OGRGeometry * )
524 virtual OGRGeometry *
Simplify(
double dTolerance)
533 virtual
double Distance3D( const OGRGeometry *poOtherGeom ) const;
538 const CPL_WARN_DEPRECATED(
"Non standard method. "
539 "Use Intersects() instead");
541 const CPL_WARN_DEPRECATED(
"Non standard method. "
542 "Use Equals() instead");
543 OGRGeometry *SymmetricDifference( const OGRGeometry * )
544 const CPL_WARN_DEPRECATED(
"Non standard method. "
545 "Use SymDifference() instead");
546 OGRGeometry *getBoundary()
547 const CPL_WARN_DEPRECATED(
"Non standard method. "
548 "Use Boundary() instead");
553 static
int bGenerate_DB2_V72_BYTE_ORDER;
558 static OGRGeometry* CastToIdentity( OGRGeometry* poGeom ) {
return poGeom; }
572 {
return reinterpret_cast<OGRGeometry*
>(hGeom); }
843struct CPL_DLL OGRGeometryUniquePtrDeleter
845 void operator()(OGRGeometry*)
const;
856#define OGR_FORBID_DOWNCAST_TO(name) \
857 inline OGR ## name * to ## name() = delete; \
858 inline const OGR ## name * to ## name() const = delete;
860#define OGR_FORBID_DOWNCAST_TO_POINT OGR_FORBID_DOWNCAST_TO(Point)
861#define OGR_FORBID_DOWNCAST_TO_CURVE OGR_FORBID_DOWNCAST_TO(Curve)
862#define OGR_FORBID_DOWNCAST_TO_SIMPLE_CURVE OGR_FORBID_DOWNCAST_TO(SimpleCurve)
863#define OGR_FORBID_DOWNCAST_TO_LINESTRING OGR_FORBID_DOWNCAST_TO(LineString)
864#define OGR_FORBID_DOWNCAST_TO_LINEARRING OGR_FORBID_DOWNCAST_TO(LinearRing)
865#define OGR_FORBID_DOWNCAST_TO_CIRCULARSTRING OGR_FORBID_DOWNCAST_TO(CircularString)
866#define OGR_FORBID_DOWNCAST_TO_COMPOUNDCURVE OGR_FORBID_DOWNCAST_TO(CompoundCurve)
867#define OGR_FORBID_DOWNCAST_TO_SURFACE OGR_FORBID_DOWNCAST_TO(Surface)
868#define OGR_FORBID_DOWNCAST_TO_CURVEPOLYGON OGR_FORBID_DOWNCAST_TO(CurvePolygon)
869#define OGR_FORBID_DOWNCAST_TO_POLYGON OGR_FORBID_DOWNCAST_TO(Polygon)
870#define OGR_FORBID_DOWNCAST_TO_TRIANGLE OGR_FORBID_DOWNCAST_TO(Triangle)
871#define OGR_FORBID_DOWNCAST_TO_MULTIPOINT OGR_FORBID_DOWNCAST_TO(MultiPoint)
872#define OGR_FORBID_DOWNCAST_TO_MULTICURVE OGR_FORBID_DOWNCAST_TO(MultiCurve)
873#define OGR_FORBID_DOWNCAST_TO_MULTILINESTRING OGR_FORBID_DOWNCAST_TO(MultiLineString)
874#define OGR_FORBID_DOWNCAST_TO_MULTISURFACE OGR_FORBID_DOWNCAST_TO(MultiSurface)
875#define OGR_FORBID_DOWNCAST_TO_MULTIPOLYGON OGR_FORBID_DOWNCAST_TO(MultiPolygon)
876#define OGR_FORBID_DOWNCAST_TO_GEOMETRYCOLLECTION OGR_FORBID_DOWNCAST_TO(GeometryCollection)
877#define OGR_FORBID_DOWNCAST_TO_POLYHEDRALSURFACE OGR_FORBID_DOWNCAST_TO(PolyhedralSurface)
878#define OGR_FORBID_DOWNCAST_TO_TIN OGR_FORBID_DOWNCAST_TO(TriangulatedSurface)
880#define OGR_ALLOW_UPCAST_TO(name) \
881 inline OGR ## name * to ## name() { return this; } \
882 inline const OGR ## name * to ## name() const { return this; }
884#ifndef SUPPRESS_OGR_ALLOW_CAST_TO_THIS_WARNING
885#define CAST_TO_THIS_WARNING CPL_WARN_DEPRECATED("Casting to this is useless")
887#define CAST_TO_THIS_WARNING
890#define OGR_ALLOW_CAST_TO_THIS(name) \
891 inline OGR ## name * to ## name() CAST_TO_THIS_WARNING { return this; } \
892 inline const OGR ## name * to ## name() const CAST_TO_THIS_WARNING { return this; }
894#define OGR_FORBID_DOWNCAST_TO_ALL_CURVES \
895 OGR_FORBID_DOWNCAST_TO_CURVE \
896 OGR_FORBID_DOWNCAST_TO_SIMPLE_CURVE \
897 OGR_FORBID_DOWNCAST_TO_LINESTRING \
898 OGR_FORBID_DOWNCAST_TO_LINEARRING \
899 OGR_FORBID_DOWNCAST_TO_CIRCULARSTRING \
900 OGR_FORBID_DOWNCAST_TO_COMPOUNDCURVE
902#define OGR_FORBID_DOWNCAST_TO_ALL_SURFACES \
903 OGR_FORBID_DOWNCAST_TO_SURFACE \
904 OGR_FORBID_DOWNCAST_TO_CURVEPOLYGON \
905 OGR_FORBID_DOWNCAST_TO_POLYGON \
906 OGR_FORBID_DOWNCAST_TO_TRIANGLE \
907 OGR_FORBID_DOWNCAST_TO_POLYHEDRALSURFACE \
908 OGR_FORBID_DOWNCAST_TO_TIN
910#define OGR_FORBID_DOWNCAST_TO_ALL_SINGLES \
911 OGR_FORBID_DOWNCAST_TO_POINT \
912 OGR_FORBID_DOWNCAST_TO_ALL_CURVES \
913 OGR_FORBID_DOWNCAST_TO_ALL_SURFACES
915#define OGR_FORBID_DOWNCAST_TO_ALL_MULTI \
916 OGR_FORBID_DOWNCAST_TO_GEOMETRYCOLLECTION \
917 OGR_FORBID_DOWNCAST_TO_MULTIPOINT \
918 OGR_FORBID_DOWNCAST_TO_MULTICURVE \
919 OGR_FORBID_DOWNCAST_TO_MULTILINESTRING \
920 OGR_FORBID_DOWNCAST_TO_MULTISURFACE \
921 OGR_FORBID_DOWNCAST_TO_MULTIPOLYGON
945 OGRPoint(
double x,
double y,
double z );
946 OGRPoint(
double x,
double y,
double z,
double m );
954 size_t WkbSize()
const override;
958 size_t& nBytesConsumedOut )
override;
978 OGRErr *err =
nullptr)
const override;
983 virtual void empty()
override;
987 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
991 double getX()
const {
return x; }
993 double getY()
const {
return y; }
995 double getZ()
const {
return z; }
997 double getM()
const {
return m; }
1000 virtual void setCoordinateDimension(
int nDimension )
override;
1004 void setX(
double xIn ) { x = xIn;
if( std::isnan(x) || std::isnan(y) ) flags &= ~OGR_G_NOT_EMPTY_POINT;
else flags |= OGR_G_NOT_EMPTY_POINT; }
1008 void setY(
double yIn ) { y = yIn;
if( std::isnan(x) || std::isnan(y) ) flags &= ~OGR_G_NOT_EMPTY_POINT;
else flags |= OGR_G_NOT_EMPTY_POINT; }
1013 { z = zIn; flags |= OGR_G_3D; }
1018 { m = mIn; flags |= OGR_G_MEASURED; }
1026 virtual const char *getGeometryName()
const override;
1029 virtual void flattenTo2D()
override;
1033 virtual void swapXY()
override;
1035 OGR_ALLOW_CAST_TO_THIS(Point)
1036 OGR_FORBID_DOWNCAST_TO_ALL_CURVES
1037 OGR_FORBID_DOWNCAST_TO_ALL_SURFACES
1038 OGR_FORBID_DOWNCAST_TO_ALL_MULTI
1076 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
1077 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
1088 class CPL_DLL ConstIterator
1091 std::unique_ptr<Private> m_poPrivate;
1093 ConstIterator(
const OGRCurve* poSelf,
bool bStart);
1094 ConstIterator(ConstIterator&& oOther)
noexcept;
1097 ConstIterator& operator++();
1098 bool operator!=(
const ConstIterator& it)
const;
1122 ConstIterator
begin()
const;
1124 ConstIterator
end()
const;
1136 const char*
const* papszOptions =
nullptr)
1160 OGR_FORBID_DOWNCAST_TO_POINT
1161 OGR_ALLOW_CAST_TO_THIS(Curve)
1162 OGR_FORBID_DOWNCAST_TO_ALL_SURFACES
1163 OGR_FORBID_DOWNCAST_TO_ALL_MULTI
1168inline OGRCurve::ConstIterator
begin(
const OGRCurve* poCurve) {
return poCurve->begin(); }
1170inline OGRCurve::ConstIterator
end(
const OGRCurve* poCurve) {
return poCurve->end(); }
1202 OGRErr importFromWKTListOnly(
const char ** ppszInput,
int bHasZ,
int bHasM,
1214 class CPL_DLL Iterator
1217 std::unique_ptr<Private> m_poPrivate;
1221 Iterator(Iterator&& oOther)
noexcept;
1224 Iterator& operator++();
1231 class CPL_DLL ConstIterator
1234 std::unique_ptr<Private> m_poPrivate;
1237 ConstIterator(ConstIterator&& oOther)
noexcept;
1240 ConstIterator& operator++();
1241 bool operator!=(
const ConstIterator& it)
const;
1274 ConstIterator
begin()
const;
1276 ConstIterator
end()
const;
1279 virtual size_t WkbSize()
const override;
1283 size_t& nBytesConsumedOut )
override;
1303 OGRErr *err =
nullptr)
const override;
1306 virtual void empty()
override;
1322 void getPoint(
int,
OGRPoint * )
const;
1323 double getX(
int i )
const {
return paoPoints[i].
x; }
1324 double getY(
int i )
const {
return paoPoints[i].
y; }
1325 double getZ(
int i )
const;
1326 double getM(
int i )
const;
1332 virtual void setCoordinateDimension(
int nDimension )
override;
1333 virtual void set3D(
OGRBoolean bIs3D )
override;
1334 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1335 void setNumPoints(
int nNewPointCount,
1336 int bZeroizeNewContent = TRUE );
1338 void setPoint(
int,
double,
double );
1339 void setZ(
int,
double );
1340 void setM(
int,
double );
1341 void setPoint(
int,
double,
double,
double );
1342 void setPointM(
int,
double,
double,
double );
1343 void setPoint(
int,
double,
double,
double,
double );
1344 void setPoints(
int,
const OGRRawPoint *,
const double * =
nullptr );
1345 void setPointsM(
int,
const OGRRawPoint *,
const double * );
1346 void setPoints(
int,
const OGRRawPoint *,
const double *,
const double * );
1347 void setPoints(
int,
const double * padfX,
const double * padfY,
1348 const double *padfZIn =
nullptr );
1349 void setPointsM(
int,
const double * padfX,
const double * padfY,
1350 const double *padfMIn =
nullptr );
1351 void setPoints(
int,
const double * padfX,
const double * padfY,
1352 const double *padfZIn,
const double *padfMIn );
1354 void addPoint(
double,
double );
1355 void addPoint(
double,
double,
double );
1356 void addPointM(
double,
double,
double );
1357 void addPoint(
double,
double,
double,
double );
1359 bool removePoint(
int );
1361 void getPoints(
OGRRawPoint *,
double * =
nullptr )
const;
1362 void getPoints(
void* pabyX,
int nXStride,
1363 void* pabyY,
int nYStride,
1364 void* pabyZ =
nullptr,
int nZStride = 0,
1365 void* pabyM =
nullptr,
int nMStride = 0 )
const;
1368 int nStartVertex = 0,
int nEndVertex = -1 );
1369 void reversePoints(
void );
1374 virtual void flattenTo2D()
override;
1375 virtual void segmentize(
double dfMaxLength)
override;
1377 virtual void swapXY()
override;
1379 OGR_ALLOW_UPCAST_TO(Curve)
1380 OGR_ALLOW_CAST_TO_THIS(SimpleCurve)
1385inline OGRSimpleCurve::Iterator
begin(
OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1387inline OGRSimpleCurve::Iterator
end(
OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1390inline OGRSimpleCurve::ConstIterator
begin(
const OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1392inline OGRSimpleCurve::ConstIterator
end(
const OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1417 virtual OGRCurveCasterToLineString GetCasterToLineString()
1419 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1436 const char*
const* papszOptions =
nullptr )
1439 const char*
const* papszOptions =
nullptr )
const override;
1454 OGR_ALLOW_UPCAST_TO(SimpleCurve)
1455 OGR_ALLOW_CAST_TO_THIS(LineString)
1489 virtual size_t WkbSize()
const override;
1490 virtual OGRErr importFromWkb(
const unsigned char *,
1493 size_t& nBytesConsumedOut )
override;
1504 virtual size_t _WkbSize(
int _flags )
const;
1506 const unsigned char *,
size_t,
1507 size_t& nBytesConsumedOut );
1509 unsigned char * )
const;
1511 virtual OGRCurveCasterToLineString GetCasterToLineString()
1513 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1534 int bTestEnvelope = TRUE )
const;
1536 int bTestEnvelope = TRUE )
const;
1547 OGR_ALLOW_UPCAST_TO(LineString)
1548 OGR_ALLOW_CAST_TO_THIS(LinearRing)
1570 void ExtendEnvelopeWithCircular(
OGREnvelope * psEnvelope )
const;
1572 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
1576 virtual OGRCurveCasterToLineString GetCasterToLineString()
1578 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1596 size_t& nBytesConsumedOut )
override;
1616 OGRErr *err =
nullptr)
const override;
1627 const char*
const* papszOptions =
nullptr )
1630 virtual double get_Area()
const override;
1635 virtual void segmentize(
double dfMaxLength )
override;
1639 double dfMaxAngleStepSizeDegrees = 0,
1640 const char*
const* papszOptions =
nullptr)
const override;
1650 OGR_ALLOW_UPCAST_TO(SimpleCurve)
1651 OGR_ALLOW_CAST_TO_THIS(CircularString)
1669class CPL_DLL OGRCurveCollection
1672 friend class OGRCompoundCurve;
1673 friend class OGRCurvePolygon;
1674 friend class OGRPolygon;
1675 friend class OGRTriangle;
1677 int nCurveCount = 0;
1678 OGRCurve **papoCurves =
nullptr;
1681 OGRCurveCollection();
1682 OGRCurveCollection(
const OGRCurveCollection& other);
1683 ~OGRCurveCollection();
1685 OGRCurveCollection& operator=(
const OGRCurveCollection& other);
1688 typedef OGRCurve ChildType;
1693 OGRCurve**
begin() {
return papoCurves; }
1695 OGRCurve**
end() {
return papoCurves + nCurveCount; }
1699 const OGRCurve*
const*
begin()
const {
return papoCurves; }
1701 const OGRCurve*
const*
end()
const {
return papoCurves + nCurveCount; }
1703 void empty(OGRGeometry* poGeom);
1705 void getEnvelope( OGREnvelope * psEnvelope )
const;
1706 void getEnvelope( OGREnvelope3D * psEnvelope )
const;
1708 OGRErr addCurveDirectly( OGRGeometry* poGeom, OGRCurve* poCurve,
1710 size_t WkbSize()
const;
1711 OGRErr importPreambleFromWkb( OGRGeometry* poGeom,
1712 const unsigned char * pabyData,
1714 size_t& nDataOffset,
1716 size_t nMinSubGeomSize,
1718 OGRErr importBodyFromWkb(
1719 OGRGeometry* poGeom,
1720 const unsigned char * pabyData,
1722 bool bAcceptCompoundCurve,
1723 OGRErr (*pfnAddCurveDirectlyFromWkb)( OGRGeometry* poGeom,
1724 OGRCurve* poCurve ),
1726 size_t& nBytesConsumedOut );
1727 std::string exportToWkt(
const OGRGeometry *geom,
const OGRWktOptions& opts,
1732 OGRBoolean Equals(
const OGRCurveCollection *poOCC)
const;
1733 void setCoordinateDimension( OGRGeometry* poGeom,
1734 int nNewDimension );
1735 void set3D( OGRGeometry* poGeom,
OGRBoolean bIs3D );
1736 void setMeasured( OGRGeometry* poGeom,
OGRBoolean bIsMeasured );
1737 void assignSpatialReference( OGRGeometry* poGeom, OGRSpatialReference * poSR );
1738 int getNumCurves()
const;
1739 OGRCurve *getCurve(
int );
1740 const OGRCurve *getCurve(
int )
const;
1741 OGRCurve *stealCurve(
int );
1743 OGRErr removeCurve(
int iIndex,
bool bDelete =
true );
1745 OGRErr transform( OGRGeometry* poGeom,
1746 OGRCoordinateTransformation *poCT );
1747 void flattenTo2D( OGRGeometry* poGeom );
1748 void segmentize(
double dfMaxLength );
1750 OGRBoolean hasCurveGeometry(
int bLookForNonLinear)
const;
1771 OGRCurveCollection oCC{};
1774 double dfToleranceEps,
1780 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
1781 const char*
const* papszOptions,
1782 int bIsLinearRing )
const;
1793 virtual OGRCurveCasterToLineString GetCasterToLineString()
1795 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1823 virtual size_t WkbSize()
const override;
1824 virtual OGRErr importFromWkb(
const unsigned char *,
1827 size_t& nBytesConsumedOut )
override;
1836 OGRErr importFromWkt(
const char ** )
override;
1847 OGRErr *err =
nullptr)
const override;
1851 virtual void empty()
override;
1852 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const override;
1853 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const override;
1857 virtual double get_Length()
const override;
1858 virtual void StartPoint(
OGRPoint * )
const override;
1859 virtual void EndPoint(
OGRPoint * )
const override;
1860 virtual void Value(
double,
OGRPoint * )
const override;
1861 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
1862 const char*
const* papszOptions =
nullptr )
1865 virtual int getNumPoints()
const override;
1866 virtual double get_AreaOfCurveSegments()
const override;
1867 virtual double get_Area()
const override;
1873 int getNumCurves()
const;
1875 const OGRCurve *getCurve(
int )
const;
1878 virtual void setCoordinateDimension(
int nDimension )
override;
1879 virtual void set3D(
OGRBoolean bIs3D )
override;
1880 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1885 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1891 virtual const char *getGeometryName()
const override;
1893 virtual void flattenTo2D()
override;
1894 virtual void segmentize(
double dfMaxLength)
override;
1895 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
1898 double dfMaxAngleStepSizeDegrees = 0,
1899 const char*
const* papszOptions =
nullptr)
const override;
1903 virtual void swapXY()
override;
1905 OGR_ALLOW_UPCAST_TO(Curve)
1906 OGR_ALLOW_CAST_TO_THIS(CompoundCurve)
1934 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1935 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1941 {
return PointOnSurfaceInternal(poPoint); }
1949 OGR_FORBID_DOWNCAST_TO_POINT
1950 OGR_FORBID_DOWNCAST_TO_ALL_CURVES
1951 OGR_ALLOW_CAST_TO_THIS(Surface)
1952 OGR_FORBID_DOWNCAST_TO_ALL_MULTI
1979 virtual int checkRing(
OGRCurve * poNewRing )
const;
1991 OGRCurveCollection oCC{};
1993 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1995 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2026 virtual const char *getGeometryName()
const override;
2029 virtual void empty()
override;
2031 virtual void flattenTo2D()
override;
2033 virtual void segmentize(
double dfMaxLength )
override;
2034 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2037 double dfMaxAngleStepSizeDegrees = 0,
2038 const char*
const* papszOptions =
nullptr )
const override;
2041 virtual double get_Area()
const override;
2044 virtual size_t WkbSize()
const override;
2045 virtual OGRErr importFromWkb(
const unsigned char *,
2048 size_t& nBytesConsumedOut )
override;
2057 OGRErr importFromWkt(
const char ** )
override;
2068 OGRErr *err =
nullptr)
const override;
2071 virtual int getDimension()
const override;
2072 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const override;
2073 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const override;
2077 double dfMaxAngleStepSizeDegrees = 0,
2078 const char*
const* papszOptions =
nullptr )
const;
2086 virtual void setCoordinateDimension(
int nDimension )
override;
2087 virtual void set3D(
OGRBoolean bIs3D )
override;
2088 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
2096 const OGRCurve *getExteriorRingCurve()
const;
2097 int getNumInteriorRings()
const;
2098 OGRCurve *getInteriorRingCurve(
int );
2099 const OGRCurve *getInteriorRingCurve(
int )
const;
2101 OGRCurve *stealExteriorRingCurve();
2103 OGRErr removeRing(
int iIndex,
bool bDelete =
true );
2107 virtual void swapXY()
override;
2109 OGR_ALLOW_UPCAST_TO(Surface)
2110 OGR_ALLOW_CAST_TO_THIS(CurvePolygon)
2148 virtual int checkRing(
OGRCurve * poNewRing )
const override;
2149 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
2150 int bHasZ,
int bHasM,
2157 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2159 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2187 virtual const char *getGeometryName()
const override;
2190 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2193 const char*
const* papszOptions =
nullptr )
const override;
2195 double dfMaxAngleStepSizeDegrees = 0,
2196 const char*
const* papszOptions =
nullptr)
const override;
2199 virtual size_t WkbSize()
const override;
2200 virtual OGRErr importFromWkb(
const unsigned char *,
2203 size_t& nBytesConsumedOut )
override;
2212 OGRErr importFromWkt(
const char ** )
override;
2223 OGRErr *err =
nullptr)
const override;
2227 double dfMaxAngleStepSizeDegrees = 0,
2228 const char*
const* papszOptions =
nullptr )
const override;
2248 virtual void closeRings()
override;
2250 OGR_ALLOW_UPCAST_TO(CurvePolygon)
2251 OGR_ALLOW_CAST_TO_THIS(Polygon)
2281 bool quickValidityCheck()
const;
2285 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const override;
2286 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
2287 int bHasZ,
int bHasM,
2290 double*& padfZ )
override;
2308 size_t& nBytesConsumedOut )
override;
2325 OGR_ALLOW_UPCAST_TO(Polygon)
2326 OGR_ALLOW_CAST_TO_THIS(Triangle)
2342 OGRErr importFromWkbInternal(
const unsigned char * pabyData,
2346 OGRErr importFromWktInternal(
const char **ppszInput,
int nRecLevel );
2351 OGRGeometry **papoGeoms =
nullptr;
2354 std::string exclude = std::string())
const;
2385 virtual const char *getGeometryName()
const override;
2388 virtual void empty()
override;
2390 virtual void flattenTo2D()
override;
2392 virtual void segmentize(
double dfMaxLength)
override;
2393 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2396 const char*
const* papszOptions =
nullptr )
const override;
2398 double dfMaxAngleStepSizeDegrees = 0,
2399 const char*
const* papszOptions =
nullptr )
const override;
2402 virtual size_t WkbSize()
const override;
2403 virtual OGRErr importFromWkb(
const unsigned char *,
2406 size_t& nBytesConsumedOut )
override;
2415 OGRErr importFromWkt(
const char ** )
override;
2426 OGRErr *err =
nullptr)
const override;
2428 virtual double get_Length()
const;
2429 virtual double get_Area()
const;
2432 virtual int getDimension()
const override;
2433 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const override;
2434 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const override;
2437 int getNumGeometries()
const;
2445 virtual void setCoordinateDimension(
int nDimension )
override;
2446 virtual void set3D(
OGRBoolean bIs3D )
override;
2447 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
2450 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2454 void closeRings()
override;
2456 virtual void swapXY()
override;
2464 OGR_FORBID_DOWNCAST_TO_POINT
2465 OGR_FORBID_DOWNCAST_TO_ALL_CURVES
2466 OGR_FORBID_DOWNCAST_TO_ALL_SURFACES
2467 OGR_ALLOW_CAST_TO_THIS(GeometryCollection)
2522 virtual const char *getGeometryName()
const override;
2530 OGRErr importFromWkt(
const char ** )
override;
2541 OGRErr *err =
nullptr)
const override;
2547 virtual int getDimension()
const override;
2556 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2569 OGR_ALLOW_CAST_TO_THIS(MultiSurface)
2570 OGR_ALLOW_UPCAST_TO(GeometryCollection)
2571 OGR_FORBID_DOWNCAST_TO_MULTIPOINT
2572 OGR_FORBID_DOWNCAST_TO_MULTILINESTRING
2573 OGR_FORBID_DOWNCAST_TO_MULTICURVE
2601 friend class OGRPolyhedralSurface;
2602 friend class OGRTriangulatedSurface;
2606 OGRErr _addGeometryWithExpectedSubGeometryType(
2609 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
2645 virtual const char *getGeometryName()
const override;
2658 OGRErr *err =
nullptr)
const override;
2661 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2674 OGR_ALLOW_CAST_TO_THIS(MultiPolygon)
2675 OGR_ALLOW_UPCAST_TO(MultiSurface)
2706 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2708 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2711 virtual const char* getSubGeometryName()
const;
2715 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2743 virtual size_t WkbSize()
const override;
2744 virtual const char *getGeometryName()
const override;
2746 virtual OGRErr importFromWkb(
const unsigned char *,
2749 size_t& nBytesConsumedOut )
override;
2758 OGRErr importFromWkt(
const char ** )
override;
2769 OGRErr *err =
nullptr)
const override;
2772 virtual int getDimension()
const override;
2774 virtual void empty()
override;
2777 virtual void getEnvelope(
OGREnvelope * psEnvelope )
const override;
2778 virtual void getEnvelope(
OGREnvelope3D * psEnvelope )
const override;
2780 virtual void flattenTo2D()
override;
2783 virtual double get_Area()
const override;
2787 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2791 int getNumGeometries()
const;
2793 const OGRPolygon* getGeometryRef(
int i)
const;
2796 virtual void setCoordinateDimension(
int nDimension )
override;
2797 virtual void set3D(
OGRBoolean bIs3D )
override;
2798 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
2799 virtual void swapXY()
override;
2800 OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2807 OGR_ALLOW_CAST_TO_THIS(PolyhedralSurface)
2808 OGR_ALLOW_UPCAST_TO(Surface)
2839 virtual const char* getSubGeometryName()
const override;
2842 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2870 virtual const char *getGeometryName()
const override;
2893 OGR_ALLOW_CAST_TO_THIS(TriangulatedSurface)
2894 OGR_ALLOW_UPCAST_TO(PolyhedralSurface)
2920 OGRErr importFromWkt_Bracketed(
const char **,
int bHasM,
int bHasZ );
2956 virtual const char *getGeometryName()
const override;
2964 OGRErr importFromWkt(
const char ** )
override;
2975 OGRErr *err =
nullptr)
const override;
2978 virtual int getDimension()
const override;
2989 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2992 OGR_ALLOW_CAST_TO_THIS(MultiPoint)
2993 OGR_ALLOW_UPCAST_TO(GeometryCollection)
2994 OGR_FORBID_DOWNCAST_TO_MULTILINESTRING
2995 OGR_FORBID_DOWNCAST_TO_MULTICURVE
2996 OGR_FORBID_DOWNCAST_TO_MULTISURFACE
2997 OGR_FORBID_DOWNCAST_TO_MULTIPOLYGON
3062 virtual const char *getGeometryName()
const override;
3070 OGRErr importFromWkt(
const char ** )
override;
3081 OGRErr *err =
nullptr)
const override;
3084 virtual int getDimension()
const override;
3087 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
3100 OGR_ALLOW_CAST_TO_THIS(MultiCurve)
3101 OGR_ALLOW_UPCAST_TO(GeometryCollection)
3102 OGR_FORBID_DOWNCAST_TO_MULTIPOINT
3103 OGR_FORBID_DOWNCAST_TO_MULTISURFACE
3104 OGR_FORBID_DOWNCAST_TO_MULTIPOLYGON
3163 virtual const char *getGeometryName()
const override;
3176 OGRErr *err =
nullptr)
const override;
3179 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
3192 OGR_ALLOW_CAST_TO_THIS(MultiLineString)
3193 OGR_ALLOW_UPCAST_TO(MultiCurve)
3194 OGR_FORBID_DOWNCAST_TO_MULTIPOINT
3195 OGR_FORBID_DOWNCAST_TO_MULTISURFACE
3196 OGR_FORBID_DOWNCAST_TO_MULTIPOLYGON
3221 static OGRErr createFromFgfInternal(
const unsigned char *pabyData,
3225 int *pnBytesConsumed,
3236 size_t& nBytesConsumedOut );
3246 CPL_WARN_DEPRECATED(
"Use createFromWkt(const char**, ...) instead")
3248 return createFromWkt(
const_cast<const char**
>(ppszInput), poSRS, ppoGeom);
3253 static OGRGeometry *createFromGML(
const char * );
3256 static OGRGeometry *createFromGeoJson(
const char *,
int = -1 );
3264 bool bOnlyInOrder =
true );
3271 const char*
const* papszOptions =
nullptr );
3277 int *pbResultValidGeometry,
3278 const char **papszOptions =
nullptr);
3279 static bool haveGEOS();
3282 class CPL_DLL TransformWithOptionsCache
3284 friend class OGRGeometryFactory;
3286 std::unique_ptr<Private> d;
3289 TransformWithOptionsCache();
3290 ~TransformWithOptionsCache();
3295 char** papszOptions,
3300 double dfPrimaryRadius,
double dfSecondaryAxis,
3302 double dfStartAngle,
double dfEndAngle,
3303 double dfMaxAngleStepSizeDegrees,
3304 const bool bUseMaxGap =
false );
3307 double x1,
double y1,
3308 double x2,
double y2,
3309 double& R,
double& cx,
double& cy,
3310 double& alpha0,
double& alpha1,
3313 double x0,
double y0,
double z0,
3314 double x1,
double y1,
double z1,
3315 double x2,
double y2,
double z2,
3317 double dfMaxAngleStepSizeDegrees,
3318 const char*
const * papszOptions =
nullptr );
3321 const char*
const * papszOptions =
nullptr);
3328typedef struct _OGRPreparedGeometry OGRPreparedGeometry;
3330struct CPL_DLL OGRPreparedGeometryUniquePtrDeleter
3332 void operator()(OGRPreparedGeometry*)
const;
The CPLJSONArray class holds JSON object from CPLJSONDocument.
Definition cpl_json.h:54
OGRGeometry visitor interface.
Definition ogr_geometry.h:232
virtual void visit(const OGRCurvePolygon *)=0
Visit OGRCurvePolygon.
virtual void visit(const OGRPolyhedralSurface *)=0
Visit OGRPolyhedralSurface.
virtual void visit(const OGRCompoundCurve *)=0
Visit OGRCompoundCurve.
virtual void visit(const OGRMultiLineString *)=0
Visit OGRMultiLineString.
virtual void visit(const OGRTriangulatedSurface *)=0
Visit OGRTriangulatedSurface.
virtual void visit(const OGRPolygon *)=0
Visit OGRPolygon.
virtual void visit(const OGRMultiPolygon *)=0
Visit OGRMultiPolygon.
virtual void visit(const OGRTriangle *)=0
Visit OGRTriangle.
virtual void visit(const OGRLineString *)=0
Visit OGRLineString.
virtual void visit(const OGRMultiPoint *)=0
Visit OGRMultiPoint.
virtual void visit(const OGRMultiCurve *)=0
Visit OGRMultiCurve.
virtual void visit(const OGRGeometryCollection *)=0
Visit OGRGeometryCollection.
virtual void visit(const OGRPoint *)=0
Visit OGRPoint.
virtual ~IOGRConstGeometryVisitor()=default
Destructor/.
virtual void visit(const OGRMultiSurface *)=0
Visit OGRMultiSurface.
virtual void visit(const OGRLinearRing *)=0
Visit OGRLinearRing.
virtual void visit(const OGRCircularString *)=0
Visit OGRCircularString.
OGRGeometry visitor interface.
Definition ogr_geometry.h:158
virtual void visit(OGRMultiSurface *)=0
Visit OGRMultiSurface.
virtual void visit(OGRLinearRing *)=0
Visit OGRLinearRing.
virtual void visit(OGRTriangle *)=0
Visit OGRTriangle.
virtual void visit(OGRCircularString *)=0
Visit OGRCircularString.
virtual void visit(OGRPolygon *)=0
Visit OGRPolygon.
virtual void visit(OGRLineString *)=0
Visit OGRLineString.
virtual void visit(OGRCompoundCurve *)=0
Visit OGRCompoundCurve.
virtual void visit(OGRTriangulatedSurface *)=0
Visit OGRTriangulatedSurface.
virtual void visit(OGRPoint *)=0
Visit OGRPoint.
virtual void visit(OGRCurvePolygon *)=0
Visit OGRCurvePolygon.
virtual void visit(OGRGeometryCollection *)=0
Visit OGRGeometryCollection.
virtual void visit(OGRPolyhedralSurface *)=0
Visit OGRPolyhedralSurface.
virtual void visit(OGRMultiPolygon *)=0
Visit OGRMultiPolygon.
virtual ~IOGRGeometryVisitor()=default
Destructor/.
virtual void visit(OGRMultiLineString *)=0
Visit OGRMultiLineString.
virtual void visit(OGRMultiPoint *)=0
Visit OGRMultiPoint.
virtual void visit(OGRMultiCurve *)=0
Visit OGRMultiCurve.
Concrete representation of a circular string, that is to say a curve made of one or several arc circl...
Definition ogr_geometry.h:1568
OGRCircularString & operator=(const OGRCircularString &other)
Assignment operator.
Definition ogrcircularstring.cpp:95
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:1647
virtual OGRErr importFromWkb(const unsigned char *, size_t, OGRwkbVariant, size_t &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition ogrcircularstring.cpp:148
virtual OGRCircularString * clone() const override
Make a copy of this object.
Definition ogrcircularstring.cpp:135
OGRCircularString()
Create an empty circular string.
virtual void Value(double, OGRPoint *) const override
Fetch point at given distance along curve.
Definition ogrcircularstring.cpp:577
virtual OGRBoolean IsValid() const override
Test if the geometry is valid.
Definition ogrcircularstring.cpp:717
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition ogrcircularstring.cpp:363
const OGRSimpleCurve * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:1645
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a circular string to WKT.
Definition ogrcircularstring.cpp:216
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition ogrcircularstring.cpp:108
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition ogrcircularstring.cpp:341
virtual double get_Length() const override
Returns the length of the curve.
Definition ogrcircularstring.cpp:237
OGRCircularString(const OGRCircularString &other)
Copy constructor.
virtual double get_Area() const override
Get the area of the (closed) curve.
Definition ogrcircularstring.cpp:877
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition ogrcircularstring.cpp:174
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition ogrcircularstring.cpp:125
OGRSimpleCurve * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:1643
OGRErr importFromWkt(const char **) override
deprecated
Definition ogrcircularstring.cpp:197
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return, possibly approximate, non-curve version of this geometry.
Definition ogrcircularstring.cpp:738
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a linestring from a curve geometry.
Definition ogrcircularstring.cpp:674
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:1648
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition ogrcircularstring.cpp:728
Utility class to store a collection of curves.
Definition ogr_geometry.h:1769
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:1901
const ChildType *const * end() const
Return end of curve iterator.
Definition ogr_geometry.h:1820
const ChildType *const * begin() const
Return begin of curve iterator.
Definition ogr_geometry.h:1818
OGRCompoundCurve & operator=(const OGRCompoundCurve &other)
Assignment operator.
Definition ogrcompoundcurve.cpp:87
OGRCompoundCurve(const OGRCompoundCurve &other)
Copy constructor.
OGRCurve ChildType
Type of child elements.
Definition ogr_geometry.h:1807
ChildType ** end()
Return end of curve iterator.
Definition ogr_geometry.h:1814
ChildType ** begin()
Return begin of curve iterator.
Definition ogr_geometry.h:1812
OGRCompoundCurve()
Create an empty compound curve.
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:1900
Concrete class representing curve polygons.
Definition ogr_geometry.h:1973
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2104
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition ogrcurvepolygon.cpp:814
OGRCurve ChildType
Type of child elements.
Definition ogr_geometry.h:2010
OGRCurvePolygon()
Create an empty curve polygon.
const ChildType *const * end() const
Return end of curve iterator.
Definition ogr_geometry.h:2023
const ChildType *const * begin() const
Return begin of curve iterator.
Definition ogr_geometry.h:2021
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition ogrcurvepolygon.cpp:88
ChildType ** begin()
Return begin of curve iterator.
Definition ogr_geometry.h:2015
ChildType ** end()
Return end of curve iterator.
Definition ogr_geometry.h:2017
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2105
OGRCurvePolygon(const OGRCurvePolygon &)
Copy constructor.
Abstract curve base class for OGRLineString, OGRCircularString and OGRCompoundCurve.
Definition ogr_geometry.h:1070
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
virtual int getDimension() const override
Get the dimension of this object.
Definition ogrcurve.cpp:72
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition ogrcurve.cpp:416
const OGRSimpleCurve * toSimpleCurve() const
Down-cast to OGRSimpleCurve*.
Definition ogr_geometry.h:1153
virtual double get_Length() const =0
Returns the length of the curve.
OGRPoint ChildType
Type of child elements.
Definition ogr_geometry.h:1112
OGRSimpleCurve * toSimpleCurve()
Down-cast to OGRSimpleCurve*.
Definition ogr_geometry.h:1148
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition ogrcurve.cpp:396
virtual int get_IsClosed() const
Return TRUE if curve is closed.
Definition ogrcurve.cpp:95
virtual double get_Area() const =0
Get the area of the (closed) curve.
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition ogrcurve.cpp:353
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
virtual OGRBoolean IsConvex() const
Returns if a (closed) curve forms a convex shape.
Definition ogrcurve.cpp:276
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const =0
Return a linestring from a curve geometry.
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition ogrcurve.cpp:375
virtual OGRCurve * clone() const override=0
Make a copy of this object.
OGRGeometry visitor default implementation.
Definition ogr_geometry.h:279
void visit(const OGRPoint *) override
Visit OGRPoint.
Definition ogr_geometry.h:284
OGRGeometry visitor default implementation.
Definition ogr_geometry.h:205
void visit(OGRPoint *) override
Visit OGRPoint.
Definition ogr_geometry.h:210
Simple container for a bounding region in 3D.
Definition ogr_core.h:199
Simple container for a bounding region (rectangle)
Definition ogr_core.h:58
A collection of 1 or more geometry objects.
Definition ogr_geometry.h:2341
ChildType ** end()
Return end of sub-geometry iterator.
Definition ogr_geometry.h:2376
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2458
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2459
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition ogrgeometrycollection.cpp:1180
const ChildType *const * begin() const
Return begin of sub-geometry iterator.
Definition ogr_geometry.h:2380
const ChildType *const * end() const
Return end of sub-geometry iterator.
Definition ogr_geometry.h:2382
ChildType ** begin()
Return begin of sub-geometry iterator.
Definition ogr_geometry.h:2374
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition ogrgeometrycollection.cpp:111
OGRGeometry * getGeometryRef(int)
Fetch geometry from container.
Definition ogrgeometrycollection.cpp:262
OGRGeometryCollection()
Create an empty geometry collection.
OGRGeometry ChildType
Type of child elements.
Definition ogr_geometry.h:2369
Create geometry objects from well known text/binary.
Definition ogr_geometry.h:3220
static OGRGeometry * transformWithOptions(const OGRGeometry *poSrcGeom, OGRCoordinateTransformation *poCT, char **papszOptions, const TransformWithOptionsCache &cache=TransformWithOptionsCache())
Transform a geometry.
Definition ogrgeometryfactory.cpp:3842
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Deprecated.
Definition ogr_geometry.h:3244
static OGRCurve * curveFromLineString(const OGRLineString *poLS, const char *const *papszOptions=nullptr)
Try to convert a linestring approximating curves into a curve.
Definition ogrgeometryfactory.cpp:5991
static OGRLineString * curveToLineString(double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, int bHasZ, double dfMaxAngleStepSizeDegrees, const char *const *papszOptions=nullptr)
Converts an arc circle into an approximate line string.
Definition ogrgeometryfactory.cpp:5200
static OGRGeometry * approximateArcAngles(double dfX, double dfY, double dfZ, double dfPrimaryRadius, double dfSecondaryAxis, double dfRotation, double dfStartAngle, double dfEndAngle, double dfMaxAngleStepSizeDegrees, const bool bUseMaxGap=false)
Stroke arc to linestring.
Definition ogrgeometryfactory.cpp:4149
static OGRErr createFromWkt(const char *, OGRSpatialReference *, OGRGeometry **)
Create a geometry object of the appropriate type from its well known text representation.
Definition ogrgeometryfactory.cpp:511
static int GetCurveParameters(double x0, double y0, double x1, double y1, double x2, double y2, double &R, double &cx, double &cy, double &alpha0, double &alpha1, double &alpha2)
Returns the parameter of an arc circle.
Definition ogrgeometryfactory.cpp:4940
static OGRErr createFromWkb(const void *, OGRSpatialReference *, OGRGeometry **, size_t=static_cast< size_t >(-1), OGRwkbVariant=wkbVariantOldOgc)
Create a geometry object of the appropriate type from its well known binary representation.
Definition ogrgeometryfactory.cpp:106
Abstract base class for all geometry classes.
Definition ogr_geometry.h:327
const OGRSurface * toSurface() const
Down-cast to OGRSurface*.
Definition ogr_geometry.h:683
static void freeGEOSContext(GEOSContextHandle_t hGEOSCtxt)
Destroy a GEOS context.
Definition ogrgeometry.cpp:3022
const OGRCurvePolygon * toCurvePolygon() const
Down-cast to OGRCurvePolygon*.
Definition ogr_geometry.h:725
virtual void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
const OGRMultiCurve * toMultiCurve() const
Down-cast to OGRMultiCurve*.
Definition ogr_geometry.h:795
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const
Return curve version of this geometry.
Definition ogrgeometry.cpp:3261
const OGRPolyhedralSurface * toPolyhedralSurface() const
Down-cast to OGRPolyhedralSurface*.
Definition ogr_geometry.h:823
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition ogrgeometry.cpp:504
const OGRMultiPoint * toMultiPoint() const
Down-cast to OGRMultiPoint*.
Definition ogr_geometry.h:753
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition ogrgeometry.cpp:3193
const OGRMultiPolygon * toMultiPolygon() const
Down-cast to OGRMultiPolygon*.
Definition ogr_geometry.h:781
virtual GEOSGeom exportToGEOS(GEOSContextHandle_t hGEOSCtxt) const
Returns a GEOSGeom object corresponding to the geometry.
Definition ogrgeometry.cpp:3063
OGRPolyhedralSurface * toPolyhedralSurface()
Down-cast to OGRPolyhedralSurface*.
Definition ogr_geometry.h:816
const OGRMultiSurface * toMultiSurface() const
Down-cast to OGRMultiSurface*.
Definition ogr_geometry.h:809
OGRPoint * toPoint()
Down-cast to OGRPoint*.
Definition ogr_geometry.h:578
virtual OGRGeometry * clone() const =0
Make a copy of this object.
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
bool operator!=(const OGRGeometry &other) const
Returns if two geometries are different.
Definition ogr_geometry.h:393
OGRTriangle * toTriangle()
Down-cast to OGRTriangle*.
Definition ogr_geometry.h:704
OGRLineString * toLineString()
Down-cast to OGRLineString*.
Definition ogr_geometry.h:620
int CoordinateDimension() const
Get the dimension of the coordinates in this object.
Definition ogrgeometry.cpp:900
const OGRLinearRing * toLinearRing() const
Down-cast to OGRLinearRing*.
Definition ogr_geometry.h:641
OGRGeometry * SimplifyPreserveTopology(double dTolerance) const
Simplify the geometry while preserving topology.
Definition ogrgeometry.cpp:5699
const OGRPoint * toPoint() const
Down-cast to OGRPoint*.
Definition ogr_geometry.h:585
virtual void swapXY()
Swap x and y coordinates.
Definition ogrgeometry.cpp:6001
virtual void empty()=0
Clear geometry information.
virtual OGRGeometry * Simplify(double dTolerance) const
Simplify the geometry.
Definition ogrgeometry.cpp:5620
virtual void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition ogrgeometry.cpp:434
virtual OGRBoolean Overlaps(const OGRGeometry *) const
Test for overlap.
Definition ogrgeometry.cpp:5250
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
virtual OGRGeometry * DelaunayTriangulation(double dfTolerance, int bOnlyEdges) const
Return a Delaunay triangulation of the vertices of the geometry.
Definition ogrgeometry.cpp:5786
virtual int getCoordinateDimension() const
Get the dimension of the coordinates in this object.
Definition ogrgeometry.cpp:881
OGRMultiLineString * toMultiLineString()
Down-cast to OGRMultiLineString*.
Definition ogr_geometry.h:760
OGRMultiSurface * toMultiSurface()
Down-cast to OGRMultiSurface*.
Definition ogr_geometry.h:802
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Convert a OGRGeometryH to a OGRGeometry*.
Definition ogr_geometry.h:571
virtual void flattenTo2D()=0
Convert geometry to strictly 2D.
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition ogrgeometry.cpp:1070
virtual void accept(IOGRConstGeometryVisitor *visitor) const =0
Accept a visitor.
const OGRGeometryCollection * toGeometryCollection() const
Down-cast to OGRGeometryCollection*.
Definition ogr_geometry.h:739
OGRSpatialReference * getSpatialReference(void) const
Returns spatial reference system for object.
Definition ogr_geometry.h:489
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition ogrgeometry.cpp:2145
const OGRMultiLineString * toMultiLineString() const
Down-cast to OGRMultiLineString*.
Definition ogr_geometry.h:767
virtual OGRGeometry * Difference(const OGRGeometry *) const
Compute difference.
Definition ogrgeometry.cpp:4583
virtual OGRGeometry * MakeValid(CSLConstList papszOptions=nullptr) const
Attempts to make an invalid geometry valid without losing vertices.
Definition ogrgeometry.cpp:3657
virtual double Distance(const OGRGeometry *) const
Compute distance between two geometries.
Definition ogrgeometry.cpp:3289
virtual OGRBoolean Equals(const OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition ogrgeometry.cpp:1024
virtual char * exportToJson() const
Convert a geometry into GeoJSON format.
Definition ogrgeometry.cpp:2955
virtual int getDimension() const =0
Get the dimension of this object.
virtual OGRGeometry * ConvexHull() const
Compute convex hull.
Definition ogrgeometry.cpp:3917
const OGRCircularString * toCircularString() const
Down-cast to OGRCircularString*.
Definition ogr_geometry.h:655
virtual void dumpReadable(FILE *, const char *=nullptr, char **papszOptions=nullptr) const
Dump geometry in well known text format to indicated output file.
Definition ogrgeometry.cpp:183
virtual OGRGeometry * Buffer(double dfDist, int nQuadSegs=30) const
Compute buffer of geometry.
Definition ogrgeometry.cpp:4159
OGRPolygon * toPolygon()
Down-cast to OGRPolygon*.
Definition ogr_geometry.h:690
bool operator==(const OGRGeometry &other) const
Returns if two geometries are equal.
Definition ogr_geometry.h:390
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition ogrgeometry.cpp:806
virtual OGRErr Centroid(OGRPoint *poPoint) const
Compute the geometry centroid.
Definition ogrgeometry.cpp:5366
OGRLinearRing * toLinearRing()
Down-cast to OGRLinearRing*.
Definition ogr_geometry.h:634
virtual OGRGeometry * UnionCascaded() const
Compute union using cascading.
Definition ogrgeometry.cpp:4496
OGRBoolean IsMeasured() const
Definition ogr_geometry.h:407
virtual OGRBoolean Within(const OGRGeometry *) const
Test for containment.
Definition ogrgeometry.cpp:5101
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition ogrgeometry.cpp:152
virtual OGRGeometry * Union(const OGRGeometry *) const
Compute union.
Definition ogrgeometry.cpp:4382
virtual OGRGeometry * Polygonize() const
Polygonizes a set of sparse edges.
Definition ogrgeometry.cpp:5891
virtual void accept(IOGRGeometryVisitor *visitor)=0
Accept a visitor.
virtual double Distance3D(const OGRGeometry *poOtherGeom) const
Returns the 3D distance between two geometries.
Definition ogrgeometry.cpp:3423
virtual OGRGeometry * Normalize() const
Attempts to bring geometry into normalized/canonical form.
Definition ogrgeometry.cpp:3834
OGRMultiCurve * toMultiCurve()
Down-cast to OGRMultiCurve*.
Definition ogr_geometry.h:788
const OGRCompoundCurve * toCompoundCurve() const
Down-cast to OGRCompoundCurve*.
Definition ogr_geometry.h:669
virtual OGRBoolean Disjoint(const OGRGeometry *) const
Test for disjointness.
Definition ogrgeometry.cpp:4845
virtual OGRGeometry * SymDifference(const OGRGeometry *) const
Compute symmetric difference.
Definition ogrgeometry.cpp:4705
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
OGRGeometryCollection * toGeometryCollection()
Down-cast to OGRGeometryCollection*.
Definition ogr_geometry.h:732
virtual char * exportToKML() const
Convert a geometry into KML format.
Definition ogrgeometry.cpp:2933
virtual OGRGeometry * Boundary() const
Compute boundary.
Definition ogrgeometry.cpp:4032
virtual char * exportToGML(const char *const *papszOptions=nullptr) const
Convert a geometry into GML format.
Definition ogrgeometry.cpp:2910
virtual OGRBoolean Touches(const OGRGeometry *) const
Test for touching.
Definition ogrgeometry.cpp:4919
OGRMultiPolygon * toMultiPolygon()
Down-cast to OGRMultiPolygon*.
Definition ogr_geometry.h:774
const OGRPolygon * toPolygon() const
Down-cast to OGRPolygon*.
Definition ogr_geometry.h:697
OGRCompoundCurve * toCompoundCurve()
Down-cast to OGRCompoundCurve*.
Definition ogr_geometry.h:662
OGRwkbGeometryType getIsoGeometryType() const
Get the geometry type that conforms with ISO SQL/MM Part3.
Definition ogrgeometry.cpp:774
OGRErr importFromWkt(char **ppszInput)
Deprecated.
Definition ogr_geometry.h:430
const OGRLineString * toLineString() const
Down-cast to OGRLineString*.
Definition ogr_geometry.h:627
OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const
Convert a geometry into well known text format.
Definition ogrgeometry.cpp:1829
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition ogrgeometry.cpp:1047
virtual size_t WkbSize() const =0
Returns size of related binary representation.
OGRCircularString * toCircularString()
Down-cast to OGRCircularString*.
Definition ogr_geometry.h:648
const OGRCurve * toCurve() const
Down-cast to OGRCurve*.
Definition ogr_geometry.h:599
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const
Return, possibly approximate, non-curve version of this geometry.
Definition ogrgeometry.cpp:3226
OGRCurvePolygon * toCurvePolygon()
Down-cast to OGRCurvePolygon*.
Definition ogr_geometry.h:718
const OGRSimpleCurve * toSimpleCurve() const
Down-cast to OGRSimpleCurve*.
Definition ogr_geometry.h:613
static GEOSContextHandle_t createGEOSContext()
Create a new GEOS context.
Definition ogrgeometry.cpp:3004
virtual OGRBoolean Crosses(const OGRGeometry *) const
Test for crossing.
Definition ogrgeometry.cpp:4993
OGRErr importFromWkb(const GByte *, size_t=static_cast< size_t >(-1), OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition ogrgeometry.cpp:1427
virtual OGRGeometry * Intersection(const OGRGeometry *) const
Compute intersection.
Definition ogrgeometry.cpp:4263
OGRErr transformTo(OGRSpatialReference *poSR)
Transform geometry to new spatial reference system.
Definition ogrgeometry.cpp:628
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Convert a OGRGeometry* to a OGRGeometryH.
Definition ogr_geometry.h:565
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition ogrgeometry.cpp:5175
OGRBoolean Is3D() const
Definition ogr_geometry.h:405
OGRMultiPoint * toMultiPoint()
Down-cast to OGRMultiPoint*.
Definition ogr_geometry.h:746
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
virtual void closeRings()
Force rings to be closed.
Definition ogrgeometry.cpp:5311
const OGRTriangulatedSurface * toTriangulatedSurface() const
Down-cast to OGRTriangulatedSurface*.
Definition ogr_geometry.h:837
const OGRTriangle * toTriangle() const
Down-cast to OGRTriangle*.
Definition ogr_geometry.h:711
OGRSurface * toSurface()
Down-cast to OGRSurface*.
Definition ogr_geometry.h:676
OGRSimpleCurve * toSimpleCurve()
Down-cast to OGRSimpleCurve*.
Definition ogr_geometry.h:606
OGRTriangulatedSurface * toTriangulatedSurface()
Down-cast to OGRTriangulatedSurface*.
Definition ogr_geometry.h:830
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const =0
Export a WKT geometry.
OGRCurve * toCurve()
Down-cast to OGRCurve*.
Definition ogr_geometry.h:592
virtual OGRBoolean IsSimple() const
Test if the geometry is simple.
Definition ogrgeometry.cpp:2258
Concrete representation of a multi-vertex line.
Definition ogr_geometry.h:1407
OGRSimpleCurve * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:1447
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:1452
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition ogrlinestring.cpp:2764
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:1451
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition ogrlinestring.cpp:2734
OGRLineString(const OGRLineString &other)
Copy constructor.
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a linestring from a curve geometry.
Definition ogrlinestring.cpp:2774
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition ogrlinestring.cpp:2747
OGRLineString()
Create an empty line string.
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const override
Return curve version of this geometry.
Definition ogrlinestring.cpp:2827
virtual double get_Area() const override
Get the area of the (closed) curve.
const OGRSimpleCurve * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:1449
static OGRLinearRing * CastToLinearRing(OGRLineString *poLS)
Cast to linear ring.
Definition ogrlinestring.cpp:2871
virtual OGRLineString * clone() const override
Make a copy of this object.
Definition ogrlinestring.cpp:2889
Concrete representation of a closed ring.
Definition ogr_geometry.h:1483
OGRLineString * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:1540
static OGRLineString * CastToLineString(OGRLinearRing *poLR)
Cast to line string.
Definition ogrlinearring.cpp:793
virtual OGRLinearRing * clone() const override
Make a copy of this object.
Definition ogrlinearring.cpp:415
virtual void reverseWindingOrder()
Reverse order of points.
Definition ogrlinearring.cpp:549
const OGRLineString * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:1542
virtual int isClockwise() const
Returns TRUE if the ring has clockwise winding (or less than 2 points)
Definition ogrlinearring.cpp:448
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:1545
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition ogrlinearring.cpp:128
OGRLinearRing(const OGRLinearRing &other)
Copy constructor.
OGRLinearRing & operator=(const OGRLinearRing &other)
Assignment operator.
Definition ogrlinearring.cpp:115
OGRLinearRing()
Constructor.
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition ogrlinearring.cpp:757
virtual void closeRings() override
Force rings to be closed.
Definition ogrlinearring.cpp:569
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:1544
OGRBoolean isPointOnRingBoundary(const OGRPoint *pt, int bTestEnvelope=TRUE) const
Returns whether the point is on the ring boundary.
Definition ogrlinearring.cpp:676
OGRBoolean isPointInRing(const OGRPoint *pt, int bTestEnvelope=TRUE) const
Returns whether the point is inside the ring.
Definition ogrlinearring.cpp:595
A collection of OGRCurve.
Definition ogr_geometry.h:3023
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:3051
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:3053
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:3096
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:3047
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:3093
const OGRCurve * getGeometryRef(int i) const
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:3059
OGRCurve * getGeometryRef(int i)
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:3057
OGRMultiCurve()
Create an empty multi curve collection.
OGRMultiCurve(const OGRMultiCurve &other)
Copy constructor.
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition ogrmulticurve.cpp:85
OGRCurve ChildType
Type of child elements.
Definition ogr_geometry.h:3040
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:3045
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:3091
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:145
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:3095
A collection of OGRLineString.
Definition ogr_geometry.h:3128
OGRMultiLineString & operator=(const OGRMultiLineString &other)
Assignment operator.
Definition ogrmultilinestring.cpp:86
OGRLineString ChildType
Type of child elements.
Definition ogr_geometry.h:3141
OGRLineString * getGeometryRef(int i)
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:3158
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:3183
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:3148
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition ogrmultilinestring.cpp:137
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:3154
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:3188
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:3152
OGRMultiLineString()
Create an empty multi line string collection.
const OGRLineString * getGeometryRef(int i) const
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:3160
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:3187
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:3146
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:3185
OGRMultiLineString(const OGRMultiLineString &other)
Copy constructor.
A collection of OGRPoint.
Definition ogr_geometry.h:2918
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2981
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2985
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2947
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2939
OGRMultiPoint()
Create an empty multi point collection.
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2986
OGRMultiPoint(const OGRMultiPoint &other)
Copy constructor.
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2945
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2983
OGRPoint ChildType
Type of child elements.
Definition ogr_geometry.h:2934
const OGRPoint * getGeometryRef(int i) const
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2953
OGRMultiPoint & operator=(const OGRMultiPoint &other)
Assignment operator.
Definition ogrmultipoint.cpp:90
OGRPoint * getGeometryRef(int i)
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2951
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2941
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition ogrmultipoint.cpp:151
A collection of non-overlapping OGRPolygon.
Definition ogr_geometry.h:2597
OGRPolygon ChildType
Type of child elements.
Definition ogr_geometry.h:2623
OGRMultiPolygon(const OGRMultiPolygon &other)
Copy constructor.
OGRPolygon * getGeometryRef(int i)
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2640
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2670
const OGRPolygon * getGeometryRef(int i) const
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2642
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2636
OGRMultiPolygon & operator=(const OGRMultiPolygon &other)
Assignment operator.
Definition ogrmultipolygon.cpp:83
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Returns whether a geometry of the specified geometry type can be a member of this collection.
Definition ogrmultipolygon.cpp:134
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2630
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2669
OGRMultiPolygon()
Create an empty multi polygon collection.
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2628
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2665
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2634
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2667
A collection of non-overlapping OGRSurface.
Definition ogr_geometry.h:2493
OGRMultiSurface()
Create an empty multi surface collection.
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2564
const OGRSurface * getGeometryRef(int i) const
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2553
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2511
OGRSurface ChildType
Type of child elements.
Definition ogr_geometry.h:2506
const OGRGeometryCollection * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2562
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2517
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2519
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:147
OGRMultiSurface(const OGRMultiSurface &other)
Copy constructor.
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition ogrmultisurface.cpp:86
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2513
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2565
OGRGeometryCollection * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2560
OGRSurface * getGeometryRef(int i)
See OGRGeometryCollection::getGeometryRef()
Definition ogr_geometry.h:2551
Interface for a point iterator.
Definition ogr_geometry.h:1052
virtual OGRBoolean getNextPoint(OGRPoint *p)=0
Returns the next point followed by the iterator.
static void destroy(OGRPointIterator *)
Destroys a point iterator.
Definition ogrcurve.cpp:448
Point class.
Definition ogr_geometry.h:936
OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition ogrpoint.cpp:396
double getM() const
Return m.
Definition ogr_geometry.h:997
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:1030
void setX(double xIn)
Set x.
Definition ogr_geometry.h:1004
OGRPoint & operator=(const OGRPoint &other)
Assignment operator.
Definition ogrpoint.cpp:185
OGRErr importFromWkt(const char **) override
deprecated
Definition ogrpoint.cpp:502
static OGRPoint * createXYM(double x, double y, double m)
Create a XYM point.
Definition ogrpoint.cpp:144
OGRPoint(const OGRPoint &other)
Copy constructor.
void setZ(double zIn)
Set z.
Definition ogr_geometry.h:1012
void setM(double mIn)
Set m.
Definition ogr_geometry.h:1017
virtual int getDimension() const override
Get the dimension of this object.
Definition ogrpoint.cpp:228
double getX() const
Return x.
Definition ogr_geometry.h:991
virtual void empty() override
Clear geometry information.
Definition ogrpoint.cpp:214
virtual OGRPoint * clone() const override
Make a copy of this object.
Definition ogrpoint.cpp:205
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:1031
OGRPoint()
Create an empty point.
Definition ogrpoint.cpp:66
size_t WkbSize() const override
Returns size of related binary representation.
Definition ogrpoint.cpp:296
void setY(double yIn)
Set y.
Definition ogr_geometry.h:1008
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition ogr_geometry.h:986
double getZ() const
Return z.
Definition ogr_geometry.h:995
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition ogrpoint.cpp:613
double getY() const
Return y.
Definition ogr_geometry.h:993
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a point to WKT.
Definition ogrpoint.cpp:587
OGRErr importFromWkb(const unsigned char *, size_t, OGRwkbVariant, size_t &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition ogrpoint.cpp:314
Concrete class representing polygons.
Definition ogr_geometry.h:2139
OGRLinearRing ChildType
Type of child elements.
Definition ogr_geometry.h:2171
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2176
const OGRCurvePolygon * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2243
OGRPolygon()
Create an empty polygon.
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2178
OGRPolygon(const OGRPolygon &other)
Copy constructor.
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2182
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2246
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition ogrpolygon.cpp:92
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2184
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2245
OGRCurvePolygon * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2241
PolyhedralSurface class.
Definition ogr_geometry.h:2701
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2734
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2740
OGRPolygon * getGeometryRef(int i)
Fetch geometry from container.
Definition ogrpolyhedralsurface.cpp:820
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition ogrpolyhedralsurface.cpp:82
OGRPolyhedralSurface(const OGRPolyhedralSurface &poGeom)
Copy constructor.
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2738
~OGRPolyhedralSurface() override
Destructor.
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2732
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2802
OGRPolygon ChildType
Type of child elements.
Definition ogr_geometry.h:2727
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2803
Simple container for a position.
Definition ogr_geometry.h:104
OGRRawPoint(double xIn, double yIn)
Constructor.
Definition ogr_geometry.h:110
double x
x
Definition ogr_geometry.h:113
double y
y
Definition ogr_geometry.h:115
OGRRawPoint()
Constructor.
Definition ogr_geometry.h:107
Abstract curve base class for OGRLineString and OGRCircularString.
Definition ogr_geometry.h:1187
double getY(int i) const
Get Y at vertex.
Definition ogr_geometry.h:1324
double getX(int i) const
Get X at vertex.
Definition ogr_geometry.h:1323
virtual size_t WkbSize() const override
Returns size of related binary representation.
Definition ogrlinestring.cpp:189
virtual double get_LinearArea() const
Compute area of ring / closed linestring.
Definition ogrlinestring.cpp:2796
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition ogrlinestring.cpp:1633
virtual double Project(const OGRPoint *) const
Project point on linestring.
Definition ogrlinestring.cpp:2022
virtual OGRLineString * getSubLine(double, double, int) const
Get the portion of linestring.
Definition ogrlinestring.cpp:2076
OGRErr importFromWkt(const char **) override
deprecated
Definition ogrlinestring.cpp:1732
virtual void Value(double, OGRPoint *) const override
Fetch point at given distance along curve.
Definition ogrlinestring.cpp:1949
OGRPoint ChildType
Type of child elements.
Definition ogr_geometry.h:1253
virtual void EndPoint(OGRPoint *) const override
Return the curve end point.
Definition ogrlinestring.cpp:1937
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition ogrlinestring.cpp:116
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition ogrlinestring.cpp:2250
virtual OGRErr importFromWkb(const unsigned char *, size_t, OGRwkbVariant, size_t &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition ogrlinestring.cpp:1516
virtual double get_Length() const override
Returns the length of the curve.
Definition ogrlinestring.cpp:1907
virtual void StartPoint(OGRPoint *) const override
Return the curve start point.
Definition ogrlinestring.cpp:1927
virtual int getNumPoints() const override
Fetch vertex count.
Definition ogr_geometry.h:1321
virtual std::string exportToWkt(const OGRWktOptions &opts=OGRWktOptions(), OGRErr *err=nullptr) const override
Export a simple curve to WKT.
Definition ogrlinestring.cpp:1851
virtual void empty() override
Clear geometry information.
Definition ogrlinestring.cpp:144
OGRSimpleCurve()
Constructor.
Definition ogrlinestring.cpp:60
virtual OGRSimpleCurve * clone() const override=0
Make a copy of this object.
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition ogrlinestring.cpp:2465
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition ogr_spatialref.h:158
Abstract base class for 2 dimensional objects like polygons or curve polygons.
Definition ogr_geometry.h:1931
virtual double get_Area() const =0
Get the area of the surface object.
virtual OGRSurface * clone() const override=0
Make a copy of this object.
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition ogr_geometry.h:1940
Triangle class.
Definition ogr_geometry.h:2277
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition ogrtriangle.cpp:170
const OGRPolygon * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2316
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2318
virtual OGRErr importFromWkb(const unsigned char *, size_t, OGRwkbVariant, size_t &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition ogrtriangle.cpp:198
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2319
OGRTriangle()
Constructor.
~OGRTriangle() override
Destructor.
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) override
Add a ring to a polygon.
Definition ogrtriangle.cpp:256
OGRPolygon * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2314
OGRTriangle(const OGRTriangle &other)
Copy constructor.
virtual OGRTriangle * clone() const override
Make a copy of this object.
Definition ogrtriangle.cpp:151
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition ogrtriangle.cpp:138
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition ogrtriangle.cpp:161
TriangulatedSurface class.
Definition ogr_geometry.h:2834
const OGRTriangle * getGeometryRef(int i) const
See OGRPolyhedralSurface::getGeometryRef()
Definition ogr_geometry.h:2877
~OGRTriangulatedSurface()
Destructor.
OGRTriangle * getGeometryRef(int i)
See OGRPolyhedralSurface::getGeometryRef()
Definition ogr_geometry.h:2875
const ChildType *const * end() const
Return end of iterator.
Definition ogr_geometry.h:2867
const ChildType *const * begin() const
Return begin of iterator.
Definition ogr_geometry.h:2865
OGRPolyhedralSurface * toUpperClass()
Return pointer of this in upper class.
Definition ogr_geometry.h:2883
virtual void accept(IOGRGeometryVisitor *visitor) override
Accept a visitor.
Definition ogr_geometry.h:2887
const OGRPolyhedralSurface * toUpperClass() const
Return pointer of this in upper class.
Definition ogr_geometry.h:2885
OGRTriangle ChildType
Type of child elements.
Definition ogr_geometry.h:2854
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Accept a visitor.
Definition ogr_geometry.h:2888
ChildType ** begin()
Return begin of iterator.
Definition ogr_geometry.h:2859
ChildType ** end()
Return end of iterator.
Definition ogr_geometry.h:2861
OGRTriangulatedSurface()
Constructor.
Various convenience functions for CPL.
To down_cast(From *f)
Use cpl::down_cast<Derived*>(pointer_to_base) as equivalent of static_cast<Derived*>(pointer_to_base)...
Definition cpl_conv.h:382
Interface for read and write JSON documents.
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1169
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition cpl_port.h:894
unsigned char GByte
Unsigned byte type.
Definition cpl_port.h:215
void * OGRGeometryH
Opaque type for a geometry.
Definition ogr_api.h:65
Core portability services for cross-platform OGR code.
int OGRBoolean
Type for a OGR boolean.
Definition ogr_core.h:357
OGRwkbByteOrder
Enumeration to describe byte order.
Definition ogr_core.h:551
OGRwkbVariant
Output variants of WKB we support.
Definition ogr_core.h:485
@ wkbVariantOldOgc
Old-style 99-402 extended dimension (Z) WKB types.
Definition ogr_core.h:486
OGRwkbGeometryType
List of well known binary geometry types.
Definition ogr_core.h:369
int OGRErr
Type for a OGR error.
Definition ogr_core.h:341
OGRWktFormat
WKT Output formatting options.
Definition ogr_geometry.h:62
@ Default
Format as F when abs(value) < 1, otherwise as G.
Definition ogr_geometry.h:65
@ F
F-type formatting.
Definition ogr_geometry.h:63
@ G
G-type formatting.
Definition ogr_geometry.h:64
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Unique pointer type for OGRPreparedGeometry.
Definition ogr_geometry.h:3339
struct GEOSContextHandle_HS * GEOSContextHandle_t
GEOS context handle type.
Definition ogr_geometry.h:121
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Map OGCgeometry format type to corresponding OGR constants.
Definition ogrgeometry.cpp:2392
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Map OGR geometry format constants to corresponding OGC geometry type.
Definition ogrgeometry.cpp:2465
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Unique pointer type for OGRGeometry.
Definition ogr_geometry.h:852
struct GEOSGeom_t * GEOSGeom
GEOS geometry type.
Definition ogr_geometry.h:119
void sfcgal_geometry_t
SFCGAL geometry type.
Definition ogr_geometry.h:123
Coordinate systems services.
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition ogrsf_frmts.h:287
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition ogrsf_frmts.h:292
Options for formatting WKT output.
Definition ogr_geometry.h:70
OGRwkbVariant variant
Type of WKT output to produce.
Definition ogr_geometry.h:73
OGRWktOptions()
Constructor.
Definition ogr_geometry.h:82
OGRWktOptions(const OGRWktOptions &)=default
Copy constructor.
bool round
Whether GDAL-special rounding should be applied.
Definition ogr_geometry.h:77
int precision
Precision of output. Interpretation depends on format.
Definition ogr_geometry.h:75
OGRWktFormat format
Formatting type.
Definition ogr_geometry.h:79