Go to the documentation of this file.
32 #ifndef OGR_GEOMETRY_H_INCLUDED
33 #define OGR_GEOMETRY_H_INCLUDED
49 #ifndef DEFINEH_OGRGeometryH
50 #define DEFINEH_OGRGeometryH
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;
356 virtual int getCoordinateDimension()
const;
357 int CoordinateDimension()
const;
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) );
399 virtual void dumpReadable( FILE *,
const char * =
nullptr
400 ,
char** papszOptions =
nullptr )
const;
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); }
553 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
560 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
567 {
return cpl::down_cast<OGRLineString*>(
this); }
574 {
return cpl::down_cast<const OGRLineString*>(
this); }
581 {
return cpl::down_cast<OGRLinearRing*>(
this); }
588 {
return cpl::down_cast<const OGRLinearRing*>(
this); }
595 {
return cpl::down_cast<OGRCircularString*>(
this); }
602 {
return cpl::down_cast<const OGRCircularString*>(
this); }
609 {
return cpl::down_cast<OGRCompoundCurve*>(
this); }
616 {
return cpl::down_cast<const OGRCompoundCurve*>(
this); }
623 {
return cpl::down_cast<OGRSurface*>(
this); }
630 {
return cpl::down_cast<const OGRSurface*>(
this); }
637 {
return cpl::down_cast<OGRPolygon*>(
this); }
644 {
return cpl::down_cast<const OGRPolygon*>(
this); }
651 {
return cpl::down_cast<OGRTriangle*>(
this); }
658 {
return cpl::down_cast<const OGRTriangle*>(
this); }
665 {
return cpl::down_cast<OGRCurvePolygon*>(
this); }
672 {
return cpl::down_cast<const OGRCurvePolygon*>(
this); }
679 {
return cpl::down_cast<OGRGeometryCollection*>(
this); }
686 {
return cpl::down_cast<const OGRGeometryCollection*>(
this); }
693 {
return cpl::down_cast<OGRMultiPoint*>(
this); }
700 {
return cpl::down_cast<const OGRMultiPoint*>(
this); }
707 {
return cpl::down_cast<OGRMultiLineString*>(
this); }
714 {
return cpl::down_cast<const OGRMultiLineString*>(
this); }
721 {
return cpl::down_cast<OGRMultiPolygon*>(
this); }
728 {
return cpl::down_cast<const OGRMultiPolygon*>(
this); }
735 {
return cpl::down_cast<OGRMultiCurve*>(
this); }
742 {
return cpl::down_cast<const OGRMultiCurve*>(
this); }
749 {
return cpl::down_cast<OGRMultiSurface*>(
this); }
756 {
return cpl::down_cast<const OGRMultiSurface*>(
this); }
763 {
return cpl::down_cast<OGRPolyhedralSurface*>(
this); }
770 {
return cpl::down_cast<const OGRPolyhedralSurface*>(
this); }
777 {
return cpl::down_cast<OGRTriangulatedSurface*>(
this); }
784 {
return cpl::down_cast<const OGRTriangulatedSurface*>(
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;
987 virtual int get_IsClosed()
const;
990 const char*
const* papszOptions =
nullptr)
992 virtual int getDimension()
const override;
1003 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
1008 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
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;
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;
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
virtual void visit(OGRPoint *)=0
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 getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition: ogrcurvepolygon.cpp:619
OGRBoolean Is3D() const
Definition: ogr_geometry.h:363
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
OGRMultiPolygon * toMultiPolygon()
Definition: ogr_geometry.h:720
OGRPolygon ChildType
Definition: ogr_geometry.h:2339
OGRLineString ChildType
Definition: ogr_geometry.h:2762
virtual void setCoordinateDimension(int nDimension)
Set the coordinate dimension.
Definition: ogrgeometry.cpp:1002
virtual OGRErr addRingDirectly(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:419
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2788
virtual void visit(OGRPolyhedralSurface *)=0
ChildType ** begin()
Definition: ogr_geometry.h:2767
Definition: ogr_geometry.h:2670
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:353
OGRRawPoint()
Definition: ogr_geometry.h:67
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const
Definition: ogrgeometrycollection.cpp:1281
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:1161
ChildType ** end()
Definition: ogr_geometry.h:2432
virtual double get_Area() const =0
Get the area of the surface object.
virtual void visit(const OGRPolyhedralSurface *)=0
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmulticurve.cpp:175
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
bool operator==(const OGRGeometry &other) const
Definition: ogr_geometry.h:349
const ChildType *const * end() const
Definition: ogr_geometry.h:1633
Definition: ogr_geometry.h:1243
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:909
virtual OGRBoolean Contains(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4909
Definition: ogr_geometry.h:2313
unsigned char GByte
Definition: cpl_port.h:215
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:820
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:877
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2635
OGRCircularString()
Create an empty circular string.
OGRPoint(const OGRPoint &other)
Copy constructor.
const ChildType *const * begin() const
Definition: ogr_geometry.h:1811
virtual OGRBoolean getNextPoint(OGRPoint *p)=0
Returns the next point followed by the iterator.
const ChildType *const * end() const
Definition: ogr_geometry.h:2438
Definition: ogr_geometry.h:909
OGRSurface ChildType
Definition: ogr_geometry.h:2247
ChildType ** begin()
Definition: ogr_geometry.h:2252
OGRMultiPoint(const OGRMultiPoint &other)
Copy constructor.
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:165
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:5045
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2287
Definition: ogr_geometry.h:1582
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2008
virtual void visit(const OGRGeometryCollection *)=0
virtual int getNumPoints() const override
Fetch vertex count.
Definition: ogr_geometry.h:1159
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
virtual void swapXY()
Swap x and y coordinates.
Definition: ogrgeometry.cpp:5735
virtual OGRwkbGeometryType getGeometryType() const override
Returns the WKB Type of PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:109
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1282
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1292
OGRCurve * toCurve()
Definition: ogr_geometry.h:538
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
~OGRTriangle() override
Destructor.
Definition: ogr_geometry.h:192
virtual void visit(const OGRLinearRing *)=0
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrlinestring.cpp:1653
void setM(double mIn)
Definition: ogr_geometry.h:879
ChildType ** end()
Definition: ogr_geometry.h:2544
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
virtual void visit(OGRMultiSurface *)=0
const OGRLineString * toUpperClass() const
Definition: ogr_geometry.h:1362
virtual void accept(IOGRConstGeometryVisitor *visitor) const =0
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const
Return a polygon from a curve polygon.
Definition: ogrcurvepolygon.cpp:569
ChildType ** begin()
Definition: ogr_geometry.h:1625
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1025
const OGRCompoundCurve * toCompoundCurve() const
Definition: ogr_geometry.h:615
virtual void visit(OGRCurvePolygon *)=0
Definition: ogr_geometry.h:2819
const ChildType *const * begin() const
Definition: ogr_geometry.h:2350
OGRTriangle(const OGRTriangle &other)
Copy constructor.
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3157
OGRMultiSurface * toMultiSurface()
Definition: ogr_geometry.h:748
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrpolygon.cpp:318
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2367
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2489
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmulticurve.cpp:135
const OGRPolygon * toUpperClass() const
Definition: ogr_geometry.h:2075
ChildType ** end()
Definition: ogr_geometry.h:2615
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Definition: ogr_geometry.h:517
OGRMultiCurve(const OGRMultiCurve &other)
Copy constructor.
const ChildType *const * begin() const
Definition: ogr_geometry.h:2698
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:201
OGRLinearRing ChildType
Definition: ogr_geometry.h:1946
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrcurvepolygon.cpp:594
Definition: ogr_geometry.h:2097
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const
Returns if this geometry is or has curve geometry.
Definition: ogrgeometry.cpp:3089
@ wkbVariantOldOgc
Definition: ogr_core.h:425
const ChildType *const * end() const
Definition: ogr_geometry.h:2621
Definition: ogr_spatialref.h:157
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrgeometrycollection.cpp:805
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolyhedralsurface.cpp:95
OGRPolygon(const OGRPolygon &other)
Copy constructor.
OGRCircularString * toCircularString()
Definition: ogr_geometry.h:594
Definition: ogr_geometry.h:2398
const OGRCircularString * toCircularString() const
Definition: ogr_geometry.h:601
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2369
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1701
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrgeometrycollection.cpp:232
OGRTriangulatedSurface * toTriangulatedSurface()
Definition: ogr_geometry.h:776
const OGRTriangle * toTriangle() const
Definition: ogr_geometry.h:657
const OGRPolygon * toPolygon() const
Definition: ogr_geometry.h:643
OGRMultiLineString()
Create an empty multi line string collection.
Definition: ogr_geometry.h:287
Definition: ogr_geometry.h:2592
virtual OGRBoolean IsValid() const
Test if the geometry is valid.
Definition: ogrgeometry.cpp:2047
const ChildType *const * end() const
Definition: ogr_geometry.h:2775
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrpolygon.cpp:121
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2009
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:1007
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:266
ChildType ** begin()
Definition: ogr_geometry.h:2430
OGRErr importFromWkb(const GByte *, int=-1, OGRwkbVariant=wkbVariantOldOgc)
Assign geometry from well known binary data.
Definition: ogrgeometry.cpp:1368
Definition: ogr_geometry.h:2234
Definition: ogr_geometry.h:811
const ChildType *const * begin() const
Definition: ogr_geometry.h:1631
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:372
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2722
virtual OGRErr addGeometry(const OGRGeometry *) override
Add a new geometry to a collection.
Definition: ogrtriangulatedsurface.cpp:180
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrgeometry.cpp:3122
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:1162
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2720
virtual void visit(OGRGeometryCollection *)=0
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction,...
Definition: ogrcurvepolygon.cpp:128
const ChildType *const * end() const
Definition: ogr_geometry.h:2352
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:137
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2370
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRPolygon & operator=(const OGRPolygon &other)
Assignment operator.
Definition: ogrpolygon.cpp:91
int OGRBoolean
Definition: ogr_core.h:306
double x
Definition: ogr_geometry.h:73
ChildType ** end()
Definition: ogr_geometry.h:2694
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:866
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrlinestring.cpp:2799
virtual void visit(OGRCompoundCurve *)=0
virtual void accept(IOGRGeometryVisitor *visitor)=0
virtual void visit(OGRTriangulatedSurface *)=0
const OGRLinearRing * toLinearRing() const
Definition: ogr_geometry.h:587
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2204
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogr_geometry.h:1738
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1364
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known binary format.
ChildType ** begin()
Definition: ogr_geometry.h:2344
Definition: ogr_geometry.h:64
Definition: ogr_geometry.h:2749
OGRCurve ChildType
Definition: ogr_geometry.h:1800
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant eWkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrcurvepolygon.cpp:539
virtual void flattenTo2D()=0
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const override
Definition: ogrmultisurface.cpp:137
virtual void visit(const OGRCompoundCurve *)=0
OGRMultiSurface()
Create an empty multi surface collection.
OGRMultiCurve * toMultiCurve()
Definition: ogr_geometry.h:734
OGRPoint ChildType
Definition: ogr_geometry.h:2608
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrcurvepolygon.cpp:440
OGRGeometryCollection()
Create an empty geometry collection.
virtual OGRErr addGeometry(const OGRGeometry *)
Add a new geometry to a collection.
Definition: ogrpolyhedralsurface.cpp:841
Definition: ogr_geometry.h:1729
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:114
virtual double get_Area() const override
Get the area of the (closed) curve.
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:277
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
OGRwkbByteOrder
Definition: ogr_core.h:490
OGRMultiPolygon(const OGRMultiPolygon &other)
Copy constructor.
OGRPolyhedralSurface * toUpperClass()
Definition: ogr_geometry.h:2560
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1464
virtual void visit(const OGRMultiPolygon *)=0
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:138
OGRTriangle ChildType
Definition: ogr_geometry.h:2537
Definition: ogr_geometry.h:1397
OGRCurvePolygon()
Create an empty curve polygon.
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmulticurve.cpp:98
OGRLineString()
Create an empty line string.
virtual OGRBoolean Intersects(const OGRGeometry *) const
Do these features intersect?
Definition: ogrgeometry.cpp:486
virtual OGRPolygon * CurvePolyToPoly(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return a polygon from a curve polygon.
Definition: ogrpolygon.cpp:818
const OGRLineString * toLineString() const
Definition: ogr_geometry.h:573
OGRTriangle * toTriangle()
Definition: ogr_geometry.h:650
virtual void visit(const OGRMultiCurve *)=0
The CPLJSONArray class holds JSON object from CPLJSONDocument.
Definition: cpl_json.h:54
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition: ogrgeometrycollection.cpp:110
int OGRHasPreparedGeometrySupport()
Definition: ogrgeometry.cpp:5783
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2564
OGRPoint * toPoint()
Definition: ogr_geometry.h:524
const ChildType *const * begin() const
Definition: ogr_geometry.h:2258
virtual void set3D(OGRBoolean bIs3D) override
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:694
const ChildType *const * begin() const
Definition: ogr_geometry.h:2137
virtual void visit(const OGRMultiSurface *)=0
OGRSurface * toSurface()
Definition: ogr_geometry.h:622
OGRMultiCurve()
Create an empty multi curve collection.
const ChildType *const * begin() const
Definition: ogr_geometry.h:2619
ChildType ** begin()
Definition: ogr_geometry.h:2692
OGRLinearRing(const OGRLinearRing &other)
Copy constructor.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2286
OGRGeometry ChildType
Definition: ogr_geometry.h:2126
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2284
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1537
OGRPolyhedralSurface * toPolyhedralSurface()
Definition: ogr_geometry.h:762
void sfcgal_geometry_t
Definition: ogr_geometry.h:83
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:658
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const =0
Return a linestring from a curve geometry.
~OGRPolyhedralSurface() override
Destructor.
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2078
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2792
const ChildType *const * end() const
Definition: ogr_geometry.h:2550
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Definition: ogr_geometry.h:2843
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1287
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:396
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:688
ChildType ** end()
Definition: ogr_geometry.h:1807
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2282
virtual void visit(const OGRMultiLineString *)=0
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrcurvepolygon.cpp:464
OGRPoint ChildType
Definition: ogr_geometry.h:1103
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:893
const OGRPoint * toPoint() const
Definition: ogr_geometry.h:531
OGRRawPoint(double xIn, double yIn)
Definition: ogr_geometry.h:70
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1068
virtual void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition: ogrgeometry.cpp:416
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrcurvepolygon.cpp:138
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2718
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:1002
const ChildType *const * end() const
Definition: ogr_geometry.h:1959
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:830
const OGRPolyhedralSurface * toUpperClass() const
Definition: ogr_geometry.h:2562
virtual void visit(OGRMultiPoint *)=0
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrpolygon.cpp:104
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2205
OGRLineString * toLineString()
Definition: ogr_geometry.h:566
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:931
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
OGRCurvePolygon(const OGRCurvePolygon &)
Copy constructor.
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:552
virtual void empty()=0
Clear geometry information. This restores the geometry to its initial state after construction,...
OGRPolygon * toUpperClass()
Definition: ogr_geometry.h:2073
const OGRCurvePolygon * toCurvePolygon() const
Definition: ogr_geometry.h:671
const OGRTriangulatedSurface * toTriangulatedSurface() const
Definition: ogr_geometry.h:783
OGRCurve ChildType
Definition: ogr_geometry.h:2687
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:559
OGRMultiSurface(const OGRMultiSurface &other)
Copy constructor.
Definition: ogr_geometry.h:1036
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Definition: ogrgeometry.cpp:2288
struct _OGRPreparedGeometry OGRPreparedGeometry
Definition: ogr_geometry.h:2924
virtual void visit(OGRLinearRing *)=0
void * OGRGeometryH
Definition: ogr_api.h:60
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:125
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrlinestring.cpp:1870
ChildType ** end()
Definition: ogr_geometry.h:2346
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrmultisurface.cpp:99
const ChildType *const * end() const
Definition: ogr_geometry.h:2700
virtual void visit(OGRTriangle *)=0
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) override
Add a ring to a polygon.
Definition: ogrtriangle.cpp:246
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1883
virtual void visit(OGRMultiCurve *)=0
struct GEOSGeom_t * GEOSGeom
Definition: ogr_geometry.h:79
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:848
virtual void visit(const OGRPolygon *)=0
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:292
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2640
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1882
Definition: ogr_geometry.h:118
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2565
OGRCompoundCurve(const OGRCompoundCurve &other)
Copy constructor.
ChildType ** end()
Definition: ogr_geometry.h:1627
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1461
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:892
const ChildType *const * begin() const
Definition: ogr_geometry.h:2773
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1459
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:621
virtual int getDimension() const =0
Get the dimension of this object.
OGRLinearRing * toLinearRing()
Definition: ogr_geometry.h:580
int OGRErr
Definition: ogr_core.h:290
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrlinestring.cpp:2535
OGRCurvePolygon * toCurvePolygon()
Definition: ogr_geometry.h:664
virtual void segmentize(double dfMaxLength)
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrgeometry.cpp:784
virtual void visit(OGRMultiLineString *)=0
virtual void visit(OGRCircularString *)=0
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2790
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1702
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:86
OGRPolygon * toPolygon()
Definition: ogr_geometry.h:636
OGRGeometryCollection * toGeometryCollection()
Definition: ogr_geometry.h:678
virtual void visit(OGRLineString *)=0
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrlinestring.cpp:208
const OGRMultiCurve * toMultiCurve() const
Definition: ogr_geometry.h:741
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:238
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2639
OGRwkbGeometryType
Definition: ogr_core.h:318
ChildType ** end()
Definition: ogr_geometry.h:2254
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:639
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition: ogrmulticurve.cpp:85
OGRCircularString(const OGRCircularString &other)
Copy constructor.
ChildType ** begin()
Definition: ogr_geometry.h:2542
const ChildType *const * end() const
Definition: ogr_geometry.h:1813
#define CPL_WARN_UNUSED_RESULT
Definition: cpl_port.h:939
Definition: ogr_geometry.h:2037
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2793
const ChildType *const * end() const
Definition: ogr_geometry.h:2260
const OGRMultiPoint * toMultiPoint() const
Definition: ogr_geometry.h:699
virtual ~IOGRGeometryVisitor()=default
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrcurvepolygon.cpp:175
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:870
ChildType ** begin()
Definition: ogr_geometry.h:1951
Definition: ogr_geometry.h:239
OGRErr removeRing(int iIndex, bool bDelete=true)
Remove a geometry from the container.
Definition: ogrcurvepolygon.cpp:339
OGRMultiLineString(const OGRMultiLineString &other)
Copy constructor.
ChildType ** end()
Definition: ogr_geometry.h:2133
const ChildType *const * begin() const
Definition: ogr_geometry.h:1957
const OGRMultiSurface * toMultiSurface() const
Definition: ogr_geometry.h:755
ChildType ** begin()
Definition: ogr_geometry.h:2131
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:857
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
const OGRSurface * toSurface() const
Definition: ogr_geometry.h:629
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:362
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:829
virtual int WkbSize() const =0
Returns size of related binary representation.
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:365
OGRCurvePolygon & operator=(const OGRCurvePolygon &other)
Assignment operator.
Definition: ogrcurvepolygon.cpp:88
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Definition: ogr_geometry.h:2943
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:186
const ChildType *const * begin() const
Definition: ogr_geometry.h:2548
Definition: ogr_geometry.h:927
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2414
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrcurvepolygon.cpp:708
virtual double get_Length() const override
Returns the length of the curve.
Definition: ogrlinestring.cpp:1968
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:855
void visit(OGRPoint *) override
Definition: ogr_geometry.h:170
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2637
OGRCompoundCurve()
Create an empty compound curve.
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:726
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: ogr_geometry.h:81
ChildType ** end()
Definition: ogr_geometry.h:1953
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrgeometrycollection.cpp:193
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
OGRMultiPoint()
Create an empty multi point collection.
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRPolyhedralSurface & operator=(const OGRPolyhedralSurface &other)
Assignment operator.
Definition: ogrpolyhedralsurface.cpp:80
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2365
virtual void visit(OGRMultiPolygon *)=0
OGRMultiPolygon()
Create an empty multi polygon collection.
Definition: ogr_geometry.h:1315
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Definition: ogr_geometry.h:798
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2077
const OGRGeometryCollection * toGeometryCollection() const
Definition: ogr_geometry.h:685
virtual void Value(double, OGRPoint *) const override
Fetch point at given distance along curve.
Definition: ogrlinestring.cpp:2010
ChildType ** begin()
Definition: ogr_geometry.h:1805
const OGRMultiPolygon * toMultiPolygon() const
Definition: ogr_geometry.h:727
virtual void visit(const OGRPoint *)=0
static OGRLinearRing * CastToLinearRing(OGRCurve *poCurve)
Cast to linear ring.
Definition: ogrcurve.cpp:375
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2723
OGRPolygon ChildType
Definition: ogr_geometry.h:2425
~OGRTriangulatedSurface()
Destructor.
ChildType ** begin()
Definition: ogr_geometry.h:2613
OGRMultiPoint * toMultiPoint()
Definition: ogr_geometry.h:692
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Definition: ogrgeometry.cpp:2361
double y
Definition: ogr_geometry.h:75
virtual void visit(const OGRTriangulatedSurface *)=0
const OGRCurve * toCurve() const
Definition: ogr_geometry.h:545
const OGRMultiLineString * toMultiLineString() const
Definition: ogr_geometry.h:713
virtual void visit(const OGRTriangle *)=0
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1284
virtual void setMeasured(OGRBoolean bIsMeasured) override
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:699
OGRPolygon()
Create an empty polygon.
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition: ogrcurve.cpp:416
const OGRCurvePolygon * toUpperClass() const
Definition: ogr_geometry.h:2006
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1286
Definition: ogr_geometry.h:1914
Definition: ogr_geometry.h:2517
Definition: ogr_geometry.h:1764
double getM() const
Definition: ogr_geometry.h:859
virtual void getEnvelope(OGREnvelope *psEnvelope) const =0
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2488
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:266
virtual OGRBoolean Equals(const OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
virtual void visit(OGRPolygon *)=0
virtual ~IOGRConstGeometryVisitor()=default
virtual double get_Length() const =0
Returns the length of the curve.
virtual void visit(const OGRLineString *)=0
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:126
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrlinestring.cpp:141
const OGRPolyhedralSurface * toPolyhedralSurface() const
Definition: ogr_geometry.h:769
OGRMultiLineString * toMultiLineString()
Definition: ogr_geometry.h:706
OGRPolyhedralSurface(const OGRPolyhedralSurface &poGeom)
Copy constructor.
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2769
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
virtual OGRBoolean Within(const OGRGeometry *) const
Test for containment.
Definition: ogrgeometry.cpp:4835
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrgeometrycollection.cpp:176
virtual void visit(const OGRCircularString *)=0
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1463
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1048
OGRCurvePolygon * toUpperClass()
Definition: ogr_geometry.h:2004
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrcurvepolygon.cpp:495
virtual void visit(const OGRMultiPoint *)=0
OGRTriangle()
Constructor.
bool operator!=(const OGRGeometry &other) const
Definition: ogr_geometry.h:352
const ChildType *const * begin() const
Definition: ogr_geometry.h:2436
void visit(const OGRPoint *) override
Definition: ogr_geometry.h:244
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolygon.cpp:298
OGRwkbVariant
Definition: ogr_core.h:424
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:307
OGRPoint ChildType
Definition: ogr_geometry.h:969
OGRCurve ChildType
Definition: ogr_geometry.h:1620
OGRLineString(const OGRLineString &other)
Copy constructor.
OGRLineString * toUpperClass()
Definition: ogr_geometry.h:1360
const ChildType *const * end() const
Definition: ogr_geometry.h:2139
OGRCompoundCurve * toCompoundCurve()
Definition: ogr_geometry.h:608
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:740
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:853
virtual void visit(const OGRCurvePolygon *)=0
virtual double get_Area() const =0
Get the area of the (closed) curve.
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Definition: ogr_geometry.h:511
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRTriangulatedSurface()
Constructor.
ChildType ** end()
Definition: ogr_geometry.h:2769
Definition: ogr_geometry.h:165
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1365
Generated for GDAL by
1.8.20.