#pragma once /*****************************************************************//** * \file RFPCProcessCls.h * \brief 距离时域脉冲相干法(Range Time domain Pulse Coherent)处理流程与相关文件 * * 参考资料 * 合成孔径雷达成像算法与实现,cumming 洪文译, 第四章 合成孔径的概念 * 雷达信号处理基础,Mark A.Richards,邢孟道译 * 合成孔径雷达成像原理,皮亦鸣 * InSAR原理与应用,刘国祥 * 弹载SAR回波信号仿真研究,林江红 * 星载合成孔径雷达原始回波数据模拟研究,吕辉 * SAR回波仿真信号生成算法的性能比较研究,韦立登 * 星载合成孔径雷达影像正射校正方法研究,陈尔学 * 注:吕辉 多普勒计算公式 与 陈尔学的多普勒计算公式存在差异,中间省略了一些变换过程 * * * \author 陈增辉 * \date October 2024 *********************************************************************/ #include "BaseConstVariable.h" #include "SARSatelliteSimulationAbstractCls.h" #include "SARSimulationTaskSetting.h" #include "SatelliteOribtModel.h" #include "EchoDataFormat.h" #include "SigmaDatabase.h" /***** 工具函数 *******************************/ CUDA_AntSate_PtrList* malloc_AntSate_PtrList(long PRFCount); void Free_AntSate_PtrList(CUDA_AntSate_PtrList* ant); void COPY_AntStation_FROM_HOST_GPU( std::shared_ptr sateOirbtNodes, std::shared_ptr gpupptr, long startPID, long PRF_len ); class RFPCProcessCls { public: RFPCProcessCls(); ~RFPCProcessCls(); public: void setTaskSetting(std::shared_ptr < AbstractSARSatelliteModel> TaskSetting); void setEchoSimulationDataSetting(std::shared_ptr < EchoL0Dataset> EchoSimulationData); void setTaskFileName(QString EchoFileName); void setDEMTiffPath(QString DEMTiffPath); void setSloperPath(QString SloperPath); void setLandCoverPath(QString LandCoverPath); void setOutEchoPath(QString OutEchoPath); private: std::shared_ptr TaskSetting; // 仿真任务设置 std::shared_ptr EchoSimulationData; // 回波设置 std::shared_ptr SigmaDatabasePtr; long PluseCount; // 脉冲数量 long PlusePoint; // 脉冲点数 QString LandCoverPath; QString OutEchoPath; // 输出回波路径 QString TaskFileName; QString tmpfolderPath; QString OutEchoMaskPath; public: ErrorCode Process(long num_thread); // 处理 private: // 处理流程 ErrorCode InitParams();// 1. 初始化参数 ErrorCode InitEchoMaskArray(); //ErrorCode RFPCMainProcess(long num_thread); ErrorCode RFPCMainProcess_GPU(); std::shared_ptr getSatelliteOribtNodes(double prf_time, double dt, bool antflag, long double imageStarttime); private: QString demxyzPath; QString demmaskPath; QString demsloperPath; }; void RFPCProcessMain(long num_thread,QString TansformPatternFilePath,QString ReceivePatternFilePath,QString simulationtaskName, QString OutEchoPath, QString GPSXmlPath,QString TaskXmlPath, QString demTiffPath, QString sloperPath, QString LandCoverPath);