32 #ifndef OGR_GEOMETRY_H_INCLUDED 33 #define OGR_GEOMETRY_H_INCLUDED 49 #ifndef DEFINEH_OGRGeometryH 50 #define DEFINEH_OGRGeometryH 198 virtual void visit(
const OGRPoint*) = 0;
293 friend class OGRCurveCollection;
295 unsigned int flags = 0;
297 OGRErr importPreambleFromWkt(
const char ** ppszInput,
298 int* pbHasZ,
int* pbHasM,
300 OGRErr importCurveCollectionFromWkt(
301 const char ** ppszInput,
302 int bAllowEmptyComponent,
303 int bAllowLineString,
305 int bAllowCompoundCurve,
308 OGRErr importPreambleFromWkb(
const unsigned char * pabyData,
312 OGRErr importPreambleOfCollectionFromWkb(
313 const unsigned char * pabyData,
323 void HomogenizeDimensionalityWith(
OGRGeometry* poOtherGeom );
337 static const unsigned int OGR_G_NOT_EMPTY_POINT = 0x1;
338 static const unsigned int OGR_G_3D = 0x2;
339 static const unsigned int OGR_G_MEASURED = 0x4;
355 virtual int getDimension()
const = 0;
356 virtual int getCoordinateDimension()
const;
357 int CoordinateDimension()
const;
367 virtual void empty() = 0;
369 virtual
void getEnvelope( OGREnvelope * psEnvelope ) const = 0;
370 virtual
void getEnvelope( OGREnvelope3D * psEnvelope ) const = 0;
373 virtual
int WkbSize() const = 0;
376 virtual
OGRErr importFromWkb( const
unsigned char *,
379 int& nBytesConsumedOut ) = 0;
382 virtual
OGRErr importFromWkt( const
char ** ppszInput ) = 0;
387 OGRErr importFromWkt(
char ** ppszInput ) CPL_WARN_DEPRECATED("Use importFromWkt(const
char**) instead")
389 return importFromWkt( const_cast<const char**>(ppszInput) );
392 virtual OGRErr exportToWkt(
char ** ppszDstText,
398 virtual const char *getGeometryName()
const = 0;
399 virtual void dumpReadable( FILE *,
const char * =
nullptr 400 ,
char** papszOptions =
nullptr )
const;
401 virtual void flattenTo2D() = 0;
402 virtual char * exportToGML(
const char*
const * papszOptions =
nullptr )
const;
403 virtual char * exportToKML()
const;
404 virtual char * exportToJson()
const;
416 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
420 double dfMaxAngleStepSizeDegrees = 0,
428 virtual
void closeRings();
430 virtual
void setCoordinateDimension(
int nDimension );
432 virtual
void setMeasured(
OGRBoolean bIsMeasured );
440 virtual void segmentize(
double dfMaxLength);
456 virtual
double Distance( const
OGRGeometry * ) const ;
458 virtual
OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
472 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
479 virtual
double Distance3D( const
OGRGeometry *poOtherGeom ) const;
484 const CPL_WARN_DEPRECATED("Non standard method. "
485 "Use Intersects() instead");
487 const CPL_WARN_DEPRECATED("Non standard method. "
488 "Use Equals() instead");
490 const CPL_WARN_DEPRECATED("Non standard method. "
491 "Use SymDifference() instead");
493 const CPL_WARN_DEPRECATED("Non standard method. "
494 "Use Boundary() instead");
499 static
int bGenerate_DB2_V72_BYTE_ORDER;
502 virtual
void swapXY();
525 {
return cpl::down_cast<
OGRPoint*>(
this); }
532 {
return cpl::down_cast<
const OGRPoint*>(
this); }
539 {
return cpl::down_cast<
OGRCurve*>(
this); }
546 {
return cpl::down_cast<
const OGRCurve*>(
this); }
630 {
return cpl::down_cast<
const OGRSurface*>(
this); }
644 {
return cpl::down_cast<
const OGRPolygon*>(
this); }
658 {
return cpl::down_cast<
const OGRTriangle*>(
this); }
789 struct CPL_DLL OGRGeometryUniquePtrDeleter
820 OGRPoint(
double x,
double y,
double z );
821 OGRPoint(
double x,
double y,
double z,
double m );
832 int& nBytesConsumedOut )
override;
845 virtual void empty()
override;
846 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
847 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
849 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
853 double getX()
const {
return x; }
855 double getY()
const {
return y; }
857 double getZ()
const {
return z; }
859 double getM()
const {
return m; }
866 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
870 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
875 { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
880 { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
895 virtual void swapXY()
override;
933 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
934 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
945 class CPL_DLL ConstIterator
948 std::unique_ptr<Private> m_poPrivate;
950 ConstIterator(
const OGRCurve* poSelf,
bool bStart);
951 ConstIterator(ConstIterator&& oOther) noexcept;
954 ConstIterator& operator++();
955 bool operator!=(
const ConstIterator& it)
const;
979 ConstIterator
begin()
const;
981 ConstIterator
end()
const;
984 virtual double get_Length()
const = 0;
985 virtual void StartPoint(
OGRPoint * )
const = 0;
986 virtual void EndPoint(
OGRPoint * )
const = 0;
987 virtual int get_IsClosed()
const;
988 virtual void Value(
double,
OGRPoint * )
const = 0;
989 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
990 const char*
const* papszOptions =
nullptr)
992 virtual int getDimension()
const override;
995 virtual int getNumPoints()
const = 0;
998 virtual double get_Area()
const = 0;
1017 inline OGRCurve::ConstIterator
begin(
const OGRCurve* poCurve) {
return poCurve->begin(); }
1019 inline OGRCurve::ConstIterator
end(
const OGRCurve* poCurve) {
return poCurve->end(); }
1051 OGRErr importFromWKTListOnly(
const char ** ppszInput,
int bHasZ,
int bHasM,
1058 virtual double get_LinearArea()
const;
1064 class CPL_DLL Iterator
1067 std::unique_ptr<Private> m_poPrivate;
1071 Iterator(Iterator&& oOther) noexcept;
1074 Iterator& operator++();
1075 bool operator!=(
const Iterator& it)
const;
1081 class CPL_DLL ConstIterator
1084 std::unique_ptr<Private> m_poPrivate;
1087 ConstIterator(ConstIterator&& oOther) noexcept;
1090 ConstIterator& operator++();
1091 bool operator!=(
const ConstIterator& it)
const;
1124 ConstIterator
begin()
const;
1126 ConstIterator
end()
const;
1129 virtual int WkbSize()
const override;
1130 virtual OGRErr importFromWkb(
const unsigned char *,
1133 int& nBytesConsumedOut )
override;
1138 OGRErr importFromWkt(
const char ** )
override;
1139 virtual OGRErr exportToWkt(
char ** ppszDstText,
1145 virtual void empty()
override;
1146 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1147 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1151 virtual double get_Length()
const override;
1152 virtual void StartPoint(
OGRPoint * )
const override;
1153 virtual void EndPoint(
OGRPoint * )
const override;
1154 virtual void Value(
double,
OGRPoint * )
const override;
1155 virtual double Project(
const OGRPoint * )
const;
1156 virtual OGRLineString* getSubLine(
double,
double,
int )
const;
1160 void getPoint(
int,
OGRPoint * )
const;
1161 double getX(
int i )
const {
return paoPoints[i].
x; }
1162 double getY(
int i )
const {
return paoPoints[i].
y; }
1163 double getZ(
int i )
const;
1164 double getM(
int i )
const;
1170 virtual void setCoordinateDimension(
int nDimension )
override;
1171 virtual void set3D(
OGRBoolean bIs3D )
override;
1172 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1173 void setNumPoints(
int nNewPointCount,
1174 int bZeroizeNewContent = TRUE );
1176 void setPoint(
int,
double,
double );
1177 void setZ(
int,
double );
1178 void setM(
int,
double );
1179 void setPoint(
int,
double,
double,
double );
1180 void setPointM(
int,
double,
double,
double );
1181 void setPoint(
int,
double,
double,
double,
double );
1182 void setPoints(
int,
const OGRRawPoint *,
const double * =
nullptr );
1183 void setPointsM(
int,
const OGRRawPoint *,
const double * );
1184 void setPoints(
int,
const OGRRawPoint *,
const double *,
const double * );
1185 void setPoints(
int,
const double * padfX,
const double * padfY,
1186 const double *padfZIn =
nullptr );
1187 void setPointsM(
int,
const double * padfX,
const double * padfY,
1188 const double *padfMIn =
nullptr );
1189 void setPoints(
int,
const double * padfX,
const double * padfY,
1190 const double *padfZIn,
const double *padfMIn );
1192 void addPoint(
double,
double );
1193 void addPoint(
double,
double,
double );
1194 void addPointM(
double,
double,
double );
1195 void addPoint(
double,
double,
double,
double );
1197 void getPoints(
OGRRawPoint *,
double * =
nullptr )
const;
1198 void getPoints(
void* pabyX,
int nXStride,
1199 void* pabyY,
int nYStride,
1200 void* pabyZ =
nullptr,
int nZStride = 0 )
const;
1201 void getPoints(
void* pabyX,
int nXStride,
1202 void* pabyY,
int nYStride,
1203 void* pabyZ,
int nZStride,
1204 void* pabyM,
int nMStride )
const;
1207 int nStartVertex = 0,
int nEndVertex = -1 );
1208 void reversePoints(
void );
1213 virtual void flattenTo2D()
override;
1214 virtual void segmentize(
double dfMaxLength)
override;
1216 virtual void swapXY()
override;
1221 inline OGRSimpleCurve::Iterator
begin(
OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1223 inline OGRSimpleCurve::Iterator
end(
OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1226 inline OGRSimpleCurve::ConstIterator
begin(
const OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1228 inline OGRSimpleCurve::ConstIterator
end(
const OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1253 virtual OGRCurveCasterToLineString GetCasterToLineString()
1255 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1271 const char*
const* papszOptions =
nullptr )
1274 const char*
const* papszOptions =
nullptr )
const override;
1275 virtual double get_Area()
const override;
1324 virtual int _WkbSize(
int _flags )
const;
1326 const unsigned char *,
int,
1327 int& nBytesConsumedOut );
1329 unsigned char * )
const;
1331 virtual OGRCurveCasterToLineString GetCasterToLineString()
1333 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1350 virtual int isClockwise()
const;
1351 virtual void reverseWindingOrder();
1354 int bTestEnvelope = TRUE )
const;
1356 int bTestEnvelope = TRUE )
const;
1370 virtual int WkbSize()
const override;
1374 int& nBytesConsumedOut )
override;
1399 void ExtendEnvelopeWithCircular( OGREnvelope * psEnvelope )
const;
1401 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
1405 virtual OGRCurveCasterToLineString GetCasterToLineString()
1407 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1425 int& nBytesConsumedOut )
override;
1437 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1438 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1443 const char*
const* papszOptions =
nullptr )
1446 virtual double get_Area()
const override;
1451 virtual void segmentize(
double dfMaxLength )
override;
1455 double dfMaxAngleStepSizeDegrees = 0,
1456 const char*
const* papszOptions =
nullptr)
const override;
1481 class CPL_DLL OGRCurveCollection
1490 int nCurveCount = 0;
1494 OGRCurveCollection();
1495 OGRCurveCollection(
const OGRCurveCollection& other);
1496 ~OGRCurveCollection();
1498 OGRCurveCollection&
operator=(
const OGRCurveCollection& other);
1508 OGRCurve**
end() {
return papoCurves + nCurveCount; }
1514 const OGRCurve*
const*
end()
const {
return papoCurves + nCurveCount; }
1518 void getEnvelope( OGREnvelope * psEnvelope )
const;
1519 void getEnvelope( OGREnvelope3D * psEnvelope )
const;
1525 const unsigned char * pabyData,
1529 int nMinSubGeomSize,
1531 OGRErr importBodyFromWkb(
1533 const unsigned char * pabyData,
1535 int bAcceptCompoundCurve,
1539 int& nBytesConsumedOut );
1541 char ** ppszDstText )
const;
1547 int nNewDimension );
1551 int getNumCurves()
const;
1553 const OGRCurve *getCurve(
int )
const;
1556 OGRErr removeCurve(
int iIndex,
bool bDelete =
true );
1584 OGRCurveCollection oCC{};
1587 double dfToleranceEps,
1593 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
1594 const char*
const* papszOptions,
1595 int bIsLinearRing )
const;
1606 virtual OGRCurveCasterToLineString GetCasterToLineString()
1608 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1636 virtual int WkbSize()
const override;
1640 int& nBytesConsumedOut )
override;
1652 virtual void empty()
override;
1653 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1654 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1663 const char*
const* papszOptions =
nullptr )
1668 virtual double get_Area()
const override;
1674 int getNumCurves()
const;
1676 const OGRCurve *getCurve(
int )
const;
1686 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1695 virtual void segmentize(
double dfMaxLength)
override;
1699 double dfMaxAngleStepSizeDegrees = 0,
1700 const char*
const* papszOptions =
nullptr)
const override;
1704 virtual void swapXY()
override;
1732 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1733 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1737 virtual double get_Area()
const = 0;
1739 {
return PointOnSurfaceInternal(poPoint); }
1770 virtual int checkRing(
OGRCurve * poNewRing )
const;
1782 OGRCurveCollection oCC{};
1784 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1786 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1819 virtual void empty()
override;
1823 virtual void segmentize(
double dfMaxLength )
override;
1827 double dfMaxAngleStepSizeDegrees = 0,
1828 const char*
const* papszOptions =
nullptr )
const override;
1831 virtual double get_Area()
const override;
1834 virtual int WkbSize()
const override;
1838 int& nBytesConsumedOut )
override;
1850 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1851 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1855 double dfMaxAngleStepSizeDegrees = 0,
1856 const char*
const* papszOptions =
nullptr )
const;
1885 virtual void swapXY()
override;
1923 virtual int checkRing(
OGRCurve * poNewRing )
const override;
1924 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
1925 int bHasZ,
int bHasM,
1932 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1934 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1967 const char*
const* papszOptions =
nullptr )
const override;
1969 double dfMaxAngleStepSizeDegrees = 0,
1970 const char*
const* papszOptions =
nullptr)
const override;
1973 virtual int WkbSize()
const override;
1977 int& nBytesConsumedOut )
override;
1990 double dfMaxAngleStepSizeDegrees = 0,
1991 const char*
const* papszOptions =
nullptr )
const override;
2041 bool quickValidityCheck()
const;
2045 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const override;
2046 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
2047 int bHasZ,
int bHasM,
2050 double*& padfZ )
override;
2067 int& nBytesConsumedOut )
override;
2098 OGRErr importFromWkbInternal(
const unsigned char * pabyData,
2102 OGRErr importFromWktInternal(
const char **ppszInput,
int nRecLevel );
2109 OGRErr exportToWktInternal(
char ** ppszDstText,
2111 const char* pszSkipPrefix )
const;
2145 virtual void empty()
override;
2149 virtual void segmentize(
double dfMaxLength)
override;
2153 const char*
const* papszOptions =
nullptr )
const override;
2155 double dfMaxAngleStepSizeDegrees = 0,
2156 const char*
const* papszOptions =
nullptr )
const override;
2159 virtual int WkbSize()
const override;
2163 int& nBytesConsumedOut )
override;
2174 virtual double get_Length()
const;
2175 virtual double get_Area()
const;
2179 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
2180 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
2183 int getNumGeometries()
const;
2196 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2202 virtual void swapXY()
override;
2322 OGRErr _addGeometryWithExpectedSubGeometryType(
2325 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
2403 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2405 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2408 virtual const char* getSubGeometryName()
const;
2411 const char* pszSkipPrefix )
const;
2413 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2441 virtual int WkbSize()
const override;
2447 int& nBytesConsumedOut )
override;
2460 virtual void empty()
override;
2463 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
2464 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
2469 virtual double get_Area()
const override;
2485 virtual void swapXY()
override;
2522 virtual const char* getSubGeometryName()
const override;
2525 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2594 OGRErr importFromWkt_Bracketed(
const char **,
int bHasM,
int bHasZ );
2820 static OGRErr createFromFgfInternal(
const unsigned char *pabyData,
2824 int *pnBytesConsumed,
2830 static OGRErr createFromWkb(
const void * pabyData,
2835 int& nBytesConsumedOut );
2845 CPL_WARN_DEPRECATED(
"Use createFromWkt(const char**, ...) instead")
2847 return createFromWkt( const_cast<const char**>(ppszInput), poSRS, ppoGeom);
2852 static OGRGeometry *createFromGML(
const char * );
2855 static OGRGeometry *createFromGeoJson(
const char *);
2863 bool bOnlyInOrder =
true );
2870 const char*
const* papszOptions =
nullptr );
2874 int *pbResultValidGeometry,
2875 const char **papszOptions =
nullptr);
2876 static bool haveGEOS();
2883 std::unique_ptr<Private> d;
2892 char** papszOptions,
2896 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
2897 double dfPrimaryRadius,
double dfSecondaryAxis,
2899 double dfStartAngle,
double dfEndAngle,
2900 double dfMaxAngleStepSizeDegrees );
2902 static int GetCurveParmeters(
double x0,
double y0,
2903 double x1,
double y1,
2904 double x2,
double y2,
2905 double& R,
double& cx,
double& cy,
2906 double& alpha0,
double& alpha1,
2909 double x0,
double y0,
double z0,
2910 double x1,
double y1,
double z1,
2911 double x2,
double y2,
double z2,
2913 double dfMaxAngleStepSizeDegrees,
2914 const char*
const * papszOptions =
nullptr );
2915 static OGRCurve* curveFromLineString(
2917 const char*
const * papszOptions =
nullptr);
2934 struct CPL_DLL OGRPreparedGeometryUniquePtrDeleter
const OGRPolygon * toUpperClass() const
Definition: ogr_geometry.h:2075
OGRMultiPoint * toMultiPoint()
Definition: ogr_geometry.h:692
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogr_geometry.h:1738
const ChildType *const * end() const
Definition: ogr_geometry.h:1959
OGRPoint ChildType
Definition: ogr_geometry.h:1103
~OGRPolyhedralSurface() override
Destructor.
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:5045
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2637
ChildType ** begin()
Definition: ogr_geometry.h:2613
const ChildType *const * begin() const
Definition: ogr_geometry.h:2698
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1002
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrlinestring.cpp:1870
const OGRPolyhedralSurface * toPolyhedralSurface() const
Definition: ogr_geometry.h:769
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2047
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrcurvepolygon.cpp:619
OGRMultiLineString * toMultiLineString()
Definition: ogr_geometry.h:706
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1025
virtual OGRBoolean Within(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4835
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1048
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2489
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrpolygon.cpp:104
double y
Definition: ogr_geometry.h:75
OGRCurve ChildType
Definition: ogr_geometry.h:1800
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const =0
Return a linestring from a curve geometry.
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:621
Definition: ogr_geometry.h:1242
OGRPoint ChildType
Definition: ogr_geometry.h:2608
OGRCompoundCurve * toCompoundCurve()
Definition: ogr_geometry.h:608
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Definition: ogrgeometrycollection.cpp:1281
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Definition: ogr_geometry.h:511
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1286
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1883
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5735
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2414
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:853
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1287
OGRCurve * toCurve()
Definition: ogr_geometry.h:538
const OGRPolygon * toPolygon() const
Definition: ogr_geometry.h:643
const ChildType *const * end() const
Definition: ogr_geometry.h:2260
Definition: ogr_geometry.h:2818
OGRMultiPolygon * toMultiPolygon()
Definition: ogr_geometry.h:720
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmulticurve.cpp:98
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1365
double x
Definition: ogr_geometry.h:73
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrlinestring.cpp:1653
ChildType ** begin()
Definition: ogr_geometry.h:2767
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
const ChildType *const * begin() const
Definition: ogr_geometry.h:2773
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:658
ChildType ** end()
Definition: ogr_geometry.h:2769
virtual void set3D(OGRBoolean bIs3D) override
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:694
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1463
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3157
const OGRLinearRing * toLinearRing() const
Definition: ogr_geometry.h:587
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2488
OGRMultiSurface * toMultiSurface()
Definition: ogr_geometry.h:748
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition: ogrmulticurve.cpp:85
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Definition: ogr_geometry.h:517
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:688
ChildType ** end()
Definition: ogr_geometry.h:1807
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2286
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:307
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrgeometry.cpp:3089
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:3122
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2369
const ChildType *const * begin() const
Definition: ogr_geometry.h:1957
int OGRBoolean
Definition: ogr_core.h:306
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:201
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:594
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:829
const OGRCircularString * toCircularString() const
Definition: ogr_geometry.h:601
OGRErr removeRing(int iIndex, bool bDelete=true)
Remove a geometry from the container.
Definition: ogrcurvepolygon.cpp:339
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:830
unsigned char GByte
Definition: cpl_port.h:215
OGRTriangulatedSurface * toTriangulatedSurface()
Definition: ogr_geometry.h:776
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1464
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:464
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1292
OGRRawPoint()
Definition: ogr_geometry.h:67
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
OGRSurface ChildType
Definition: ogr_geometry.h:2247
const OGRLineString * toLineString() const
Definition: ogr_geometry.h:573
ChildType ** begin()
Definition: ogr_geometry.h:1951
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrcurvepolygon.cpp:708
Definition: ogr_geometry.h:2312
const OGRCompoundCurve * toCompoundCurve() const
Definition: ogr_geometry.h:615
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant eWkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrcurvepolygon.cpp:539
OGRPoint * toPoint()
Definition: ogr_geometry.h:524
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:726
int OGRHasPreparedGeometrySupport()
Definition: ogrgeometry.cpp:5783
const ChildType *const * begin() const
Definition: ogr_geometry.h:2619
const ChildType *const * end() const
Definition: ogr_geometry.h:1633
OGRwkbByteOrder
Definition: ogr_core.h:489
Definition: ogr_geometry.h:1396
OGRCurve ChildType
Definition: ogr_geometry.h:2687
virtual void flattenTo2D()=0
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogr_geometry.h:926
Definition: ogr_geometry.h:2096
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2723
OGRLineString * toUpperClass()
Definition: ogr_geometry.h:1360
Definition: ogr_geometry.h:1314
void setM(double mIn)
Definition: ogr_geometry.h:879
ChildType ** begin()
Definition: ogr_geometry.h:1805
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:137
virtual double get_Length() const override
Returns the length of the curve.
Definition: ogrlinestring.cpp:1968
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolyhedralsurface.cpp:95
OGRTriangle ChildType
Definition: ogr_geometry.h:2537
OGRCircularString * toCircularString()
Definition: ogr_geometry.h:594
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Definition: ogr_geometry.h:2843
virtual void setMeasured(OGRBoolean bIsMeasured) override
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:699
const OGRTriangle * toTriangle() const
Definition: ogr_geometry.h:657
ChildType ** end()
Definition: ogr_geometry.h:2254
OGRErr importFromWkt(const char **) override
Definition: ogrcurvepolygon.cpp:523
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrlinestring.cpp:141
ChildType ** end()
Definition: ogr_geometry.h:1953
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2564
The CPLJSONArray class holds JSON object from CPLJSONDocument.
Definition: cpl_json.h:53
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) override
Add a ring to a polygon.
Definition: ogrtriangle.cpp:246
virtual void visit(const OGRPoint *)=0
const ChildType *const * end() const
Definition: ogr_geometry.h:2775
ChildType ** end()
Definition: ogr_geometry.h:2694
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolygon.cpp:298
Definition: ogr_geometry.h:117
ChildType ** begin()
Definition: ogr_geometry.h:2692
const OGRCurvePolygon * toUpperClass() const
Definition: ogr_geometry.h:2006
OGRErr importFromWkb(const GByte *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometry.cpp:1368
OGRSurface * toSurface()
Definition: ogr_geometry.h:622
Definition: ogr_geometry.h:2233
virtual double get_Length() const =0
Returns the length of the curve.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrlinestring.cpp:2799
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:552
virtual OGRErr addGeometry(const OGRGeometry *) override
Add a new geometry to a collection.
Definition: ogrtriangulatedsurface.cpp:180
const ChildType *const * end() const
Definition: ogr_geometry.h:2550
ChildType ** end()
Definition: ogr_geometry.h:1627
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:609
const ChildType *const * begin() const
Definition: ogr_geometry.h:2137
virtual OGRwkbGeometryType getGeometryType() const override
Returns the WKB Type of PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:109
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Definition: ogrgeometry.cpp:2288
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:1161
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:114
void visit(OGRPoint *) override
Definition: ogr_geometry.h:170
OGRLineString ChildType
Definition: ogr_geometry.h:2762
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:495
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRErr importFromWkt(const char **) override
Definition: ogrlinestring.cpp:1751
virtual double get_Area() const =0
Get the area of the (closed) curve.
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:877
Definition: ogr_geometry.h:1581
Definition: ogr_geometry.h:63
OGRPolyhedralSurface * toUpperClass()
Definition: ogr_geometry.h:2560
OGRwkbGeometryType
Definition: ogr_core.h:317
const ChildType *const * end() const
Definition: ogr_geometry.h:1813
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:277
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2565
OGRCurvePolygon * toUpperClass()
Definition: ogr_geometry.h:2004
const OGRPoint * toPoint() const
Definition: ogr_geometry.h:531
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrcurvepolygon.cpp:175
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2790
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrgeometry.cpp:486
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:186
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:86
virtual void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition: ogrgeometry.cpp:416
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2204
ChildType ** begin()
Definition: ogr_geometry.h:1625
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:1007
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmultisurface.cpp:99
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:266
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmulticurve.cpp:175
Definition: ogr_geometry.h:908
Definition: ogr_geometry.h:2516
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2639
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1461
Definition: ogr_geometry.h:2669
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2367
virtual double get_AreaOfCurveSegments() const override
Definition: ogrcompoundcurve.cpp:903
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2205
Definition: ogr_geometry.h:1728
Definition: ogr_geometry.h:191
Definition: ogr_geometry.h:2748
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrgeometrycollection.cpp:193
OGRCurvePolygon * toCurvePolygon()
Definition: ogr_geometry.h:664
Definition: ogr_geometry.h:286
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2287
virtual void empty()=0
Clear geometry information. This restores the geometry to its initial state after construction...
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrgeometry.cpp:784
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2788
OGRMultiCurve * toMultiCurve()
Definition: ogr_geometry.h:734
OGRPolyhedralSurface * toPolyhedralSurface()
Definition: ogr_geometry.h:762
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2640
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:866
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2284
void sfcgal_geometry_t
Definition: ogr_geometry.h:83
ChildType ** begin()
Definition: ogr_geometry.h:2542
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2008
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:375
virtual double get_Area() const =0
Get the area of the surface object.
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:138
double getM() const
Definition: ogr_geometry.h:859
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition: ogrpolyhedralsurface.cpp:80
const ChildType *const * begin() const
Definition: ogr_geometry.h:1811
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:396
struct GEOSGeom_t * GEOSGeom
Definition: ogr_geometry.h:79
Definition: ogr_geometry.h:164
virtual int getNumPoints() const override
Fetch vertex count.
Definition: ogr_geometry.h:1159
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:165
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2769
ChildType ** begin()
Definition: ogr_geometry.h:2344
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction...
Definition: ogrcurvepolygon.cpp:128
OGRTriangle * toTriangle()
Definition: ogr_geometry.h:650
void setZ(double zIn)
Assign point Z coordinate. Calling this method will force the geometry coordinate dimension to 3D (wk...
Definition: ogr_geometry.h:874
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1068
OGRPoint ChildType
Definition: ogr_geometry.h:969
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:855
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition: ogrcurve.cpp:416
ChildType ** end()
Definition: ogr_geometry.h:2133
virtual int getDimension() const =0
Get the dimension of this object.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1364
OGRLineString * toLineString()
Definition: ogr_geometry.h:566
Definition: ogr_geometry.h:1763
OGRLinearRing * toLinearRing()
Definition: ogr_geometry.h:580
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:365
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmulticurve.cpp:135
const OGRTriangulatedSurface * toTriangulatedSurface() const
Definition: ogr_geometry.h:783
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:238
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:559
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrlinestring.cpp:2311
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2078
Definition: ogr_geometry.h:2397
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrcurvepolygon.cpp:440
const OGRMultiCurve * toMultiCurve() const
Definition: ogr_geometry.h:741
const ChildType *const * begin() const
Definition: ogr_geometry.h:2436
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2718
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:870
virtual void visit(OGRPoint *)=0
Definition: ogr_spatialref.h:156
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2635
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:121
OGRCurve ChildType
Definition: ogr_geometry.h:1620
struct _OGRPreparedGeometry OGRPreparedGeometry
Definition: ogr_geometry.h:2924
Definition: ogr_core.h:425
ChildType ** begin()
Definition: ogr_geometry.h:2252
const ChildType *const * end() const
Definition: ogr_geometry.h:2438
const OGRGeometryCollection * toGeometryCollection() const
Definition: ogr_geometry.h:685
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:1162
OGRCurvePolygon()
Create an empty curve polygon.
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:318
const OGRMultiPoint * toMultiPoint() const
Definition: ogr_geometry.h:699
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2282
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Definition: ogr_geometry.h:798
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:740
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2009
const OGRPolyhedralSurface * toUpperClass() const
Definition: ogr_geometry.h:2562
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:893
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:372
virtual OGRErr addGeometry(const OGRGeometry *)
Add a new geometry to a collection.
Definition: ogrpolyhedralsurface.cpp:841
virtual OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:419
Definition: ogr_geometry.h:810
void * OGRGeometryH
Definition: ogr_api.h:60
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:126
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2792
const ChildType *const * end() const
Definition: ogr_geometry.h:2621
OGRwkbVariant
Definition: ogr_core.h:423
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:848
const OGRSurface * toSurface() const
Definition: ogr_geometry.h:629
OGRLinearRing ChildType
Definition: ogr_geometry.h:1946
virtual int WkbSize() const =0
Returns size of related binary representation.
const ChildType *const * end() const
Definition: ogr_geometry.h:2700
virtual void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition: ogrgeometrycollection.cpp:110
const OGRCurvePolygon * toCurvePolygon() const
Definition: ogr_geometry.h:671
virtual OGRBoolean Equals(const OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrlinestring.cpp:2535
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2365
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:1002
OGRPolygon * toPolygon()
Definition: ogr_geometry.h:636
Definition: ogr_geometry.h:1913
Definition: ogr_geometry.h:1035
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2720
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: ogr_geometry.h:81
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
OGRGeometryCollection * toGeometryCollection()
Definition: ogr_geometry.h:678
OGRGeometry ChildType
Definition: ogr_geometry.h:2126
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmultisurface.cpp:137
Definition: ogr_geometry.h:238
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrgeometrycollection.cpp:176
OGRRawPoint(double xIn, double yIn)
Definition: ogr_geometry.h:70
void visit(const OGRPoint *) override
Definition: ogr_geometry.h:244
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1282
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrlinestring.cpp:208
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrcurvepolygon.cpp:138
const OGRCurve * toCurve() const
Definition: ogr_geometry.h:545
OGRPolygon ChildType
Definition: ogr_geometry.h:2339
ChildType ** end()
Definition: ogr_geometry.h:2432
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:820
const OGRMultiSurface * toMultiSurface() const
Definition: ogr_geometry.h:755
ChildType ** end()
Definition: ogr_geometry.h:2346
const ChildType *const * begin() const
Definition: ogr_geometry.h:2258
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const
Return a polygon from a curve polygon.
Definition: ogrcurvepolygon.cpp:569
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1459
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Definition: ogr_geometry.h:2943
OGRErr importFromWkt(const char **) override
Definition: ogrgeometrycollection.cpp:792
OGRPolygon * toUpperClass()
Definition: ogr_geometry.h:2073
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:287
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:717
const ChildType *const * end() const
Definition: ogr_geometry.h:2352
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:892
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:362
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:88
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1701
Definition: ogr_geometry.h:2036
ChildType ** begin()
Definition: ogr_geometry.h:2430
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:91
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:353
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
OGRPolygon ChildType
Definition: ogr_geometry.h:2425
const ChildType *const * end() const
Definition: ogr_geometry.h:2139
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:125
const OGRLineString * toUpperClass() const
Definition: ogr_geometry.h:1362
int OGRErr
Definition: ogr_core.h:290
bool operator==(const OGRGeometry &other) const
Definition: ogr_geometry.h:349
virtual void Value(double, OGRPoint *) const override
Fetch point at given distance along curve.
Definition: ogrlinestring.cpp:2010
ChildType ** end()
Definition: ogr_geometry.h:2615
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4909
const OGRMultiPolygon * toMultiPolygon() const
Definition: ogr_geometry.h:727
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2793
bool operator!=(const OGRGeometry &other) const
Definition: ogr_geometry.h:352
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:909
const ChildType *const * begin() const
Definition: ogr_geometry.h:1631
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Definition: ogrgeometry.cpp:2361
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:292
const OGRMultiLineString * toMultiLineString() const
Definition: ogr_geometry.h:713
Definition: ogr_geometry.h:2591
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1882
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrgeometrycollection.cpp:232
const ChildType *const * begin() const
Definition: ogr_geometry.h:2548
const ChildType *const * begin() const
Definition: ogr_geometry.h:2350
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2370
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:857
OGRBoolean Is3D() const
Definition: ogr_geometry.h:363
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:266
ChildType ** begin()
Definition: ogr_geometry.h:2131
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1284
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1702
ChildType ** end()
Definition: ogr_geometry.h:2544
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1537
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:818
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrgeometrycollection.cpp:805
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2722
#define CPL_WARN_UNUSED_RESULT
Definition: cpl_port.h:939
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:931
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2077
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:639