|
|
|
|
|
#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>ͼ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|