|
SAGA API
v9.6
|
Go to the documentation of this file.
53 #ifndef HEADER_INCLUDED__SAGA_API__shapes_H
54 #define HEADER_INCLUDED__SAGA_API__shapes_H
173 virtual int Add_Point (
double x,
double y,
int iPart = 0) = 0;
178 virtual int Ins_Point (
double x,
double y,
int iPoint ,
int iPart = 0) = 0;
183 virtual int Set_Point (
double x,
double y,
int iPoint = 0,
int iPart = 0) = 0;
188 virtual int Del_Point (
int iPoint ,
int iPart = 0) = 0;
194 virtual void Set_Z (
double z,
int iPoint = 0,
int iPart = 0) { }
195 virtual double Get_Z (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( 0. ); }
204 Point.
z =
Get_Z(iPoint, iPart, bAscending);
210 virtual void Set_M (
double m,
int iPoint = 0,
int iPart = 0) { }
211 virtual double Get_M (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( 0. ); }
220 Point.
z =
Get_Z(iPoint, iPart, bAscending);
221 Point.
m =
Get_M(iPoint, iPart, bAscending);
270 virtual bool is_Valid (
void)
const {
return(
true ); }
281 virtual int Ins_Point (
double x,
double y,
int iPoint ,
int iPart = 0) {
return(
Set_Point(x, y, 0) ); }
286 virtual int Set_Point (
double x,
double y,
int iPoint = 0,
int iPart = 0) { m_Point.x = x; m_Point.y = y;
_Invalidate();
return( 1 ); }
291 virtual int Del_Point (
int iPoint ,
int iPart = 0) {
return( -1 ); }
294 virtual TSG_Point Get_Point (
int iPoint,
int iPart,
bool bAscending =
true)
const {
return( m_Point ); }
331 virtual double Get_Z (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( m_Z ); }
352 virtual double Get_M (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( m_M ); }
392 return( m_Points[bAscending ? iPoint :
m_nPoints - 1 - iPoint] );
404 int Ins_Point (
double x,
double y ,
int iPoint);
409 int Set_Point (
double x,
double y ,
int iPoint);
417 double Get_Z (
int iPoint,
bool bAscending =
true)
const {
return( m_Z && iPoint >= 0 && iPoint <
m_nPoints ? m_Z[bAscending ? iPoint :
m_nPoints - 1 - iPoint] : 0. ); }
426 Point.
z =
Get_Z(iPoint, bAscending);
432 double Get_M (
int iPoint,
bool bAscending =
true)
const {
return( m_M && iPoint >= 0 && iPoint <
m_nPoints ? m_M[bAscending ? iPoint :
m_nPoints - 1 - iPoint] : 0. ); }
441 Point.
z =
Get_Z(iPoint, bAscending);
442 Point.
m =
Get_M(iPoint, bAscending);
447 bool Add_Points (
CSG_Shape_Part *pPoints,
bool bAscending =
true);
471 virtual bool _Alloc_Memory (
int nPoints);
501 virtual CSG_Shape_Part *
Get_Part (
int iPart)
const {
return( iPart >= 0 && iPart < m_nParts ? m_pParts[iPart] : NULL ); }
510 virtual int Ins_Point (
double x,
double y,
int iPoint ,
int iPart = 0);
515 virtual int Set_Point (
double x,
double y,
int iPoint = 0,
int iPart = 0);
520 virtual int Del_Point (
int iPoint ,
int iPart = 0);
525 if( iPart >= 0 && iPart < m_nParts )
527 return( m_pParts[iPart]->
Get_Point(iPoint, bAscending) );
533 virtual void Set_Z (
double z,
int iPoint = 0,
int iPart = 0) {
if ( iPart >= 0 && iPart < m_nParts ) m_pParts[iPart]->Set_Z(z, iPoint); }
534 virtual double Get_Z (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( iPart >= 0 && iPart < m_nParts ? m_pParts[iPart]->
Get_Z( iPoint, bAscending) : 0. ); }
538 virtual void Set_M (
double m,
int iPoint = 0,
int iPart = 0) {
if ( iPart >= 0 && iPart < m_nParts ) m_pParts[iPart]->Set_M(m, iPoint); }
539 virtual double Get_M (
int iPoint = 0,
int iPart = 0,
bool bAscending =
true)
const {
return( iPart >= 0 && iPart < m_nParts ? m_pParts[iPart]->
Get_M( iPoint, bAscending) : 0. ); }
572 int _Add_Part (
void);
612 double Get_Length (
void);
613 double Get_Length (
int iPart);
652 bool is_Clockwise (
void) { _Update_Area();
return( m_bClockwise == 1 ); }
656 double Get_Area (
void) { _Update_Area();
return( m_Area ); }
692 void _Update_Area (
void);
711 bool is_Lake (
int iPart);
713 bool is_Clockwise (
int iPart);
715 double Get_Perimeter (
int iPart);
716 double Get_Perimeter (
void);
718 double Get_Area (
int iPart);
719 double Get_Area (
void);
730 bool is_OnEdge (
const CSG_Point &p,
int iPart);
731 bool is_OnEdge (
double x,
double y,
int iPart);
733 bool is_OnEdge (
double x,
double y);
735 bool Contains (
const CSG_Point &p,
int iPart);
736 bool Contains (
double x,
double y,
int iPart);
738 bool Contains (
double x,
double y);
743 double Get_Shared_Length (
CSG_Shape_Polygon *pPolygon,
bool bVertexCheck,
double Epsilon = 0.);
786 bool Create (
const char *File);
788 bool Create (
const wchar_t *File);
805 virtual bool Save (
const wchar_t *File,
int Format = 0) {
return(
Save(
CSG_String(File), Format) ); }
822 virtual bool Del_Shape (
sLong Index);
823 virtual bool Del_Shape (
CSG_Shape *pShape);
831 bool Make_Clean (
void);
834 virtual const CSG_Rect & Get_Selection_Extent (
void);
837 virtual bool Select (
sLong Index ,
bool bInvert =
false);
839 virtual bool Select (
const TSG_Rect &Extent ,
bool bInvert =
false);
918 virtual bool is_Leaf (
void)
const {
return(
false ); }
919 virtual bool is_Node (
void)
const {
return(
false ); }
923 double Get_xMin (
void)
const {
return( m_Extent.xMin ); }
924 double Get_xCenter (
void)
const {
return( m_Extent.Get_XCenter() ); }
925 double Get_xMax (
void)
const {
return( m_Extent.xMax ); }
926 double Get_yMin (
void)
const {
return( m_Extent.yMin ); }
927 double Get_yCenter (
void)
const {
return( m_Extent.Get_YCenter() ); }
928 double Get_yMax (
void)
const {
return( m_Extent.yMax ); }
929 double Get_Size (
void)
const {
return( m_Extent.Get_XRange() ); }
932 bool Contains (
double x,
double y)
const {
return( m_Extent.Contains(x, y) ); }
975 virtual bool is_Leaf (
void)
const {
return(
true ); }
978 double Get_X (
void)
const {
return( m_Point.x ); }
979 double Get_Y (
void)
const {
return( m_Point.y ); }
980 double Get_Z (
void)
const {
return( m_z ); }
1016 double Get_Sum (
void) {
return( s_z.Get_Sum () ); }
1038 m_z = s_z.Get_Mean();
1052 virtual bool is_Node (
void)
const {
return(
true ); }
1057 bool Add_Point (
double x,
double y,
double z);
1115 bool Create (
const CSG_Rect &Extent,
bool bStatistics =
false);
1118 bool Create (
CSG_Shapes *pShapes,
int Attribute,
bool bStatistics =
false);
1120 void Destroy (
void);
1122 bool Add_Point (
double x,
double y,
double z);
1123 bool Add_Point (
const TSG_Point &p,
double z);
1130 bool is_Okay (
void)
const {
return( m_pRoot != NULL ); }
1137 bool Get_Nearest_Point (
const TSG_Point &p,
TSG_Point &Point,
double &Value,
double &Distance)
const;
1138 bool Get_Nearest_Point (
double x,
double y,
TSG_Point &Point,
double &Value,
double &Distance)
const;
1140 size_t Get_Nearest_Points (
CSG_Points_3D &Points,
const TSG_Point &p,
size_t maxPoints,
double Radius = 0.,
int iQuadrant = -1)
const;
1141 size_t Get_Nearest_Points (
CSG_Points_3D &Points,
double x,
double y,
size_t maxPoints,
double Radius = 0.,
int iQuadrant = -1)
const;
1143 size_t Select_Nearest_Points (
const TSG_Point &p,
size_t maxPoints,
double Radius = 0.,
int iQuadrant = -1);
1144 size_t Select_Nearest_Points (
double x,
double y,
size_t maxPoints,
double Radius = 0.,
int iQuadrant = -1);
1148 double Get_Selected_Z (
size_t i)
const {
return( i >= (
size_t)m_Selection.Get_Size() ? 0. : (((TLeaf *)m_Selection.Get_Array()) + i)->pLeaf->Get_Z() ); }
1149 double Get_Selected_Distance (
size_t i)
const {
return( i >= (
size_t)m_Selection.Get_Size() ? -1. : (((TLeaf *)m_Selection.Get_Array()) + i)->Distance ); }
1169 typedef struct SLeaf
1188 bool _Check_Root (
double x,
double y);
1190 bool _Quadrant_Contains (
double x,
double y,
int iQuadrant,
const TSG_Point &p)
const;
1191 bool _Radius_Contains (
double x,
double y,
double r,
const TSG_Point &p)
const;
1192 bool _Radius_Contains (
double x,
double y,
double r,
int iQuadrant,
const TSG_Point &p)
const;
1193 bool _Quadrant_Intersects (
double x,
double y,
int iQuadrant,
CSG_PRQuadTree_Item *pItem)
const;
1195 bool _Radius_Intersects (
double x,
double y,
double r,
int iQuadrant,
CSG_PRQuadTree_Item *pItem)
const;
1199 TLeaf * _Get_Selected (
const CSG_Array &Selection,
size_t i)
const;
1202 void _Select_Nearest_Points (
CSG_Array &Selection,
CSG_PRQuadTree_Item *pItem,
double x,
double y,
double &Distance,
double Radius,
size_t maxPoints,
int iQuadrant)
const;
1203 size_t _Select_Nearest_Points (
CSG_Array &Selection,
double x,
double y,
size_t maxPoints,
double Radius,
int iQuadrant)
const;
1221 static const char * Get_Version (
void);
1223 virtual bool Destroy (
void);
1225 bool is_Okay (
void)
const {
return( m_pKDTree != NULL ); }
1230 CSG_Shape * Get_Match_Shape (
size_t i)
const;
1234 double *
Get_Point (
size_t i)
const {
return( m_Points[i] ); }
1235 double * operator [] (
int i)
const {
return( m_Points[i] ); }
1236 double * operator [] (
size_t i)
const {
return( m_Points[i] ); }
1254 void _On_Construction (
void);
1271 bool Create (
CSG_Shapes *pPoints,
int Field = -1);
1280 bool Create (
const double **Points,
size_t nPoints);
1286 virtual size_t Get_Nearest_Points (
double Coordinate[2],
size_t Count,
double Radius);
1287 virtual size_t Get_Nearest_Points (
double Coordinate[2],
size_t Count,
double Radius,
CSG_Array_sLong &Indices,
CSG_Vector &Distances);
1288 virtual size_t Get_Nearest_Points (
double Coordinate[2],
size_t Count,
size_t *Indices,
double *Distances);
1289 virtual bool Get_Nearest_Point (
double Coordinate[2],
size_t &Index,
double &Distance);
1290 virtual bool Get_Nearest_Point (
double Coordinate[2],
size_t &Index);
1291 virtual bool Get_Nearest_Value (
double Coordinate[2],
double &Value);
1292 virtual CSG_Shape * Get_Nearest_Shape (
double Coordinate[2]);
1294 virtual size_t Get_Duplicates (
double Coordinate[2]);
1296 virtual size_t Get_Nearest_Points (
double x,
double y,
size_t Count,
double Radius);
1297 virtual size_t Get_Nearest_Points (
double x,
double y,
size_t Count,
double Radius,
CSG_Array_sLong &Indices,
CSG_Vector &Distances);
1298 virtual size_t Get_Nearest_Points (
double x,
double y,
size_t Count,
size_t *Indices,
double *Distances);
1299 virtual bool Get_Nearest_Point (
double x,
double y,
size_t &Index,
double &Distance);
1300 virtual bool Get_Nearest_Point (
double x,
double y,
size_t &Index);
1301 virtual bool Get_Nearest_Value (
double x,
double y,
double &Value);
1302 virtual CSG_Shape * Get_Nearest_Shape (
double x,
double y);
1304 virtual size_t Get_Duplicates (
double x,
double y);
1321 bool Create (
CSG_Shapes *pPoints,
int Field = -1,
int zField = -1,
double zScale = 1.);
1330 bool Create (
const double **Points,
size_t nPoints);
1336 virtual size_t Get_Nearest_Points (
double Coordinate[3],
size_t Count,
double Radius);
1338 virtual size_t Get_Nearest_Points (
double Coordinate[3],
size_t Count,
size_t *Indices,
double *Distances);
1339 virtual size_t Get_Nearest_Points (
double Coordinate[3],
size_t Count,
double Radius,
CSG_Array_sLong &Indices,
CSG_Vector &Distances);
1340 virtual bool Get_Nearest_Point (
double Coordinate[3],
size_t &Index,
double &Distance);
1341 virtual bool Get_Nearest_Point (
double Coordinate[3],
size_t &Index);
1342 virtual bool Get_Nearest_Value (
double Coordinate[3],
double &Value);
1343 virtual CSG_Shape * Get_Nearest_Shape (
double Coordinate[3]);
1345 virtual size_t Get_Duplicates (
double Coordinate[3]);
1347 virtual size_t Get_Nearest_Points (
double x,
double y,
double z,
size_t Count,
double Radius);
1348 virtual size_t Get_Nearest_Points (
double x,
double y,
double z,
size_t Count,
double Radius,
CSG_Array_sLong &Indices,
CSG_Vector &Distances);
1349 virtual size_t Get_Nearest_Points (
double x,
double y,
double z,
size_t Count,
size_t *Indices,
double *Distances);
1350 virtual bool Get_Nearest_Point (
double x,
double y,
double z,
size_t &Index,
double &Distance);
1351 virtual bool Get_Nearest_Point (
double x,
double y,
double z,
size_t &Index);
1352 virtual bool Get_Nearest_Value (
double x,
double y,
double z,
double &Value);
1353 virtual CSG_Shape * Get_Nearest_Shape (
double x,
double y,
double z);
1355 virtual size_t Get_Duplicates (
double x,
double y,
double z);
1376 bool Do_Use_All (
void)
const {
return( m_maxPoints == 0 && m_Radius <= 0. ); }
1377 bool Do_Use_All (
bool bUpdate);
1404 bool Initialize (
CSG_Shapes *pPoints,
int zField = -1);
1405 bool Finalize (
void);
1407 sLong Set_Location (
double x,
double y);
1410 sLong Get_Count (
void)
const {
return( m_pPoints ? m_pPoints->Get_Count() : m_Search.Get_Match_Count() ); }
1411 bool Get_Point (
sLong Index,
double &x,
double &y,
double &z);
1413 bool Get_Points (
double x,
double y,
CSG_Points_3D &Points);
1543 static CSG_String Type_asWKText (DWORD Type);
1544 static DWORD Type_asWKBinary (
const CSG_String &Type);
1554 static bool _WKT_Write_Point (
CSG_String &Text,
CSG_Shape *pShape,
int iPoint,
int iPart);
1566 static bool _WKB_Write_Point (
CSG_Bytes &Bytes,
CSG_Shape *pShape,
int iPoint,
int iPart);
1586 static bool to_WKBinary (
CSG_Bytes &Bytes,
class CSG_Grid *pGrid,
int SRID = -1);
1598 #endif // #ifndef HEADER_INCLUDED__SAGA_API__shapes_H
virtual double Get_Distance(TSG_Point Point, TSG_Point &Next) const =0
CSG_Grid_OGIS_Converter(void)
const TSG_Point & Get_Centroid(void)
TSG_Polygon_Point_Relation Get_Point_Relation(const CSG_Point &p, int iPart)
CSG_Shape_Part ** m_pParts
virtual double Get_Distance(TSG_Point Point) const
virtual bool Assign(CSG_Data_Object *pTable)
virtual int Del_Point(int iPoint, int iPart=0)
CSG_Rect & Assign(double xMin, double yMin, double xMax, double yMax)
CSG_Rect m_Extent_Selected
class CSG_Shape_Points * m_pOwner
virtual double Get_MMax(void)
virtual bool Save(const wchar_t *File, int Format=0)
@ SG_POLYGON_POINT_Interior
virtual int Add_Point(const CSG_Point_3D &p, int iPart=0)=0
SAGA_API_DLL_EXPORT CSG_String SG_Get_ShapeType_Name(TSG_Shape_Type Type)
double Get_Radius(void) const
CSG_Shapes_OGIS_Converter(void)
virtual int Ins_Point(const CSG_Point &p, int iPoint, int iPart=0)=0
virtual bool Del_Records(void)
virtual int Set_Point(const CSG_Point &p, int iPoint=0, int iPart=0)=0
virtual bool Revert_Points(int iPart)
CSG_PRQuadTree_Leaf(const CSG_Rect &Extent, int Quadrant, double x, double y, double z)
virtual TSG_Point Get_Point(int iPoint=0) const
double Get_yCenter(void) const
virtual bool Save(const char *File, int Format=0)
virtual double Get_MMin(void)
int Add_Point(const CSG_Point &p)
CSG_PRQuadTree_Node * Get_Root_Pointer(void) const
bool Update(bool bForce=false)
virtual CSG_Shape * Get_Selection(sLong Index=0)
double Get_Value(sLong i)
virtual double Get_ZMin(void)
virtual CSG_Shape * Get_Shape(sLong Index) const
virtual double Get_Z(int iPoint=0, int iPart=0, bool bAscending=true) const
size_t Get_Selected_Count(void) const
virtual void Set_Z(double z, int iPoint=0, int iPart=0)
virtual int Del_Parts(void)
bool Do_Use_All(void) const
virtual double Get_Z(int iPoint=0, int iPart=0, bool bAscending=true) const
TSG_Point Get_Point(int iPoint, bool bAscending=true) const
double Get_XMax(void) const
virtual bool has_Statistics(void) const
virtual int Get_Part_Count(void) const
virtual int Set_Point(const CSG_Point &p, int iPoint=0, int iPart=0)
virtual int Del_Point(int iPoint, int iPart=0)=0
virtual int Ins_Point(double x, double y, int iPoint, int iPart=0)=0
double Get_Z(int iPoint, bool bAscending=true) const
size_t Get_Max_Points(void) const
virtual int Get_Point_Count(int iPart) const
virtual int Ins_Point(const CSG_Point_4D &p, int iPoint, int iPart=0)
virtual bool is_Valid(void) const
virtual bool has_Statistics(void) const
TSG_Point_3D Get_Point_Z(int iPoint, bool bAscending=true) const
virtual double Get_MMin(void)
SAGA_API_DLL_EXPORT CSG_String SG_Shapes_Get_File_Extension_Default(void)
virtual int Set_Point(const CSG_Point_3D &p, int iPoint=0, int iPart=0)
virtual bool Assign(CSG_Table_Record *pRecord)
CSG_PRQuadTree_Item * Get_Child(int Quadrant) const
virtual CSG_Table_Record * Get_Selection(sLong Index=0) const
virtual bool Destroy(void)
virtual bool On_Reload(void)
CSG_Lines Get_Shared_Edges(CSG_Shape_Polygon *pPolygon, bool bVertexCheck, double Epsilon=0.)
virtual CSG_Shape_Part * Get_Part(int iPart) const
@ SG_OGIS_TYPE_PolyhedralSurfaceZM
@ SG_OGIS_TYPE_MultiPolygon
SAGA_API_DLL_EXPORT TSG_Shape_File_Format SG_Shapes_Get_File_Format_Default(void)
void _Update_Extent(void)
virtual int Ins_Point(const CSG_Point &p, int iPoint, int iPart=0)
bool is_OnEdge(const CSG_Point &p, int iPart)
virtual CSG_Shape * Get_Shape_byIndex(sLong Index) const
double Get_xCenter(void) const
class CSG_Shape_Point * asPoint(void) const
virtual void _Invalidate(void)
CSG_Shape(class CSG_Shapes *pOwner, sLong Index)
TSG_Intersection Intersects(CSG_Shape *pShape)
virtual int Add_Part(class CSG_Shape_Part *pPart, bool bRevert=false)
double Get_Shared_Length(CSG_Shape_Polygon *pPolygon, bool bVertexCheck, double Epsilon=0.)
@ SG_OGIS_TYPE_MultiPoint
virtual bool On_Delete(void)
@ SG_OGIS_TYPE_MultiLineString
double Get_Match_Distance(size_t i) const
virtual bool is_Valid(void) const
virtual double Get_Point_Value(size_t i) const
size_t Get_Point_Count(void) const
virtual void Destroy(void)
virtual int Set_Point(double x, double y, int iPoint=0, int iPart=0)
TSG_Shape_Type Get_Type(void) const
TSG_Polygon_Point_Relation
virtual double Get_Distance(TSG_Point Point) const =0
CSG_Shape_Part(class CSG_Shape_Points *pOwner)
virtual double Get_MMax(void)
virtual int Add_Point(const CSG_Point_4D &p, int iPart=0)
const TSG_Point & Get_Point(void) const
double Get_M(int iPoint, bool bAscending=true) const
virtual double Get_Distance(TSG_Point Point, TSG_Point &Next) const
@ SG_OGIS_TYPE_MultiPolygonZM
virtual const CSG_Rect & Get_Extent(int iPart)
virtual double Get_Distance(TSG_Point Point, TSG_Point &Next, int iPart) const =0
virtual TSG_Point Get_Point(int iPoint=0) const
const CSG_PRQuadTree_Node & Get_Root(void) const
virtual TSG_Point Get_Point(int iPoint=0) const =0
virtual double Get_Distance(TSG_Point Point, TSG_Point &Next, int iPart) const
@ SG_POLYGON_POINT_Vertex
virtual void Destroy(void)
virtual double Get_Distance(TSG_Point Point) const
virtual int Del_Part(int iPart)
SAGA_API_DLL_EXPORT bool SG_Shape_Get_ExclusiveOr(CSG_Shape *pSubject, CSG_Shape_Polygon *pClip, CSG_Shape *pSolution=NULL)
virtual void Set_M(double m, int iPoint=0, int iPart=0)
virtual int Get_Part_Count(void) const =0
virtual bool Del_Shapes(void)
void Set_Polar_Search(bool bOn)
bool Contains(const CSG_Point &p, int iPart)
TSG_Vertex_Type Get_Vertex_Type(void) const
virtual int Ins_Point(double x, double y, int iPoint, int iPart=0)
@ SG_OGIS_TYPE_LineString
SAGA_API_DLL_EXPORT bool SG_Shapes_Set_File_Format_Default(int Format)
double Get_YMin(void) const
@ SG_OGIS_TYPE_GeometryCollectionZM
@ SG_POLYGON_POINT_Outside
bool Contains(const CSG_Point &p) const
class CSG_Shape_Points * asPoints(void) const
virtual TSG_Point Get_Point(int iPoint, int iPart, bool bAscending=true) const =0
friend class CSG_Shape_Points
const CSG_Rect & Get_Extent(void)
virtual bool is_Node(void) const
virtual CSG_Simple_Statistics * Get_Y(void)
virtual ~CSG_PRQuadTree_Item(void)
virtual double Get_Z(int iPoint=0, int iPart=0, bool bAscending=true) const
virtual double Get_ZMax(void)
CSG_Simple_Statistics m_z
virtual double Get_M(int iPoint=0, int iPart=0, bool bAscending=true) const
CSG_PRQuadTree_Item(const CSG_Rect &Extent, int Quadrant=-1)
virtual int Add_Point(const CSG_Point_3D &p, int iPart=0)
double SG_Get_Distance(double ax, double ay, double bx, double by, bool bPolar)
@ SG_OGIS_TYPE_PolyhedralSurface
virtual double Get_ZMax(void)
virtual bool is_Node(void) const
void Set_M(double m, int iPoint)
CSG_Shape_Point_ZM(class CSG_Shapes *pOwner, sLong Index)
CSG_Array_sLong m_Indices
virtual bool Revert_Points(int iPart)
@ SHAPE_FILE_FORMAT_GeoPackage
virtual double Get_ZMin(void)
virtual void _Invalidate(void)
virtual int Ins_Point(const CSG_Point_3D &p, int iPoint, int iPart=0)
virtual CSG_Shape_Part * _Get_Part(void)
virtual bool is_Leaf(void) const
virtual ~CSG_PRQuadTree_Node_Statistics(void)
sLong Get_Count(void) const
virtual int Add_Point(const CSG_Point &p, int iPart=0)
virtual bool On_Update(void)
@ SG_OGIS_TYPE_PolyhedralSurfaceZ
virtual int Add_Point(double x, double y, int iPart=0)
virtual CSG_Simple_Statistics * Get_Z(void)
virtual double Get_Distance(TSG_Point Point, TSG_Point &Next, int iPart) const
virtual bool is_Valid(void) const
class CSG_PRQuadTree_Node * asNode(void) const
SAGA_API_DLL_EXPORT bool SG_Shape_Get_Union(CSG_Shape *pSubject, CSG_Shape_Polygon *pClip, CSG_Shape *pSolution=NULL)
virtual int Get_Point_Count(void) const
virtual TSG_Point Get_Centroid(void)=0
@ SG_OGIS_TYPE_GeometryCollectionZ
@ SG_OGIS_TYPE_LineStringZM
#define SAGA_API_DLL_EXPORT
void Set_Z(double z, int iPoint)
virtual double Get_M(int iPoint=0, int iPart=0, bool bAscending=true) const
SAGA_API_DLL_EXPORT CSG_Shapes * SG_Create_Shapes(void)
double Get_yMin(void) const
@ SG_OGIS_TYPE_GeometryCollection
class CSG_KDTree_Adaptor * m_pAdaptor
virtual int Add_Point(double x, double y, int iPart=0)=0
CSG_Shape_Polygon_Part * Get_Polygon_Part(int iPart) const
CSG_PRQuadTree_Leaf * Get_Selected_Leaf(size_t i) const
SAGA_API_DLL_EXPORT const char * SG_Clipper_Get_Version(void)
double Get_Selected_Z(size_t i) const
@ SHAPE_FILE_FORMAT_Undefined
virtual CSG_Simple_Statistics * Get_X(void)
virtual int Add_Point(const CSG_Point &p, int iPart=0)=0
virtual CSG_Shape_Part * _Get_Part(void)
CSG_Table_Record * Get_Record_byIndex(sLong Index) const
virtual double Get_MMin(void)
virtual bool Assign(CSG_Table_Record *pRecord)
virtual double Get_ZMax(void)
SAGA_API_DLL_EXPORT bool SG_Shape_Get_Dissolve(CSG_Shape *pSubject, CSG_Shape *pSolution=NULL)
virtual const CSG_Rect & Get_Extent(void)
virtual ~CSG_Parameters_Point_Search_KDTree_2D(void)
virtual double Get_ZMin(void)
TSG_Vertex_Type m_Vertex_Type
class CSG_Shape_Points * Get_Owner(void)
virtual CSG_Simple_Statistics * Get_X(void)
virtual bool is_Valid(void) const =0
int Set_Point(const CSG_Point &p, int iPoint)
bool Contains(double x, double y) const
virtual void _Update_Extent(void)
double * Get_Point(size_t i) const
class CSG_Shape_Line * asLine(void) const
int Add_Point(const CSG_Point_3D &p)
@ SG_OGIS_TYPE_PolyhedralSurfaceM
@ SG_OGIS_TYPE_GeometryCollectionM
virtual TSG_Point Get_Centroid(void)
SAGA_API_DLL_EXPORT bool SG_Shape_Get_Difference(CSG_Shape *pSubject, CSG_Shape_Polygon *pClip, CSG_Shape *pSolution=NULL)
@ SG_DATAOBJECT_TYPE_Shapes
@ SG_OGIS_TYPE_TriangleZM
virtual int Set_Point(const CSG_Point_3D &p, int iPoint=0, int iPart=0)=0
double Get_Selected_Distance(size_t i) const
virtual void _Invalidate(void)
virtual int Get_Point_Count(void) const =0
virtual TSG_Data_Object_Type Get_ObjectType(void) const
Returns the object type as defined by TSG_Data_Object_Type. Used for run time type checking.
virtual int Set_Point(const CSG_Point_4D &p, int iPoint=0, int iPart=0)
virtual int Set_Point(double x, double y, int iPoint=0, int iPart=0)
@ SHAPE_FILE_FORMAT_GeoJSON
class CSG_Parameters * m_pParameters
sLong Get_Count(void) const
size_t Get_Match_Index(size_t i) const
virtual ~CSG_Parameters_Point_Search(void)
double Get_Perimeter(void)
virtual void _Invalidate(void)
bool is_Neighbour(CSG_Shape_Polygon *pPolygon, bool bSimpleCheck=true)
virtual int Set_Point(double x, double y, int iPoint=0, int iPart=0)=0
virtual CSG_Shape_Part * Get_Part(int iPart) const
void Set_Extent(const CSG_Rect &Extent, int Quadrant=-1)
int Add_Point(double x, double y)
const CSG_Rect & Get_Extent(void) const
virtual TSG_Point_3D Get_Point_Z(int iPoint=0, int iPart=0, bool bAscending=true) const
virtual bool Destroy(void)
class CSG_PRQuadTree_Leaf * asLeaf(void) const
virtual double Get_MMax(void)
double Get_Size(void) const
virtual double Get_Distance(TSG_Point Point, int iPart) const
@ SG_OGIS_TYPE_MultiPolygonM
virtual const CSG_Rect & Get_Extent(void)
friend class CSG_Shape_Part
CSG_Shape_Point_Z(class CSG_Shapes *pOwner, sLong Index)
virtual double Get_M(int iPoint=0, int iPart=0, bool bAscending=true) const
double Get_XCenter(void) const
double Get_YMax(void) const
@ SG_OGIS_TYPE_MultiPointZM
virtual int Ins_Point(const CSG_Point_3D &p, int iPoint, int iPart=0)=0
virtual TSG_Point_4D Get_Point_ZM(int iPoint=0, int iPart=0, bool bAscending=true) const
SAGA_API_DLL_EXPORT bool SG_Shape_Get_Intersection(CSG_Shape *pSubject, CSG_Shape_Polygon *pClip, CSG_Shape *pSolution=NULL)
virtual int Add_Point(const CSG_Point_3D &p, int iPart=0)
double Get_XMin(void) const
virtual double Get_Point_Value(size_t i) const =0
size_t Get_Min_Points(void) const
int Get_Count(void) const
virtual double Get_Point_Value(int i) const
virtual TSG_Intersection On_Intersects(CSG_Shape *pShape)
CSG_PRQuadTree_Node_Statistics(const CSG_Rect &Extent, int Quadrant=-1)
virtual bool is_Valid(void) const
virtual CSG_Simple_Statistics * Get_Y(void)
int Get_Quadrant(double x, double y) const
virtual int Add_Point(const CSG_Point_4D &p, int iPart=0)
virtual bool is_Valid(void) const
virtual int Set_Point(const CSG_Point_4D &p, int iPoint=0, int iPart=0)=0
virtual int Add_Point(const CSG_Point &p, int iPart=0)
virtual bool Destroy(void)
CSG_PRQuadTree_Node_Statistics(CSG_PRQuadTree_Leaf *pLeaf)
CSG_Simple_Statistics s_z
int Get_Point_Count(void) const
virtual TSG_Point Get_Point(int iPoint, int iPart, bool bAscending=true) const
@ SG_OGIS_TYPE_MultiPointZ
double * Get_Point(int i) const
virtual int Del_Point(int iPoint, int iPart=0)
virtual const CSG_Rect & Get_Extent(void)=0
double Get_Variance(void)
double Get_YCenter(void) const
int Ins_Point(const CSG_Point &p, int iPoint)
virtual void Set_Z(double z, int iPoint=0, int iPart=0)
virtual int Get_Point_Count(void) const
virtual int Set_Point(const CSG_Point &p, int iPoint=0, int iPart=0)
virtual bool Save(const CSG_String &File, int Format, SG_Char Separator, int Encoding=SG_FILE_ENCODING_UNDEFINED)
SAGA_API_DLL_EXPORT bool SG_Shape_Get_Offset(CSG_Shape *pSubject, double Size, double dArc, CSG_Shape *pSolution=NULL)
virtual int Ins_Point(const CSG_Point &p, int iPoint, int iPart=0)
virtual ~CSG_PRQuadTree_Leaf_List(void)
virtual void Set_Z(double z, int iPoint=0, int iPart=0)
virtual bool is_Leaf(void) const
int Add_Point(const CSG_Point_4D &p)
virtual int Ins_Point(const CSG_Point_4D &p, int iPoint, int iPart=0)=0
virtual bool has_Statistics(void) const
class CSG_Shape_Polygon * asPolygon(void) const
@ SG_OGIS_TYPE_LineStringZ
size_t Get_Match_Count(void) const
@ SG_OGIS_TYPE_MultiPointM
TSG_Point_4D Get_Point_ZM(int iPoint, bool bAscending=true) const
@ SG_OGIS_TYPE_MultiLineStringZM
int Get_Quadrant(const TSG_Point &p) const
virtual bool Select(sLong Index, bool bInvert=false)
virtual double Get_Point_Value(size_t i) const
virtual TSG_Shape_Type Get_Type(void) const
virtual int Get_Part_Count(void) const
double Get_xMin(void) const
virtual TSG_Point Get_Point(int iPoint, int iPart, bool bAscending=true) const
virtual int Ins_Point(double x, double y, int iPoint, int iPart=0)
virtual int Get_Point_Count(int iPart) const
virtual void Set_M(double m, int iPoint=0, int iPart=0)
virtual int Add_Point(double x, double y, int iPart=0)
@ SG_OGIS_TYPE_MultiPolygonZ
virtual TSG_Point Get_Centroid(void)
virtual CSG_Simple_Statistics * Get_Z(void)
double Get_yMax(void) const
virtual int Add_Point(const CSG_Point_4D &p, int iPart=0)=0
virtual CSG_Table_Record * _Get_New_Record(sLong Index)
virtual TSG_Intersection On_Intersects(CSG_Shape *pShape)=0
virtual void Set_M(double m, int iPoint=0, int iPart=0)
@ SG_OGIS_TYPE_MultiLineStringM
CSG_PRQuadTree_Leaf_List(const CSG_Rect &Extent, int Quadrant, double x, double y, double z)
@ SG_OGIS_TYPE_MultiLineStringZ
bool is_Polar(void) const
virtual TSG_Intersection On_Intersects(TSG_Rect Extent)=0
virtual double Get_Distance(TSG_Point Point, int iPart) const =0
@ SG_OGIS_TYPE_LineStringM
bool Add_Point(double x, double y, double z)
virtual ~CSG_PRQuadTree_Leaf(void)
virtual void _On_Construction(void)
bool Get_Selected_Point(size_t i, double &x, double &y, double &z) const
virtual bool On_Assign(CSG_Shape *pShape)=0
virtual int Get_Point_Count(int iPart) const =0
double Get_xMax(void) const