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;
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;
366 virtual void empty() = 0;
368 virtual
void getEnvelope( OGREnvelope * psEnvelope ) const = 0;
369 virtual
void getEnvelope( OGREnvelope3D * psEnvelope ) const = 0;
372 virtual
int WkbSize() const = 0;
375 virtual
OGRErr importFromWkb( const
unsigned char *,
378 int& nBytesConsumedOut ) = 0;
381 virtual
OGRErr importFromWkt( const
char ** ppszInput ) = 0;
386 OGRErr importFromWkt(
char ** ppszInput ) CPL_WARN_DEPRECATED("Use importFromWkt(const
char**) instead")
388 return importFromWkt( const_cast<const char**>(ppszInput) );
391 virtual OGRErr exportToWkt(
char ** ppszDstText,
397 virtual const char *getGeometryName()
const = 0;
398 virtual void dumpReadable( FILE *,
const char * =
nullptr 399 ,
char** papszOptions =
nullptr )
const;
400 virtual void flattenTo2D() = 0;
401 virtual char * exportToGML(
const char*
const * papszOptions =
nullptr )
const;
402 virtual char * exportToKML()
const;
403 virtual char * exportToJson()
const;
415 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
const;
419 double dfMaxAngleStepSizeDegrees = 0,
427 virtual
void closeRings();
429 virtual
void setCoordinateDimension(
int nDimension );
431 virtual
void setMeasured(
OGRBoolean bIsMeasured );
439 virtual void segmentize(
double dfMaxLength);
455 virtual
double Distance( const
OGRGeometry * ) const ;
457 virtual
OGRGeometry *Buffer(
double dfDist,
int nQuadSegs = 30 )
471 OGRGeometry *SimplifyPreserveTopology(
double dTolerance)
478 virtual
double Distance3D( const
OGRGeometry *poOtherGeom ) const;
483 const CPL_WARN_DEPRECATED("Non standard method. "
484 "Use Intersects() instead");
486 const CPL_WARN_DEPRECATED("Non standard method. "
487 "Use Equals() instead");
489 const CPL_WARN_DEPRECATED("Non standard method. "
490 "Use SymDifference() instead");
492 const CPL_WARN_DEPRECATED("Non standard method. "
493 "Use Boundary() instead");
498 static
int bGenerate_DB2_V72_BYTE_ORDER;
501 virtual
void swapXY();
524 {
return cpl::down_cast<
OGRPoint*>(
this); }
531 {
return cpl::down_cast<
const OGRPoint*>(
this); }
538 {
return cpl::down_cast<
OGRCurve*>(
this); }
545 {
return cpl::down_cast<
const OGRCurve*>(
this); }
629 {
return cpl::down_cast<
const OGRSurface*>(
this); }
643 {
return cpl::down_cast<
const OGRPolygon*>(
this); }
657 {
return cpl::down_cast<
const OGRTriangle*>(
this); }
788 struct CPL_DLL OGRGeometryUniquePtrDeleter
819 OGRPoint(
double x,
double y,
double z );
820 OGRPoint(
double x,
double y,
double z,
double m );
831 int& nBytesConsumedOut )
override;
844 virtual void empty()
override;
845 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
846 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
848 {
return !(flags & OGR_G_NOT_EMPTY_POINT); }
852 double getX()
const {
return x; }
854 double getY()
const {
return y; }
856 double getZ()
const {
return z; }
858 double getM()
const {
return m; }
865 void setX(
double xIn ) { x = xIn; flags |= OGR_G_NOT_EMPTY_POINT; }
869 void setY(
double yIn ) { y = yIn; flags |= OGR_G_NOT_EMPTY_POINT; }
874 { z = zIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_3D); }
879 { m = mIn; flags |= (OGR_G_NOT_EMPTY_POINT | OGR_G_MEASURED); }
894 virtual void swapXY()
override;
932 virtual OGRCurveCasterToLineString GetCasterToLineString()
const = 0;
933 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
const = 0;
944 class CPL_DLL ConstIterator
947 std::unique_ptr<Private> m_poPrivate;
949 ConstIterator(
const OGRCurve* poSelf,
bool bStart);
950 ConstIterator(ConstIterator&& oOther);
953 ConstIterator& operator++();
954 bool operator!=(
const ConstIterator& it)
const;
978 ConstIterator
begin()
const;
980 ConstIterator
end()
const;
983 virtual double get_Length()
const = 0;
984 virtual void StartPoint(
OGRPoint * )
const = 0;
985 virtual void EndPoint(
OGRPoint * )
const = 0;
986 virtual int get_IsClosed()
const;
987 virtual void Value(
double,
OGRPoint * )
const = 0;
988 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
989 const char*
const* papszOptions =
nullptr)
991 virtual int getDimension()
const override;
994 virtual int getNumPoints()
const = 0;
997 virtual double get_Area()
const = 0;
1016 inline OGRCurve::ConstIterator
begin(
const OGRCurve* poCurve) {
return poCurve->begin(); }
1018 inline OGRCurve::ConstIterator
end(
const OGRCurve* poCurve) {
return poCurve->end(); }
1050 OGRErr importFromWKTListOnly(
const char ** ppszInput,
int bHasZ,
int bHasM,
1057 virtual double get_LinearArea()
const;
1063 class CPL_DLL Iterator
1066 std::unique_ptr<Private> m_poPrivate;
1070 Iterator(Iterator&& oOther);
1073 Iterator& operator++();
1074 bool operator!=(
const Iterator& it)
const;
1080 class CPL_DLL ConstIterator
1083 std::unique_ptr<Private> m_poPrivate;
1086 ConstIterator(ConstIterator&& oOther);
1089 ConstIterator& operator++();
1090 bool operator!=(
const ConstIterator& it)
const;
1123 ConstIterator
begin()
const;
1125 ConstIterator
end()
const;
1128 virtual int WkbSize()
const override;
1129 virtual OGRErr importFromWkb(
const unsigned char *,
1132 int& nBytesConsumedOut )
override;
1137 OGRErr importFromWkt(
const char ** )
override;
1138 virtual OGRErr exportToWkt(
char ** ppszDstText,
1144 virtual void empty()
override;
1145 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1146 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1150 virtual double get_Length()
const override;
1151 virtual void StartPoint(
OGRPoint * )
const override;
1152 virtual void EndPoint(
OGRPoint * )
const override;
1153 virtual void Value(
double,
OGRPoint * )
const override;
1154 virtual double Project(
const OGRPoint * )
const;
1155 virtual OGRLineString* getSubLine(
double,
double,
int )
const;
1159 void getPoint(
int,
OGRPoint * )
const;
1160 double getX(
int i )
const {
return paoPoints[i].
x; }
1161 double getY(
int i )
const {
return paoPoints[i].
y; }
1162 double getZ(
int i )
const;
1163 double getM(
int i )
const;
1169 virtual void setCoordinateDimension(
int nDimension )
override;
1170 virtual void set3D(
OGRBoolean bIs3D )
override;
1171 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1172 void setNumPoints(
int nNewPointCount,
1173 int bZeroizeNewContent = TRUE );
1175 void setPoint(
int,
double,
double );
1176 void setZ(
int,
double );
1177 void setM(
int,
double );
1178 void setPoint(
int,
double,
double,
double );
1179 void setPointM(
int,
double,
double,
double );
1180 void setPoint(
int,
double,
double,
double,
double );
1181 void setPoints(
int,
const OGRRawPoint *,
const double * =
nullptr );
1182 void setPointsM(
int,
const OGRRawPoint *,
const double * );
1183 void setPoints(
int,
const OGRRawPoint *,
const double *,
const double * );
1184 void setPoints(
int,
const double * padfX,
const double * padfY,
1185 const double *padfZIn =
nullptr );
1186 void setPointsM(
int,
const double * padfX,
const double * padfY,
1187 const double *padfMIn =
nullptr );
1188 void setPoints(
int,
const double * padfX,
const double * padfY,
1189 const double *padfZIn,
const double *padfMIn );
1191 void addPoint(
double,
double );
1192 void addPoint(
double,
double,
double );
1193 void addPointM(
double,
double,
double );
1194 void addPoint(
double,
double,
double,
double );
1196 void getPoints(
OGRRawPoint *,
double * =
nullptr )
const;
1197 void getPoints(
void* pabyX,
int nXStride,
1198 void* pabyY,
int nYStride,
1199 void* pabyZ =
nullptr,
int nZStride = 0 )
const;
1200 void getPoints(
void* pabyX,
int nXStride,
1201 void* pabyY,
int nYStride,
1202 void* pabyZ,
int nZStride,
1203 void* pabyM,
int nMStride )
const;
1206 int nStartVertex = 0,
int nEndVertex = -1 );
1207 void reversePoints(
void );
1212 virtual void flattenTo2D()
override;
1213 virtual void segmentize(
double dfMaxLength)
override;
1215 virtual void swapXY()
override;
1220 inline OGRSimpleCurve::Iterator
begin(
OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1222 inline OGRSimpleCurve::Iterator
end(
OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1225 inline OGRSimpleCurve::ConstIterator
begin(
const OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1227 inline OGRSimpleCurve::ConstIterator
end(
const OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1251 virtual OGRCurveCasterToLineString GetCasterToLineString()
1253 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1269 const char*
const* papszOptions =
nullptr )
1272 const char*
const* papszOptions =
nullptr )
const override;
1273 virtual double get_Area()
const override;
1322 virtual int _WkbSize(
int _flags )
const;
1324 const unsigned char *,
int,
1325 int& nBytesConsumedOut );
1327 unsigned char * )
const;
1329 virtual OGRCurveCasterToLineString GetCasterToLineString()
1331 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1348 virtual int isClockwise()
const;
1349 virtual void reverseWindingOrder();
1352 int bTestEnvelope = TRUE )
const;
1354 int bTestEnvelope = TRUE )
const;
1368 virtual int WkbSize()
const override;
1372 int& nBytesConsumedOut )
override;
1397 void ExtendEnvelopeWithCircular( OGREnvelope * psEnvelope )
const;
1399 int IsFullCircle(
double& cx,
double& cy,
double& square_R )
const;
1403 virtual OGRCurveCasterToLineString GetCasterToLineString()
1405 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1423 int& nBytesConsumedOut )
override;
1435 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1436 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1441 const char*
const* papszOptions =
nullptr )
1444 virtual double get_Area()
const override;
1449 virtual void segmentize(
double dfMaxLength )
override;
1453 double dfMaxAngleStepSizeDegrees = 0,
1454 const char*
const* papszOptions =
nullptr)
const override;
1479 class CPL_DLL OGRCurveCollection
1492 OGRCurveCollection();
1493 OGRCurveCollection(
const OGRCurveCollection& other);
1494 ~OGRCurveCollection();
1496 OGRCurveCollection&
operator=(
const OGRCurveCollection& other);
1506 OGRCurve**
end() {
return papoCurves + nCurveCount; }
1512 const OGRCurve*
const*
end()
const {
return papoCurves + nCurveCount; }
1516 void getEnvelope( OGREnvelope * psEnvelope )
const;
1517 void getEnvelope( OGREnvelope3D * psEnvelope )
const;
1523 const unsigned char * pabyData,
1527 int nMinSubGeomSize,
1529 OGRErr importBodyFromWkb(
1531 const unsigned char * pabyData,
1533 int bAcceptCompoundCurve,
1537 int& nBytesConsumedOut );
1539 char ** ppszDstText )
const;
1545 int nNewDimension );
1549 int getNumCurves()
const;
1551 const OGRCurve *getCurve(
int )
const;
1554 OGRErr removeCurve(
int iIndex,
bool bDelete =
true );
1582 OGRCurveCollection oCC;
1585 double dfToleranceEps,
1591 OGRLineString* CurveToLineInternal(
double dfMaxAngleStepSizeDegrees,
1592 const char*
const* papszOptions,
1593 int bIsLinearRing )
const;
1602 virtual OGRCurveCasterToLineString GetCasterToLineString()
1604 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1632 virtual int WkbSize()
const override;
1636 int& nBytesConsumedOut )
override;
1648 virtual void empty()
override;
1649 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1650 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1659 const char*
const* papszOptions =
nullptr )
1664 virtual double get_Area()
const override;
1670 int getNumCurves()
const;
1672 const OGRCurve *getCurve(
int )
const;
1682 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1691 virtual void segmentize(
double dfMaxLength)
override;
1695 double dfMaxAngleStepSizeDegrees = 0,
1696 const char*
const* papszOptions =
nullptr)
const override;
1700 virtual void swapXY()
override;
1728 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const = 0;
1729 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
const = 0;
1733 virtual double get_Area()
const = 0;
1735 {
return PointOnSurfaceInternal(poPoint); }
1766 virtual int checkRing(
OGRCurve * poNewRing )
const;
1778 OGRCurveCollection oCC;
1780 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1782 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1815 virtual void empty()
override;
1819 virtual void segmentize(
double dfMaxLength )
override;
1823 double dfMaxAngleStepSizeDegrees = 0,
1824 const char*
const* papszOptions =
nullptr )
const override;
1827 virtual double get_Area()
const override;
1830 virtual int WkbSize()
const override;
1834 int& nBytesConsumedOut )
override;
1846 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1847 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1851 double dfMaxAngleStepSizeDegrees = 0,
1852 const char*
const* papszOptions =
nullptr )
const;
1881 virtual void swapXY()
override;
1919 virtual int checkRing(
OGRCurve * poNewRing )
const override;
1920 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
1921 int bHasZ,
int bHasM,
1928 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
1930 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
1963 const char*
const* papszOptions =
nullptr )
const override;
1965 double dfMaxAngleStepSizeDegrees = 0,
1966 const char*
const* papszOptions =
nullptr)
const override;
1969 virtual int WkbSize()
const override;
1973 int& nBytesConsumedOut )
override;
1986 double dfMaxAngleStepSizeDegrees = 0,
1987 const char*
const* papszOptions =
nullptr )
const override;
2036 bool quickValidityCheck()
const;
2040 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
const override;
2041 virtual OGRErr importFromWKTListOnly(
const char ** ppszInput,
2042 int bHasZ,
int bHasM,
2045 double*& padfZ )
override;
2062 int& nBytesConsumedOut )
override;
2093 OGRErr importFromWkbInternal(
const unsigned char * pabyData,
2097 OGRErr importFromWktInternal(
const char **ppszInput,
int nRecLevel );
2104 OGRErr exportToWktInternal(
char ** ppszDstText,
2106 const char* pszSkipPrefix )
const;
2140 virtual void empty()
override;
2144 virtual void segmentize(
double dfMaxLength)
override;
2148 const char*
const* papszOptions =
nullptr )
const override;
2150 double dfMaxAngleStepSizeDegrees = 0,
2151 const char*
const* papszOptions =
nullptr )
const override;
2154 virtual int WkbSize()
const override;
2158 int& nBytesConsumedOut )
override;
2169 virtual double get_Length()
const;
2170 virtual double get_Area()
const;
2174 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
2175 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
2178 int getNumGeometries()
const;
2191 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2197 virtual void swapXY()
override;
2317 OGRErr _addGeometryWithExpectedSubGeometryType(
2320 OGRErr _addGeometryDirectlyWithExpectedSubGeometryType(
2398 virtual OGRSurfaceCasterToPolygon GetCasterToPolygon()
2400 virtual OGRSurfaceCasterToCurvePolygon GetCasterToCurvePolygon()
2403 virtual const char* getSubGeometryName()
const;
2406 const char* pszSkipPrefix )
const;
2408 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2436 virtual int WkbSize()
const override;
2442 int& nBytesConsumedOut )
override;
2455 virtual void empty()
override;
2458 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
2459 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
2464 virtual double get_Area()
const override;
2480 virtual void swapXY()
override;
2517 virtual const char* getSubGeometryName()
const override;
2520 virtual OGRPolyhedralSurfaceCastToMultiPolygon GetCasterToMultiPolygon()
2589 OGRErr importFromWkt_Bracketed(
const char **,
int bHasM,
int bHasZ );
2815 static OGRErr createFromFgfInternal(
const unsigned char *pabyData,
2819 int *pnBytesConsumed,
2825 static OGRErr createFromWkb(
const void * pabyData,
2830 int& nBytesConsumedOut );
2840 CPL_WARN_DEPRECATED(
"Use createFromWkt(const char**, ...) instead")
2842 return createFromWkt( const_cast<const char**>(ppszInput), poSRS, ppoGeom);
2847 static OGRGeometry *createFromGML(
const char * );
2850 static OGRGeometry *createFromGeoJson(
const char *);
2858 bool bOnlyInOrder =
true );
2865 const char*
const* papszOptions =
nullptr );
2869 int *pbResultValidGeometry,
2870 const char **papszOptions =
nullptr);
2871 static bool haveGEOS();
2875 char** papszOptions );
2878 approximateArcAngles(
double dfX,
double dfY,
double dfZ,
2879 double dfPrimaryRadius,
double dfSecondaryAxis,
2881 double dfStartAngle,
double dfEndAngle,
2882 double dfMaxAngleStepSizeDegrees );
2884 static int GetCurveParmeters(
double x0,
double y0,
2885 double x1,
double y1,
2886 double x2,
double y2,
2887 double& R,
double& cx,
double& cy,
2888 double& alpha0,
double& alpha1,
2891 double x0,
double y0,
double z0,
2892 double x1,
double y1,
double z1,
2893 double x2,
double y2,
double z2,
2895 double dfMaxAngleStepSizeDegrees,
2896 const char*
const * papszOptions =
nullptr );
2897 static OGRCurve* curveFromLineString(
2899 const char*
const * papszOptions =
nullptr);
2916 struct CPL_DLL OGRPreparedGeometryUniquePtrDeleter
const OGRPolygon * toUpperClass() const
Definition: ogr_geometry.h:2070
OGRMultiPoint * toMultiPoint()
Definition: ogr_geometry.h:691
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:1734
const ChildType *const * end() const
Definition: ogr_geometry.h:1955
OGRPoint ChildType
Definition: ogr_geometry.h:1102
~OGRPolyhedralSurface() override
Destructor.
Definition: ogrpolyhedralsurface.cpp:74
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:4833
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2632
ChildType ** begin()
Definition: ogr_geometry.h:2608
const ChildType *const * begin() const
Definition: ogr_geometry.h:2693
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1007
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrlinestring.cpp:1838
const OGRPolyhedralSurface * toPolyhedralSurface() const
Definition: ogr_geometry.h:768
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2052
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrcurvepolygon.cpp:622
OGRMultiLineString * toMultiLineString()
Definition: ogr_geometry.h:705
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1030
virtual OGRBoolean Within(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4643
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1053
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2484
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrpolygon.cpp:106
double y
Definition: ogr_geometry.h:75
OGRCurve ChildType
Definition: ogr_geometry.h:1796
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:623
Definition: ogr_geometry.h:1241
OGRPoint ChildType
Definition: ogr_geometry.h:2603
OGRCompoundCurve * toCompoundCurve()
Definition: ogr_geometry.h:607
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Definition: ogrgeometrycollection.cpp:1288
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Definition: ogr_geometry.h:510
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1284
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1879
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5523
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2382
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:852
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1285
OGRCurve * toCurve()
Definition: ogr_geometry.h:537
const OGRPolygon * toPolygon() const
Definition: ogr_geometry.h:642
const ChildType *const * end() const
Definition: ogr_geometry.h:2255
Definition: ogr_geometry.h:2813
OGRMultiPolygon * toMultiPolygon()
Definition: ogr_geometry.h:719
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmulticurve.cpp:100
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1363
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:1621
ChildType ** begin()
Definition: ogr_geometry.h:2762
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
const ChildType *const * begin() const
Definition: ogr_geometry.h:2768
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:661
ChildType ** end()
Definition: ogr_geometry.h:2764
virtual void set3D(OGRBoolean bIs3D) override
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:697
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1461
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3153
const OGRLinearRing * toLinearRing() const
Definition: ogr_geometry.h:586
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:47
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2483
OGRMultiSurface * toMultiSurface()
Definition: ogr_geometry.h:747
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:87
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Definition: ogr_geometry.h:516
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:691
ChildType ** end()
Definition: ogr_geometry.h:1803
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2281
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:310
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrgeometry.cpp:3085
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:3118
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2364
const ChildType *const * begin() const
Definition: ogr_geometry.h:1953
int OGRBoolean
Definition: ogr_core.h:306
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:204
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:597
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:831
const OGRCircularString * toCircularString() const
Definition: ogr_geometry.h:600
OGRErr removeRing(int iIndex, bool bDelete=true)
Remove a geometry from the container.
Definition: ogrcurvepolygon.cpp:342
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:833
unsigned char GByte
Definition: cpl_port.h:213
OGRTriangulatedSurface * toTriangulatedSurface()
Definition: ogr_geometry.h:775
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1462
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:467
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1299
OGRRawPoint()
Definition: ogr_geometry.h:67
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
OGRSurface ChildType
Definition: ogr_geometry.h:2242
const OGRLineString * toLineString() const
Definition: ogr_geometry.h:572
ChildType ** begin()
Definition: ogr_geometry.h:1947
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrcurvepolygon.cpp:711
Definition: ogr_geometry.h:2307
const OGRCompoundCurve * toCompoundCurve() const
Definition: ogr_geometry.h:614
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant eWkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrcurvepolygon.cpp:542
OGRPoint * toPoint()
Definition: ogr_geometry.h:523
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:729
int OGRHasPreparedGeometrySupport()
Definition: ogrgeometry.cpp:5571
const ChildType *const * begin() const
Definition: ogr_geometry.h:2614
const ChildType *const * end() const
Definition: ogr_geometry.h:1629
OGRwkbByteOrder
Definition: ogr_core.h:489
Definition: ogr_geometry.h:1394
OGRCurve ChildType
Definition: ogr_geometry.h:2682
virtual void flattenTo2D()=0
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogr_geometry.h:925
Definition: ogr_geometry.h:2091
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2718
OGRLineString * toUpperClass()
Definition: ogr_geometry.h:1358
Definition: ogr_geometry.h:1312
void setM(double mIn)
Definition: ogr_geometry.h:878
ChildType ** begin()
Definition: ogr_geometry.h:1801
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:142
virtual double get_Length() const override
Returns the length of the curve.
Definition: ogrlinestring.cpp:1936
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolyhedralsurface.cpp:102
OGRTriangle ChildType
Definition: ogr_geometry.h:2532
OGRCircularString * toCircularString()
Definition: ogr_geometry.h:593
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Definition: ogr_geometry.h:2838
virtual void setMeasured(OGRBoolean bIsMeasured) override
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:702
const OGRTriangle * toTriangle() const
Definition: ogr_geometry.h:656
ChildType ** end()
Definition: ogr_geometry.h:2249
OGRErr importFromWkt(const char **) override
Definition: ogrcurvepolygon.cpp:526
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrlinestring.cpp:140
ChildType ** end()
Definition: ogr_geometry.h:1949
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2559
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:251
virtual void visit(const OGRPoint *)=0
const ChildType *const * end() const
Definition: ogr_geometry.h:2770
ChildType ** end()
Definition: ogr_geometry.h:2689
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolygon.cpp:300
Definition: ogr_geometry.h:117
ChildType ** begin()
Definition: ogr_geometry.h:2687
const OGRCurvePolygon * toUpperClass() const
Definition: ogr_geometry.h:2002
OGRErr importFromWkb(const GByte *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometry.cpp:1373
OGRSurface * toSurface()
Definition: ogr_geometry.h:621
Definition: ogr_geometry.h:2228
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:2742
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:551
virtual OGRErr addGeometry(const OGRGeometry *) override
Add a new geometry to a collection.
Definition: ogrtriangulatedsurface.cpp:184
const ChildType *const * end() const
Definition: ogr_geometry.h:2545
ChildType ** end()
Definition: ogr_geometry.h:1623
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:612
const ChildType *const * begin() const
Definition: ogr_geometry.h:2132
virtual OGRwkbGeometryType getGeometryType() const override
Returns the WKB Type of PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:116
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Definition: ogrgeometry.cpp:2284
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:1160
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:113
void visit(OGRPoint *) override
Definition: ogr_geometry.h:170
OGRLineString ChildType
Definition: ogr_geometry.h:2757
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:498
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRErr importFromWkt(const char **) override
Definition: ogrlinestring.cpp:1719
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:882
Definition: ogr_geometry.h:1579
Definition: ogr_geometry.h:63
OGRPolyhedralSurface * toUpperClass()
Definition: ogr_geometry.h:2555
OGRwkbGeometryType
Definition: ogr_core.h:317
const ChildType *const * end() const
Definition: ogr_geometry.h:1809
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:279
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2560
OGRCurvePolygon * toUpperClass()
Definition: ogr_geometry.h:2000
const OGRPoint * toPoint() const
Definition: ogr_geometry.h:530
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrcurvepolygon.cpp:178
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2785
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrgeometry.cpp:491
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:188
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:88
virtual void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition: ogrgeometry.cpp:421
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2199
ChildType ** begin()
Definition: ogr_geometry.h:1621
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:1006
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmultisurface.cpp:101
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:268
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmulticurve.cpp:177
Definition: ogr_geometry.h:907
Definition: ogr_geometry.h:2511
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2634
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1459
Definition: ogr_geometry.h:2664
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2362
virtual double get_AreaOfCurveSegments() const override
Definition: ogrcompoundcurve.cpp:904
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2200
Definition: ogr_geometry.h:1724
Definition: ogr_geometry.h:191
Definition: ogr_geometry.h:2743
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrgeometrycollection.cpp:200
OGRCurvePolygon * toCurvePolygon()
Definition: ogr_geometry.h:663
Definition: ogr_geometry.h:286
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2282
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:789
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2783
OGRMultiCurve * toMultiCurve()
Definition: ogr_geometry.h:733
OGRPolyhedralSurface * toPolyhedralSurface()
Definition: ogr_geometry.h:761
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2635
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:865
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2279
void sfcgal_geometry_t
Definition: ogr_geometry.h:83
ChildType ** begin()
Definition: ogr_geometry.h:2537
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2004
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:377
virtual double get_Area() const =0
Get the area of the surface object.
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:143
double getM() const
Definition: ogr_geometry.h:858
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition: ogrpolyhedralsurface.cpp:87
const ChildType *const * begin() const
Definition: ogr_geometry.h:1807
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:398
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:1158
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:168
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2712
ChildType ** begin()
Definition: ogr_geometry.h:2339
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction...
Definition: ogrcurvepolygon.cpp:131
OGRTriangle * toTriangle()
Definition: ogr_geometry.h:649
void setZ(double zIn)
Assign point Z coordinate. Calling this method will force the geometry coordinate dimension to 3D (wk...
Definition: ogr_geometry.h:873
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1073
OGRPoint ChildType
Definition: ogr_geometry.h:968
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:854
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition: ogrcurve.cpp:418
ChildType ** end()
Definition: ogr_geometry.h:2128
virtual int getDimension() const =0
Get the dimension of this object.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1362
OGRLineString * toLineString()
Definition: ogr_geometry.h:565
Definition: ogr_geometry.h:1759
OGRLinearRing * toLinearRing()
Definition: ogr_geometry.h:579
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:364
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmulticurve.cpp:137
const OGRTriangulatedSurface * toTriangulatedSurface() const
Definition: ogr_geometry.h:782
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:241
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:558
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure...
Definition: ogrlinestring.cpp:2279
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2073
Definition: ogr_geometry.h:2392
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrcurvepolygon.cpp:443
const OGRMultiCurve * toMultiCurve() const
Definition: ogr_geometry.h:740
const ChildType *const * begin() const
Definition: ogr_geometry.h:2431
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2713
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:869
virtual void visit(OGRPoint *)=0
Definition: ogr_spatialref.h:145
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2630
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:123
OGRCurve ChildType
Definition: ogr_geometry.h:1616
struct _OGRPreparedGeometry OGRPreparedGeometry
Definition: ogr_geometry.h:2906
Definition: ogr_core.h:425
ChildType ** begin()
Definition: ogr_geometry.h:2247
const ChildType *const * end() const
Definition: ogr_geometry.h:2433
const OGRGeometryCollection * toGeometryCollection() const
Definition: ogr_geometry.h:684
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:1161
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:52
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:320
const OGRMultiPoint * toMultiPoint() const
Definition: ogr_geometry.h:698
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2277
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Definition: ogr_geometry.h:797
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:743
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2005
const OGRPolyhedralSurface * toUpperClass() const
Definition: ogr_geometry.h:2557
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:892
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:374
virtual OGRErr addGeometry(const OGRGeometry *)
Add a new geometry to a collection.
Definition: ogrpolyhedralsurface.cpp:846
virtual OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:422
Definition: ogr_geometry.h:809
void * OGRGeometryH
Definition: ogr_api.h:60
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:128
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2787
const ChildType *const * end() const
Definition: ogr_geometry.h:2616
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:847
const OGRSurface * toSurface() const
Definition: ogr_geometry.h:628
OGRLinearRing ChildType
Definition: ogr_geometry.h:1942
virtual int WkbSize() const =0
Returns size of related binary representation.
const ChildType *const * end() const
Definition: ogr_geometry.h:2695
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:117
const OGRCurvePolygon * toCurvePolygon() const
Definition: ogr_geometry.h:670
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:2503
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2360
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:1001
OGRPolygon * toPolygon()
Definition: ogr_geometry.h:635
Definition: ogr_geometry.h:1909
Definition: ogr_geometry.h:1034
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2715
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:677
OGRGeometry ChildType
Definition: ogr_geometry.h:2121
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmultisurface.cpp:139
Definition: ogr_geometry.h:238
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrgeometrycollection.cpp:183
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:1280
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrlinestring.cpp:207
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrcurvepolygon.cpp:141
const OGRCurve * toCurve() const
Definition: ogr_geometry.h:544
OGRPolygon ChildType
Definition: ogr_geometry.h:2334
ChildType ** end()
Definition: ogr_geometry.h:2427
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:825
const OGRMultiSurface * toMultiSurface() const
Definition: ogr_geometry.h:754
ChildType ** end()
Definition: ogr_geometry.h:2341
const ChildType *const * begin() const
Definition: ogr_geometry.h:2253
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const
Return a polygon from a curve polygon.
Definition: ogrcurvepolygon.cpp:572
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1457
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Definition: ogr_geometry.h:2925
OGRErr importFromWkt(const char **) override
Definition: ogrgeometrycollection.cpp:799
OGRPolygon * toUpperClass()
Definition: ogr_geometry.h:2068
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:285
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:720
const ChildType *const * end() const
Definition: ogr_geometry.h:2347
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:891
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:365
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:91
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1697
Definition: ogr_geometry.h:2032
ChildType ** begin()
Definition: ogr_geometry.h:2425
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:93
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:355
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
OGRPolygon ChildType
Definition: ogr_geometry.h:2420
const ChildType *const * end() const
Definition: ogr_geometry.h:2134
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:127
const OGRLineString * toUpperClass() const
Definition: ogr_geometry.h:1360
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:1978
ChildType ** end()
Definition: ogr_geometry.h:2610
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4709
const OGRMultiPolygon * toMultiPolygon() const
Definition: ogr_geometry.h:726
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2788
bool operator!=(const OGRGeometry &other) const
Definition: ogr_geometry.h:352
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:914
const ChildType *const * begin() const
Definition: ogr_geometry.h:1627
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Definition: ogrgeometry.cpp:2357
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:290
const OGRMultiLineString * toMultiLineString() const
Definition: ogr_geometry.h:712
Definition: ogr_geometry.h:2586
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1878
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrgeometrycollection.cpp:239
const ChildType *const * begin() const
Definition: ogr_geometry.h:2543
const ChildType *const * begin() const
Definition: ogr_geometry.h:2345
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2365
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:856
OGRBoolean Is3D() const
Definition: ogr_geometry.h:362
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:269
ChildType ** begin()
Definition: ogr_geometry.h:2126
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1282
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1698
ChildType ** end()
Definition: ogr_geometry.h:2539
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1505
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:820
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrgeometrycollection.cpp:812
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2717
#define CPL_WARN_UNUSED_RESULT
Definition: cpl_port.h:929
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:936
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2072
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:642