#pragma once #ifndef _LAMPSCATTERS1B_H_ #define _LAMPSCATTERS1B_H_ #include #include #include #include #include #include #include #include #include #include inline void LAMPScatterS1BdelArrPtr(void* p) { delete[] p; p = nullptr; } class LAMPScatterS1BRCSDataNode { public: LAMPScatterS1BRCSDataNode(QString PolarName, double AzAngle, double IncAngle,std::shared_ptr freqs, std::shared_ptr RCSPoints,long freqnumber); ~LAMPScatterS1BRCSDataNode(); public: long getFreqPointNumber(); std::shared_ptr getFreqPoints(); std::shared_ptr getRCSPoints(); QString getPolarName(); double getAzAngle(); double getIncAngle(); private: double AzAngle; double IncAngle; long FreqPointNumber; std::shared_ptr FreqPoints; std::shared_ptr RCSPoints; QString PolarName; }; class LAMPScatterS1BPolarKdTree {// 这里使用 kdTree作为 检索索引,不需要考虑调整的 public: LAMPScatterS1BPolarKdTree(std::vector> inDatalist); ~LAMPScatterS1BPolarKdTree(); public: QVector> search(double sAzAngle, double sIncAngle,long sPointNumber); private: //kdtree std::vector> dataset; std::shared_ptr < flann::Matrix> KdtreeFlannDatasetPtr; std::shared_ptr < flann::Index>> kdtreeIndexPtr; private: std::vector> datalist; //所有节点 }; class LAMPScatterS1BDataset { public: int OpenFile(QString s1bfilepath); public: std::complex getRCSData(QString polarName, double AzAngle, double IncAngle, double FreqId); private: long FreqPointNumber; long polNumber; long AzNumber; long IncNumber; QMap> polarRCSTree; private: QMap ReadPolAttribution(int ncid, int polvarid); }; #endif