You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/GVision/FaultDensityLib/FltDensityAnalyzer.h

83 lines
2.3 KiB
C

1 month ago
#pragma once
#include "../BaseLib/PublicFunctions.h"
#include "../BaseLib/BaseElements.h"
#include "../BaseLib/GDfdMap.h"
#include <map>
//<2F>ϲ<EFBFBD><CFB2>ܶȷ<DCB6><C8B7><EFBFBD>ͳ<EFBFBD><CDB3>
class AFX_EXT_CLASS CFltDensityAnalyzer
{
public:
CFltDensityAnalyzer();
~CFltDensityAnalyzer();
void ClearAll(void);
void ClearPolygons(void);
void ClearFlts(void);
//<2F><>ȡ<EFBFBD>ϲ<EFBFBD><CFB2>ļ<EFBFBD><C4BC><EFBFBD>m_fltmap
bool ReadFltFile(CString strFlt);
bool ReadBorderFile(CString strBd);
//<2F>ܶȷֲ<C8B7><D6B2>͵<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
void SetOutputPaths( CString strDenDist,CString strCellPolygons);
void SetGrid(float dx, float dy);
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD>ϲ<EFBFBD> <20><><EFBFBD><EFBFBD>strlayerΪ<72>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>жϲ<D0B6>
bool ReadFlts(CString strLayer = "", bool bIncludingSubLayers = true);
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD>߽<EFBFBD>
bool ReadBorder(CString strLayerBd, bool bIncludingSubLayers = true);
double CalcDensity(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>
bool Execute(void);//ִ<>ж<EFBFBD>ȡ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CalcAverageDensity(void); //<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ܶ<EFBFBD> <20><><EFBFBD><EFBFBD>/ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ȡ<EFBFBD><C8A1>rect<63><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򱻰<EFBFBD><F2B1BBB0><EFBFBD><EFBFBD>Ķϲ<C4B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int GetRectFlts(const GRect8& rect, vector<GPline*>& dstflts);
void GetGridFlts(void); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>
int CreateGridRects(void);
//д<><D0B4><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
void WriteGridFltsInfo(void);
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ĵ<EFBFBD>
void WriteCellPolygons(void);
double GetAverageDensity() { return m_aveDensity; }
float GetFltLength(GPline* line);
int GetLayers(vector<CString>& strlayers);
public:
float m_minFltLength;
BOOL m_bCalcWithRealArea; //<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_fileLastOpen;
private:
typedef std::list<GPline*>::iterator FLTITER;
bool ReadBorder(void);
//<2F>ж<EFBFBD>pc2<63>Ƿ<EFBFBD><C7B7><EFBFBD>pc1<63>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>񷵻<EFBFBD>-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ֲ<EFBFBD><D6B2>ڷ<EFBFBD><DAB7><EFBFBD>2
int IsInside(GPline& pc1, GPline& pc2);
//ɸ<><C9B8><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>Ķϲ<C4B6>
void RemoveInvalidFlts(void);
//д<><D0B4>ƽ<EFBFBD><C6BD><EFBFBD>ܶ<EFBFBD>
bool WriteAverageDensity(double dden, CString strAveDen);
std::list<GPline*> m_flts;
std::map<GPline*, GRect8> m_fltRects; //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD>map
GPline m_border;
CString m_strFltInput;
CString m_strBorder;
CString m_strOutputDensityAverage;
CString m_strOuputDensityDistribution;
CString m_strOutputCellPolygons;
float m_fDx;
float m_fDy;
vector<GRect8> m_grdRects;
vector<GPoint3D> m_grdCenters; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڱ߽<DAB1><DFBD>ڵĶ<DAB5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
vector<int> m_grdFltNums; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><E0BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vector<GPline*> m_cellPolygons; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_aveDensity; //ƽ<><C6BD><EFBFBD>ܶ<EFBFBD>
protected:
GDfdMap m_fltMap; //<2F>ϲ<EFBFBD>ͼ
};