32#ifndef OGR_GEOMETRY_H_INCLUDED
33#define OGR_GEOMETRY_H_INCLUDED
49#ifndef DEFINEH_OGRGeometryH
50#define DEFINEH_OGRGeometryH
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;
356 virtual int getCoordinateDimension()
const;
357 int CoordinateDimension()
const;
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) );
398 virtual void dumpReadable( FILE *,
const char * =
nullptr
399 ,
char** papszOptions =
nullptr )
const;
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); }
552 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
559 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
566 {
return cpl::down_cast<OGRLineString*>(
this); }
573 {
return cpl::down_cast<const OGRLineString*>(
this); }
580 {
return cpl::down_cast<OGRLinearRing*>(
this); }
587 {
return cpl::down_cast<const OGRLinearRing*>(
this); }
594 {
return cpl::down_cast<OGRCircularString*>(
this); }
601 {
return cpl::down_cast<const OGRCircularString*>(
this); }
608 {
return cpl::down_cast<OGRCompoundCurve*>(
this); }
615 {
return cpl::down_cast<const OGRCompoundCurve*>(
this); }
622 {
return cpl::down_cast<OGRSurface*>(
this); }
629 {
return cpl::down_cast<const OGRSurface*>(
this); }
636 {
return cpl::down_cast<OGRPolygon*>(
this); }
643 {
return cpl::down_cast<const OGRPolygon*>(
this); }
650 {
return cpl::down_cast<OGRTriangle*>(
this); }
657 {
return cpl::down_cast<const OGRTriangle*>(
this); }
664 {
return cpl::down_cast<OGRCurvePolygon*>(
this); }
671 {
return cpl::down_cast<const OGRCurvePolygon*>(
this); }
678 {
return cpl::down_cast<OGRGeometryCollection*>(
this); }
685 {
return cpl::down_cast<const OGRGeometryCollection*>(
this); }
692 {
return cpl::down_cast<OGRMultiPoint*>(
this); }
699 {
return cpl::down_cast<const OGRMultiPoint*>(
this); }
706 {
return cpl::down_cast<OGRMultiLineString*>(
this); }
713 {
return cpl::down_cast<const OGRMultiLineString*>(
this); }
720 {
return cpl::down_cast<OGRMultiPolygon*>(
this); }
727 {
return cpl::down_cast<const OGRMultiPolygon*>(
this); }
734 {
return cpl::down_cast<OGRMultiCurve*>(
this); }
741 {
return cpl::down_cast<const OGRMultiCurve*>(
this); }
748 {
return cpl::down_cast<OGRMultiSurface*>(
this); }
755 {
return cpl::down_cast<const OGRMultiSurface*>(
this); }
762 {
return cpl::down_cast<OGRPolyhedralSurface*>(
this); }
769 {
return cpl::down_cast<const OGRPolyhedralSurface*>(
this); }
776 {
return cpl::down_cast<OGRTriangulatedSurface*>(
this); }
783 {
return cpl::down_cast<const OGRTriangulatedSurface*>(
this); }
788struct CPL_DLL OGRGeometryUniquePtrDeleter
819 OGRPoint(
double x,
double y,
double z );
820 OGRPoint(
double x,
double y,
double z,
double m );
827 int WkbSize()
const override;
828 OGRErr importFromWkb(
const unsigned char *,
831 int& nBytesConsumedOut )
override;
836 OGRErr importFromWkt(
const char ** )
override;
837 OGRErr exportToWkt(
char ** ppszDstText,
842 virtual int getDimension()
const 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; }
861 virtual void setCoordinateDimension(
int nDimension )
override;
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); }
887 virtual const char *getGeometryName()
const override;
890 virtual void flattenTo2D()
override;
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;
986 virtual int get_IsClosed()
const;
989 const char*
const* papszOptions =
nullptr)
991 virtual int getDimension()
const override;
1002 {
return cpl::down_cast<OGRSimpleCurve*>(
this); }
1007 {
return cpl::down_cast<const OGRSimpleCurve*>(
this); }
1016inline OGRCurve::ConstIterator
begin(
const OGRCurve* poCurve) {
return poCurve->begin(); }
1018inline 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;
1220inline OGRSimpleCurve::Iterator
begin(
OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1222inline OGRSimpleCurve::Iterator
end(
OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1225inline OGRSimpleCurve::ConstIterator
begin(
const OGRSimpleCurve* poCurve) {
return poCurve->begin(); }
1227inline OGRSimpleCurve::ConstIterator
end(
const OGRSimpleCurve* poCurve) {
return poCurve->end(); }
1251 virtual OGRCurveCasterToLineString GetCasterToLineString()
1253 virtual OGRCurveCasterToLinearRing GetCasterToLinearRing()
1256 virtual double get_AreaOfCurveSegments()
const override;
1268 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
1269 const char*
const* papszOptions =
nullptr )
1272 const char*
const* papszOptions =
nullptr )
const override;
1277 virtual const char *getGeometryName()
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()
1407 virtual int IntersectsPoint(
const OGRPoint* p )
const override;
1408 virtual int ContainsPoint(
const OGRPoint* p )
const override;
1409 virtual double get_AreaOfCurveSegments()
const override;
1420 virtual OGRErr importFromWkb(
const unsigned char *,
1423 int& nBytesConsumedOut )
override;
1428 OGRErr importFromWkt(
const char ** )
override;
1429 virtual OGRErr exportToWkt(
char ** ppszDstText,
1435 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1436 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1439 virtual double get_Length()
const override;
1440 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
1441 const char*
const* papszOptions =
nullptr )
1443 virtual void Value(
double,
OGRPoint * )
const override;
1444 virtual double get_Area()
const override;
1448 virtual const char *getGeometryName()
const override;
1449 virtual void segmentize(
double dfMaxLength )
override;
1450 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
1453 double dfMaxAngleStepSizeDegrees = 0,
1454 const char*
const* papszOptions =
nullptr)
const override;
1480class 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;
1633 virtual OGRErr importFromWkb(
const unsigned char *,
1636 int& nBytesConsumedOut )
override;
1641 OGRErr importFromWkt(
const char ** )
override;
1642 virtual OGRErr exportToWkt(
char ** ppszDstText,
1648 virtual void empty()
override;
1649 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
1650 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
1654 virtual double get_Length()
const override;
1655 virtual void StartPoint(
OGRPoint * )
const override;
1656 virtual void EndPoint(
OGRPoint * )
const override;
1657 virtual void Value(
double,
OGRPoint * )
const override;
1658 virtual OGRLineString* CurveToLine(
double dfMaxAngleStepSizeDegrees = 0,
1659 const char*
const* papszOptions =
nullptr )
1662 virtual int getNumPoints()
const override;
1663 virtual double get_AreaOfCurveSegments()
const override;
1664 virtual double get_Area()
const override;
1670 int getNumCurves()
const;
1672 const OGRCurve *getCurve(
int )
const;
1675 virtual void setCoordinateDimension(
int nDimension )
override;
1676 virtual void set3D(
OGRBoolean bIs3D )
override;
1677 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
1682 OGRErr addCurveDirectly(
OGRCurve*,
double dfToleranceEps = 1e-14 );
1688 virtual const char *getGeometryName()
const override;
1690 virtual void flattenTo2D()
override;
1691 virtual void segmentize(
double dfMaxLength)
override;
1692 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE)
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;
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;
2055 virtual const char *getGeometryName()
const override;
2059 virtual OGRErr importFromWkb(
const unsigned char *,
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;
2137 virtual const char *getGeometryName()
const override;
2140 virtual void empty()
override;
2142 virtual void flattenTo2D()
override;
2144 virtual void segmentize(
double dfMaxLength)
override;
2145 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
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;
2155 virtual OGRErr importFromWkb(
const unsigned char *,
2158 int& nBytesConsumedOut )
override;
2163 OGRErr importFromWkt(
const char ** )
override;
2165 virtual OGRErr exportToWkt(
char ** ppszDstText,
2169 virtual double get_Length()
const;
2170 virtual double get_Area()
const;
2173 virtual int getDimension()
const override;
2174 virtual void getEnvelope( OGREnvelope * psEnvelope )
const override;
2175 virtual void getEnvelope( OGREnvelope3D * psEnvelope )
const override;
2178 int getNumGeometries()
const;
2186 virtual void setCoordinateDimension(
int nDimension )
override;
2187 virtual void set3D(
OGRBoolean bIs3D )
override;
2188 virtual void setMeasured(
OGRBoolean bIsMeasured )
override;
2191 virtual OGRErr removeGeometry(
int iIndex,
int bDelete = TRUE );
2195 void closeRings()
override;
2197 virtual void swapXY()
override;
2258 virtual const char *getGeometryName()
const override;
2261 OGRErr importFromWkt(
const char ** )
override;
2270 virtual int getDimension()
const override;
2273 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
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()
2548 virtual const char *getGeometryName()
const override;
2589 OGRErr importFromWkt_Bracketed(
const char **,
int bHasM,
int bHasZ );
2619 virtual const char *getGeometryName()
const override;
2622 OGRErr importFromWkt(
const char ** )
override;
2627 virtual int getDimension()
const override;
2638 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2698 virtual const char *getGeometryName()
const override;
2701 OGRErr importFromWkt(
const char ** )
override;
2706 virtual int getDimension()
const override;
2709 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
2773 virtual const char *getGeometryName()
const override;
2779 virtual OGRBoolean hasCurveGeometry(
int bLookForNonLinear = FALSE )
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);
2916struct CPL_DLL OGRPreparedGeometryUniquePtrDeleter
The CPLJSONArray class holds JSON object from CPLJSONDocument.
Definition: cpl_json.h:54
Definition: ogr_geometry.h:192
virtual void visit(const OGRCurvePolygon *)=0
virtual void visit(const OGRPolyhedralSurface *)=0
virtual void visit(const OGRCompoundCurve *)=0
virtual void visit(const OGRMultiLineString *)=0
virtual void visit(const OGRTriangulatedSurface *)=0
virtual void visit(const OGRPolygon *)=0
virtual void visit(const OGRMultiPolygon *)=0
virtual void visit(const OGRTriangle *)=0
virtual void visit(const OGRLineString *)=0
virtual void visit(const OGRMultiPoint *)=0
virtual void visit(const OGRMultiCurve *)=0
virtual void visit(const OGRGeometryCollection *)=0
virtual void visit(const OGRPoint *)=0
virtual ~IOGRConstGeometryVisitor()=default
virtual void visit(const OGRMultiSurface *)=0
virtual void visit(const OGRLinearRing *)=0
virtual void visit(const OGRCircularString *)=0
Definition: ogr_geometry.h:118
virtual void visit(OGRMultiSurface *)=0
virtual void visit(OGRLinearRing *)=0
virtual void visit(OGRTriangle *)=0
virtual void visit(OGRCircularString *)=0
virtual void visit(OGRPolygon *)=0
virtual void visit(OGRLineString *)=0
virtual void visit(OGRCompoundCurve *)=0
virtual void visit(OGRTriangulatedSurface *)=0
virtual void visit(OGRPoint *)=0
virtual void visit(OGRCurvePolygon *)=0
virtual void visit(OGRGeometryCollection *)=0
virtual void visit(OGRPolyhedralSurface *)=0
virtual void visit(OGRMultiPolygon *)=0
virtual ~IOGRGeometryVisitor()=default
virtual void visit(OGRMultiLineString *)=0
virtual void visit(OGRMultiPoint *)=0
virtual void visit(OGRMultiCurve *)=0
Definition: ogr_geometry.h:1395
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1461
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1459
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1457
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1462
Definition: ogr_geometry.h:1580
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1698
const ChildType *const * end() const
Definition: ogr_geometry.h:1629
const ChildType *const * begin() const
Definition: ogr_geometry.h:1627
OGRCurve ChildType
Definition: ogr_geometry.h:1616
ChildType ** end()
Definition: ogr_geometry.h:1623
ChildType ** begin()
Definition: ogr_geometry.h:1621
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1697
Definition: ogr_geometry.h:1760
OGRCurve * stealExteriorRingCurve()
"Steal" reference to external ring.
Definition: ogrcurvepolygon.cpp:310
OGRCurve * getExteriorRingCurve()
Fetch reference to external polygon ring.
Definition: ogrcurvepolygon.cpp:204
OGRCurve * getInteriorRingCurve(int)
Fetch reference to indicated internal ring.
Definition: ogrcurvepolygon.cpp:269
virtual OGRBoolean Contains(const OGRGeometry *) const override
Test for containment.
Definition: ogrcurvepolygon.cpp:786
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrcurvepolygon.cpp:168
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1878
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction,...
Definition: ogrcurvepolygon.cpp:131
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
static OGRPolygon * CastToPolygon(OGRCurvePolygon *poCP)
Convert to polygon.
Definition: ogrcurvepolygon.cpp:833
virtual double get_Area() const override
Get the area of the surface object.
Definition: ogrcurvepolygon.cpp:671
virtual OGRErr transform(OGRCoordinateTransformation *poCT) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrcurvepolygon.cpp:661
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrcurvepolygon.cpp:158
virtual OGRBoolean Intersects(const OGRGeometry *) const override
Do these features intersect?
Definition: ogrcurvepolygon.cpp:802
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrcurvepolygon.cpp:743
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrcurvepolygon.cpp:642
virtual void segmentize(double dfMaxLength) override
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrcurvepolygon.cpp:729
OGRCurve ChildType
Definition: ogr_geometry.h:1796
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogrcurvepolygon.cpp:720
OGRCurvePolygon()
Create an empty curve polygon.
Definition: ogrcurvepolygon.cpp:52
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrcurvepolygon.cpp:106
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrcurvepolygon.cpp:711
const ChildType *const * end() const
Definition: ogr_geometry.h:1809
virtual OGRErr addRing(OGRCurve *)
Add a ring to a polygon.
Definition: ogrcurvepolygon.cpp:365
const ChildType *const * begin() const
Definition: ogr_geometry.h:1807
ChildType ** begin()
Definition: ogr_geometry.h:1801
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrcurvepolygon.cpp:691
virtual void setMeasured(OGRBoolean bIsMeasured) override
Add or remove the M coordinate dimension.
Definition: ogrcurvepolygon.cpp:702
ChildType ** end()
Definition: ogr_geometry.h:1803
int getNumInteriorRings() const
Fetch the number of internal rings.
Definition: ogrcurvepolygon.cpp:241
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1879
OGRErr removeRing(int iIndex, bool bDelete=true)
Remove a geometry from the container.
Definition: ogrcurvepolygon.cpp:342
virtual void set3D(OGRBoolean bIs3D) override
Add or remove the Z coordinate dimension.
Definition: ogrcurvepolygon.cpp:697
Definition: ogr_geometry.h:926
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const =0
Return a linestring from a curve geometry.
virtual double get_Length() const =0
Returns the length of the curve.
virtual int IntersectsPoint(const OGRPoint *p) const
Returns if a point intersects a (closed) curve.
Definition: ogrcurve.cpp:418
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:1006
virtual void StartPoint(OGRPoint *) const =0
Return the curve start point.
virtual void EndPoint(OGRPoint *) const =0
Return the curve end point.
virtual int getNumPoints() const =0
Return the number of points of a curve geometry.
OGRPoint ChildType
Definition: ogr_geometry.h:968
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:1001
virtual int ContainsPoint(const OGRPoint *p) const
Returns if a point is contained in a (closed) curve.
Definition: ogrcurve.cpp:398
virtual void Value(double, OGRPoint *) const =0
Fetch point at given distance along curve.
virtual OGRPointIterator * getPointIterator() const =0
Returns a point iterator over the curve.
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
virtual double get_Area() const =0
Get the area of the (closed) curve.
Definition: ogr_geometry.h:239
void visit(const OGRPoint *) override
Definition: ogr_geometry.h:244
Definition: ogr_geometry.h:165
void visit(OGRPoint *) override
Definition: ogr_geometry.h:170
Definition: ogr_geometry.h:2092
ChildType ** end()
Definition: ogr_geometry.h:2128
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2199
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2200
const ChildType *const * begin() const
Definition: ogr_geometry.h:2132
const ChildType *const * end() const
Definition: ogr_geometry.h:2134
ChildType ** begin()
Definition: ogr_geometry.h:2126
OGRGeometry ChildType
Definition: ogr_geometry.h:2121
Definition: ogr_geometry.h:2814
static OGRErr createFromWkt(char **ppszInput, OGRSpatialReference *poSRS, OGRGeometry **ppoGeom)
Definition: ogr_geometry.h:2838
Definition: ogr_geometry.h:287
const OGRSurface * toSurface() const
Definition: ogr_geometry.h:628
const OGRCurvePolygon * toCurvePolygon() const
Definition: ogr_geometry.h:670
const OGRMultiCurve * toMultiCurve() const
Definition: ogr_geometry.h:740
const OGRPolyhedralSurface * toPolyhedralSurface() const
Definition: ogr_geometry.h:768
const OGRMultiPoint * toMultiPoint() const
Definition: ogr_geometry.h:698
virtual void empty()=0
Clear geometry information. This restores the geometry to its initial state after construction,...
const OGRMultiPolygon * toMultiPolygon() const
Definition: ogr_geometry.h:726
virtual OGRBoolean Equals(const OGRGeometry *) const =0
Returns TRUE if two geometries are equivalent.
OGRPolyhedralSurface * toPolyhedralSurface()
Definition: ogr_geometry.h:761
const OGRMultiSurface * toMultiSurface() const
Definition: ogr_geometry.h:754
OGRPoint * toPoint()
Definition: ogr_geometry.h:523
bool operator!=(const OGRGeometry &other) const
Definition: ogr_geometry.h:352
OGRTriangle * toTriangle()
Definition: ogr_geometry.h:649
OGRLineString * toLineString()
Definition: ogr_geometry.h:565
const OGRLinearRing * toLinearRing() const
Definition: ogr_geometry.h:586
const OGRPoint * toPoint() const
Definition: ogr_geometry.h:530
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=nullptr) const CPL_WARN_UNUSED_RESULT
Return curve version of this geometry.
Definition: ogrgeometry.cpp:3153
OGRMultiLineString * toMultiLineString()
Definition: ogr_geometry.h:705
OGRMultiSurface * toMultiSurface()
Definition: ogr_geometry.h:747
static OGRGeometry * FromHandle(OGRGeometryH hGeom)
Definition: ogr_geometry.h:516
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
virtual void accept(IOGRConstGeometryVisitor *visitor) const =0
const OGRGeometryCollection * toGeometryCollection() const
Definition: ogr_geometry.h:684
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
const OGRMultiLineString * toMultiLineString() const
Definition: ogr_geometry.h:712
const OGRCircularString * toCircularString() const
Definition: ogr_geometry.h:600
OGRPolygon * toPolygon()
Definition: ogr_geometry.h:635
bool operator==(const OGRGeometry &other) const
Definition: ogr_geometry.h:349
OGRLinearRing * toLinearRing()
Definition: ogr_geometry.h:579
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:364
virtual void accept(IOGRGeometryVisitor *visitor)=0
OGRMultiCurve * toMultiCurve()
Definition: ogr_geometry.h:733
const OGRCompoundCurve * toCompoundCurve() const
Definition: ogr_geometry.h:614
virtual OGRErr transform(OGRCoordinateTransformation *poCT)=0
Apply arbitrary coordinate transformation to geometry.
virtual void flattenTo2D()=0
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
virtual int getDimension() const =0
Get the dimension of this object.
OGRGeometryCollection * toGeometryCollection()
Definition: ogr_geometry.h:677
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
OGRMultiPolygon * toMultiPolygon()
Definition: ogr_geometry.h:719
const OGRPolygon * toPolygon() const
Definition: ogr_geometry.h:642
OGRCompoundCurve * toCompoundCurve()
Definition: ogr_geometry.h:607
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 OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
const OGRLineString * toLineString() const
Definition: ogr_geometry.h:572
OGRCircularString * toCircularString()
Definition: ogr_geometry.h:593
const OGRCurve * toCurve() const
Definition: ogr_geometry.h:544
OGRCurvePolygon * toCurvePolygon()
Definition: ogr_geometry.h:663
const OGRSimpleCurve * toSimpleCurve() const
Definition: ogr_geometry.h:558
static OGRGeometryH ToHandle(OGRGeometry *poGeom)
Definition: ogr_geometry.h:510
OGRBoolean Is3D() const
Definition: ogr_geometry.h:362
OGRMultiPoint * toMultiPoint()
Definition: ogr_geometry.h:691
virtual void closeRings()
Force rings to be closed.
Definition: ogrgeometry.cpp:4833
const OGRTriangulatedSurface * toTriangulatedSurface() const
Definition: ogr_geometry.h:782
const OGRTriangle * toTriangle() const
Definition: ogr_geometry.h:656
virtual OGRErr importFromWkt(const char **ppszInput)=0
Assign geometry from well known text data.
OGRSurface * toSurface()
Definition: ogr_geometry.h:621
OGRSimpleCurve * toSimpleCurve()
Definition: ogr_geometry.h:551
OGRTriangulatedSurface * toTriangulatedSurface()
Definition: ogr_geometry.h:775
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const =0
Convert a geometry into well known text format.
OGRCurve * toCurve()
Definition: ogr_geometry.h:537
Definition: ogr_geometry.h:1242
OGRSimpleCurve * toUpperClass()
Definition: ogr_geometry.h:1280
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1285
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1284
virtual double get_Area() const override
Get the area of the (closed) curve.
const OGRSimpleCurve * toUpperClass() const
Definition: ogr_geometry.h:1282
Definition: ogr_geometry.h:1313
OGRLineString * toUpperClass()
Definition: ogr_geometry.h:1358
const OGRLineString * toUpperClass() const
Definition: ogr_geometry.h:1360
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:1363
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:1362
Definition: ogr_geometry.h:2665
const ChildType *const * begin() const
Definition: ogr_geometry.h:2693
const ChildType *const * end() const
Definition: ogr_geometry.h:2695
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2718
ChildType ** end()
Definition: ogr_geometry.h:2689
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2715
OGRCurve ChildType
Definition: ogr_geometry.h:2682
ChildType ** begin()
Definition: ogr_geometry.h:2687
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2713
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2717
Definition: ogr_geometry.h:2744
OGRLineString ChildType
Definition: ogr_geometry.h:2757
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2783
ChildType ** end()
Definition: ogr_geometry.h:2764
const ChildType *const * end() const
Definition: ogr_geometry.h:2770
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2788
const ChildType *const * begin() const
Definition: ogr_geometry.h:2768
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2787
ChildType ** begin()
Definition: ogr_geometry.h:2762
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2785
Definition: ogr_geometry.h:2587
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2630
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2634
const ChildType *const * end() const
Definition: ogr_geometry.h:2616
ChildType ** begin()
Definition: ogr_geometry.h:2608
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2635
const ChildType *const * begin() const
Definition: ogr_geometry.h:2614
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2632
OGRPoint ChildType
Definition: ogr_geometry.h:2603
ChildType ** end()
Definition: ogr_geometry.h:2610
Definition: ogr_geometry.h:2308
OGRPolygon ChildType
Definition: ogr_geometry.h:2334
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2365
const ChildType *const * end() const
Definition: ogr_geometry.h:2347
ChildType ** end()
Definition: ogr_geometry.h:2341
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2364
ChildType ** begin()
Definition: ogr_geometry.h:2339
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2360
const ChildType *const * begin() const
Definition: ogr_geometry.h:2345
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2362
Definition: ogr_geometry.h:2229
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2281
ChildType ** begin()
Definition: ogr_geometry.h:2247
OGRSurface ChildType
Definition: ogr_geometry.h:2242
const OGRGeometryCollection * toUpperClass() const
Definition: ogr_geometry.h:2279
const ChildType *const * begin() const
Definition: ogr_geometry.h:2253
const ChildType *const * end() const
Definition: ogr_geometry.h:2255
ChildType ** end()
Definition: ogr_geometry.h:2249
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2282
OGRGeometryCollection * toUpperClass()
Definition: ogr_geometry.h:2277
Definition: ogr_geometry.h:908
virtual OGRBoolean getNextPoint(OGRPoint *p)=0
Returns the next point followed by the iterator.
Definition: ogr_geometry.h:810
double getM() const
Definition: ogr_geometry.h:858
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:891
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:865
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
void setM(double mIn)
Definition: ogr_geometry.h:878
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:852
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:892
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:869
virtual OGRBoolean IsEmpty() const override
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:847
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:856
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:854
Definition: ogr_geometry.h:1910
virtual OGRGeometry * getLinearGeometry(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=nullptr) const override
Return, possibly approximate, non-curve version of this geometry.
Definition: ogrpolygon.cpp:840
OGRLinearRing ChildType
Definition: ogr_geometry.h:1942
ChildType ** begin()
Definition: ogr_geometry.h:1947
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrpolygon.cpp:623
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolygon.cpp:831
const OGRCurvePolygon * toUpperClass() const
Definition: ogr_geometry.h:2002
ChildType ** end()
Definition: ogr_geometry.h:1949
OGRErr importFromWkt(const char **) override
Definition: ogrpolygon.cpp:447
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 int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolygon.cpp:300
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolygon.cpp:374
const ChildType *const * begin() const
Definition: ogr_geometry.h:1953
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2005
const ChildType *const * end() const
Definition: ogr_geometry.h:1955
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2004
OGRCurvePolygon * toUpperClass()
Definition: ogr_geometry.h:2000
virtual void closeRings() override
Force rings to be closed.
Definition: ogrpolygon.cpp:809
Definition: ogr_geometry.h:2393
virtual OGRGeometry * clone() const override
Make a copy of this object.
Definition: ogrpolyhedralsurface.cpp:173
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known binary format.
Definition: ogrpolyhedralsurface.cpp:310
virtual OGRBoolean IsEmpty() const override
Checks if the PolyhedralSurface is empty.
Definition: ogrpolyhedralsurface.cpp:973
virtual void setMeasured(OGRBoolean bIsMeasured) override
Set the type as Measured.
Definition: ogrpolyhedralsurface.cpp:1001
virtual void setCoordinateDimension(int nDimension) override
Set the coordinate dimension.
Definition: ogrpolyhedralsurface.cpp:1022
int getNumGeometries() const
Fetch number of geometries in PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:914
virtual void assignSpatialReference(OGRSpatialReference *poSR) override
Assign spatial reference to this object.
Definition: ogrpolyhedralsurface.cpp:1082
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const override
Convert a geometry into well known text format.
Definition: ogrpolyhedralsurface.cpp:456
ChildType ** end()
Definition: ogr_geometry.h:2427
static OGRMultiPolygon * CastToMultiPolygon(OGRPolyhedralSurface *poPS)
Casts the OGRPolyhedralSurface to an OGRMultiPolygon.
Definition: ogrpolyhedralsurface.cpp:825
const ChildType *const * end() const
Definition: ogr_geometry.h:2433
virtual void swapXY() override
Swap x and y coordinates.
Definition: ogrpolyhedralsurface.cpp:1037
virtual int WkbSize() const override
Returns size of related binary representation.
Definition: ogrpolyhedralsurface.cpp:132
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition: ogrpolyhedralsurface.cpp:200
virtual void flattenTo2D() override
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrpolyhedralsurface.cpp:621
const ChildType *const * begin() const
Definition: ogr_geometry.h:2431
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const override
Returns if this geometry is or has curve geometry.
Definition: ogrpolyhedralsurface.cpp:1047
~OGRPolyhedralSurface() override
Destructor.
Definition: ogrpolyhedralsurface.cpp:74
ChildType ** begin()
Definition: ogr_geometry.h:2425
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrpolyhedralsurface.cpp:218
virtual void set3D(OGRBoolean bIs3D) override
Set the type as 3D geometry.
Definition: ogrpolyhedralsurface.cpp:986
OGRErr addGeometryDirectly(OGRGeometry *poNewGeom)
Add a geometry directly to the container.
Definition: ogrpolyhedralsurface.cpp:882
OGRErr importFromWkt(const char **) override
Definition: ogrpolyhedralsurface.cpp:360
virtual OGRBoolean Equals(const OGRGeometry *) const override
Returns TRUE if two geometries are equivalent.
Definition: ogrpolyhedralsurface.cpp:714
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2483
OGRPolygon ChildType
Definition: ogr_geometry.h:2420
virtual double get_Area() const override
Returns the area enclosed.
Definition: ogrpolyhedralsurface.cpp:754
virtual OGRErr transform(OGRCoordinateTransformation *) override
Apply arbitrary coordinate transformation to geometry.
Definition: ogrpolyhedralsurface.cpp:633
OGRGeometry * getGeometryRef(int i)
Fetch geometry from container.
Definition: ogrpolyhedralsurface.cpp:936
virtual OGRErr PointOnSurface(OGRPoint *) const override
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogrpolyhedralsurface.cpp:781
OGRPolyhedralSurface()
Create an empty PolyhedralSurface.
Definition: ogrpolyhedralsurface.cpp:47
virtual int getDimension() const override
Get the dimension of this object.
Definition: ogrpolyhedralsurface.cpp:146
virtual void empty() override
Clear geometry information. This restores the geometry to its initial state after construction,...
Definition: ogrpolyhedralsurface.cpp:155
OGRErr removeGeometry(int iIndex, int bDelete=TRUE)
Remove a geometry from the container.
Definition: ogrpolyhedralsurface.cpp:1073
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2484
Definition: ogr_geometry.h:64
OGRRawPoint(double xIn, double yIn)
Definition: ogr_geometry.h:70
double x
Definition: ogr_geometry.h:73
double y
Definition: ogr_geometry.h:75
OGRRawPoint()
Definition: ogr_geometry.h:67
Definition: ogr_geometry.h:1035
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:1161
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:1160
OGRPoint ChildType
Definition: ogr_geometry.h:1102
virtual int getNumPoints() const override
Fetch vertex count.
Definition: ogr_geometry.h:1158
Definition: ogr_spatialref.h:146
Definition: ogr_geometry.h:1725
virtual double get_Area() const =0
Get the area of the surface object.
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM ISurface::get_PointOnSurface() method.
Definition: ogr_geometry.h:1734
Definition: ogr_geometry.h:2033
virtual OGRErr importFromWkb(const unsigned char *, int, OGRwkbVariant, int &nBytesConsumedOut) override
Assign geometry from well known binary data.
Definition: ogrtriangle.cpp:193
virtual OGRwkbGeometryType getGeometryType() const override
Fetch geometry type.
Definition: ogrtriangle.cpp:165
const OGRPolygon * toUpperClass() const
Definition: ogr_geometry.h:2070
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2072
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2073
virtual OGRErr addRingDirectly(OGRCurve *poNewRing) override
Add a ring to a polygon.
Definition: ogrtriangle.cpp:251
OGRPolygon * toUpperClass()
Definition: ogr_geometry.h:2068
OGRTriangle & operator=(const OGRTriangle &other)
Assignment operator.
Definition: ogrtriangle.cpp:143
virtual const char * getGeometryName() const override
Fetch WKT name for geometry type.
Definition: ogrtriangle.cpp:156
Definition: ogr_geometry.h:2512
OGRTriangulatedSurface & operator=(const OGRTriangulatedSurface &other)
Assignment operator.
Definition: ogrtriangulatedsurface.cpp:88
virtual const char * getGeometryName() const override
Returns the geometry name of the TriangulatedSurface.
Definition: ogrtriangulatedsurface.cpp:120
virtual OGRwkbGeometryType getGeometryType() const override
Returns the WKB Type of TriangulatedSurface.
Definition: ogrtriangulatedsurface.cpp:134
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
const ChildType *const * begin() const
Definition: ogr_geometry.h:2543
OGRPolyhedralSurface * toUpperClass()
Definition: ogr_geometry.h:2555
virtual void accept(IOGRGeometryVisitor *visitor) override
Definition: ogr_geometry.h:2559
const OGRPolyhedralSurface * toUpperClass() const
Definition: ogr_geometry.h:2557
OGRTriangle ChildType
Definition: ogr_geometry.h:2532
virtual void accept(IOGRConstGeometryVisitor *visitor) const override
Definition: ogr_geometry.h:2560
ChildType ** begin()
Definition: ogr_geometry.h:2537
ChildType ** end()
Definition: ogr_geometry.h:2539
#define CPL_WARN_UNUSED_RESULT
Definition: cpl_port.h:929
unsigned char GByte
Definition: cpl_port.h:213
void * OGRGeometryH
Definition: ogr_api.h:60
int OGRBoolean
Definition: ogr_core.h:306
OGRwkbByteOrder
Definition: ogr_core.h:490
OGRwkbVariant
Definition: ogr_core.h:424
@ wkbVariantOldOgc
Definition: ogr_core.h:425
OGRwkbGeometryType
Definition: ogr_core.h:318
int OGRErr
Definition: ogr_core.h:290
std::unique_ptr< OGRPreparedGeometry, OGRPreparedGeometryUniquePtrDeleter > OGRPreparedGeometryUniquePtr
Definition: ogr_geometry.h:2925
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: ogr_geometry.h:81
struct _OGRPreparedGeometry OGRPreparedGeometry
Definition: ogr_geometry.h:2906
OGRwkbGeometryType OGRFromOGCGeomType(const char *pszGeomType)
Definition: ogrgeometry.cpp:2284
const char * OGRToOGCGeomType(OGRwkbGeometryType eGeomType)
Definition: ogrgeometry.cpp:2357
std::unique_ptr< OGRGeometry, OGRGeometryUniquePtrDeleter > OGRGeometryUniquePtr
Definition: ogr_geometry.h:797
struct GEOSGeom_t * GEOSGeom
Definition: ogr_geometry.h:79
void sfcgal_geometry_t
Definition: ogr_geometry.h:83
int OGRHasPreparedGeometrySupport()
Definition: ogrgeometry.cpp:5571
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:285
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Definition: ogrsf_frmts.h:290