已经合并

Release-dev
陈增辉 2025-05-18 23:25:21 +08:00
parent eb4bfecb06
commit 71de7a4e8c
13 changed files with 104 additions and 93 deletions

View File

@ -429,7 +429,6 @@ ErrorCode GF3RDCreateLookTable(QString inxmlPath, QString indemPath, QString out
bool antflag = false;
for (long j = 0; j < blockcols; j++) {
timeR = sar_r(i, j) / prf;
slopex = demslope_x(i, j);
@ -601,7 +600,6 @@ ErrorCode GF3RDProcess(QString inxmlPath, QString indemPath, QString outworkdir,
QString resampleDEMPath = JoinPath(outworkdir, getFileNameWidthoutExtend(indemPath) + filename + "_clip_resample.tif");
resampleRaster(clipDEMPath.toUtf8().constData(), resampleDEMPath.toUtf8().constData(), degreePerPixelX, degreePerPixelY);
QString outlooktablePath = JoinPath(outworkdir, getFileNameWidthoutExtend(l1dataset.getxmlFilePath()) + "_looktable.tif");
QString outlocalAnglePath = JoinPath(outworkdir, getFileNameWidthoutExtend(l1dataset.getxmlFilePath()) + "_localAngle.tif");

View File

@ -0,0 +1,35 @@
#pragma once
#ifndef __GF3CALIBRATIONANDGEOCODINGCLASS__H__
#define __GF3CALIBRATIONANDGEOCODINGCLASS__H__
#include "gf3calibrationandorthlib_global.h"
#include "BaseConstVariable.h"
#include "ImageOperatorBase.h"
#include "LogInfoCls.h"
#include "SARSimulationImageL1.h"
#include "GF3PSTNClass.h"
#include <QString>
// 数据定标
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3CalibrationRaster(QString inRasterPath, QString outRasterPath, double Qualifyvalue, double calibrationConst);
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT ImportGF3L1ARasterToWorkspace(QString inMetaxmlPath,QString inRasterPath, QString outWorkDirPath, POLARTYPEENUM polsartype);
QVector<QString> GF3CALIBRATIONANDORTHLIB_EXPORT SearchGF3DataTiff(QString inMetaxmlPath);
POLARTYPEENUM GF3CALIBRATIONANDORTHLIB_EXPORT getDatasetGF3FilePolsarType(QString fileName);
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT ImportGF3L1AProcess(QString inMetaxmlPath, QString outWorkDirPath);
// RD 算法类
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT RD_PSTN(double& refrange,double& lamda, double& timeR, double& R, double& tx, double& ty, double& tz, double& slopex, double& slopey, double& slopez, GF3PolyfitSatelliteOribtModel& polyfitmodel, SatelliteOribtNode& node,double& d0,double& d1, double& d2, double& d3, double& d4);
//创建查找表
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3RDCreateLookTable(QString inxmlPath, QString indemPath, QString outworkdir, QString outlooktablePath, QString outLocalIncidenceAnglePath, bool localincAngleFlag=false);
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3OrthSLC( QString inRasterPath, QString inlooktablePath, QString outRasterPath);
// 正射处理流程
ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3RDProcess(QString inxmlPath, QString indemPath, QString outworkdir, double gridx, double gridy);
#endif

View File

@ -42,7 +42,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
<QtInstall>tools_qt5</QtInstall>
<QtModules>core</QtModules>
<QtModules>core;xml;opengl;gui;xmlpatterns;widgets;quick;dbus;datavisualization</QtModules>
<QtBuildConfig>release</QtBuildConfig>
</PropertyGroup>
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@ -97,10 +97,18 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="GF3PSTNClass.cpp" />
<ClCompile Include="SatelliteGF3xmlParser.cpp" />
<ClCompile Include="SateOrbit.cpp" />
<ClInclude Include="GF3CalibrationAndGeocodingClass.h" />
<ClInclude Include="gf3calibrationandorthlib_global.h" />
<ClInclude Include="GF3CalibrationAndOrthLib.h" />
<ClCompile Include="GF3CalibrationAndGeocodingClass.cpp" />
<ClCompile Include="GF3CalibrationAndOrthLib.cpp" />
<ClInclude Include="GF3CalibrationGecodingBaseFuntion.h" />
<ClInclude Include="GF3PSTNClass.h" />
<ClInclude Include="SatelliteGF3xmlParser.h" />
<ClInclude Include="SateOrbit.h" />
<CudaCompile Include="GF3CalibrationGeoCodingFunCUDA.cuh" />
</ItemGroup>
<ItemGroup>

View File

@ -35,9 +35,35 @@
<ClInclude Include="GF3CalibrationGecodingBaseFuntion.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GF3CalibrationAndGeocodingClass.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GF3PSTNClass.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SatelliteGF3xmlParser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SateOrbit.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CudaCompile Include="GF3CalibrationGeoCodingFunCUDA.cu" />
<CudaCompile Include="GF3CalibrationGeoCodingFunCUDA.cuh" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="GF3CalibrationAndGeocodingClass.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="GF3PSTNClass.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SatelliteGF3xmlParser.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SateOrbit.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,8 +1,9 @@
#pragma once
#ifndef __GF3PSTNCLASS_H__
#define __GF3PSTNCLASS_H__
#include "gf3calibrationandorthlib_global.h"
#include "LogInfoCls.h"
#include "BaseConstVariable.h"
@ -14,7 +15,7 @@
/// <summary>
/// 多项式轨道模型
/// </summary>
class GF3PolyfitSatelliteOribtModel
class GF3CALIBRATIONANDORTHLIB_EXPORT GF3PolyfitSatelliteOribtModel
{
public:
GF3PolyfitSatelliteOribtModel();
@ -43,8 +44,9 @@ public: //
virtual void setAntnnaAxisY(double X, double Y, double Z) ; // 设置天线X轴指向
virtual void setAntnnaAxisZ(double X, double Y, double Z) ; // 设置天线X轴指向
virtual ErrorCode getAntnnaDirection(SatelliteOribtNode& node) ; // 获取天线指向方向
virtual ErrorCode getZeroDopplerAntDirect(SatelliteOribtNode& node) ;
virtual ErrorCode getAntnnaDirection(SatelliteOribtNode& node); // »ñÈ¡ÌìÏßÖ¸Ïò·½Ïò
virtual ErrorCode getZeroDopplerAntDirect(SatelliteOribtNode& node);
private: // 变量
long double oribtStartTime; // 卫星模型参考时间
double beamAngle; // 波位角
@ -93,16 +95,14 @@ public:
//virtual void setPt(double Pt);
//virtual void setGri(double gri);
private:
double Pt; // 发射电压
double Gri;// 系统增益
};
std::shared_ptr<GF3PolyfitSatelliteOribtModel> CreataGF3PolyfitSatelliteOribtModel(std::vector<SatelliteOribtNode>& nodes, long double startTime, int polynum = 3);
std::shared_ptr<GF3PolyfitSatelliteOribtModel> GF3CALIBRATIONANDORTHLIB_EXPORT CreataGF3PolyfitSatelliteOribtModel(std::vector<SatelliteOribtNode>& nodes, long double startTime, int polynum = 3);
#endif

View File

@ -41,27 +41,19 @@ Eigen::MatrixX<double> OrbitPoly::SatelliteSpacePoint(long double satellitetime)
if (this->polySatellitePara.rows() != polynum || this->polySatellitePara.cols() != 6) {
throw exception("the size of satellitetime has error!! row: p1,p2,p3,p4 col: x,y,z,vx,vy,vz ");
}
// ?????????
double satellitetime2 =double( satellitetime - this->SatelliteModelStartTime);
Eigen::MatrixX<double> satetime(1, polynum);
for (int i = 0; i < polynum; i++) {
satetime(0, i) = pow(satellitetime2, i);
}
// ????
Eigen::MatrixX<double> satellitePoints(1, 6);
satellitePoints = satetime * polySatellitePara;
return satellitePoints;
}
/// <summary>
/// ????????????????????
/// </summary>
/// <param name="satellitetime">???????</param>
/// <param name="SatelliteModelStartTime">??????????</param>
/// <param name="polySatellitePara">??????[x1,y1,z1,vx1,vy1,vz1; x2,y2,z2,vx2,vy2,vz2; ..... ]</param>
/// <param name="polynum">??????????</param>
/// <returns>????????</returns>
Eigen::MatrixX<double> SatelliteSpacePoints(Eigen::MatrixX<double>& satellitetime, double SatelliteModelStartTime, Eigen::MatrixX<double>& polySatellitePara, int polynum)
{
if (satellitetime.cols() != 1) {
@ -70,7 +62,7 @@ Eigen::MatrixX<double> SatelliteSpacePoints(Eigen::MatrixX<double>& satellitetim
if (polySatellitePara.rows() != polynum || polySatellitePara.cols() != 6) {
throw exception("the size of satellitetime has error!! row: p1,p2,p3,p4 col: x,y,z,vx,vy,vz ");
}
// ?????????
int satellitetime_num = satellitetime.rows();
satellitetime = satellitetime.array() - SatelliteModelStartTime;
Eigen::MatrixX<double> satelliteTime(satellitetime_num, polynum);
@ -78,7 +70,6 @@ Eigen::MatrixX<double> SatelliteSpacePoints(Eigen::MatrixX<double>& satellitetim
satelliteTime.col(i) = satellitetime.array().pow(i);
}
// ????
Eigen::MatrixX<double> satellitePoints(satellitetime_num, 6);
satellitePoints = satelliteTime * polySatellitePara;
return satellitePoints;

View File

@ -1,4 +1,6 @@
#pragma once
#ifndef __SATEORIBT_H__
#define __SATEORIBT_H__
///
/// 计算卫星轨道
///
@ -7,6 +9,7 @@
//#define EIGEN_VECTORIZE_SSE4_2
//#include <mkl.h>
// 本地方法
#include "gf3calibrationandorthlib_global.h"
#include "BaseTool.h"
#include <iostream>
#include <Eigen/Core>
@ -16,15 +19,15 @@
//#include <armadillo>
using namespace std;
using namespace Eigen;
//using namespace std;
//using namespace Eigen;
//using namespace arma;
/// <summary>
/// 多项式轨道模型
/// </summary>
class OrbitPoly {
class GF3CALIBRATIONANDORTHLIB_EXPORT OrbitPoly {
public:
//OrbitPoly(std::string orbitModelPath);
OrbitPoly();
@ -49,4 +52,8 @@ public:
/// <param name="polySatellitePara">模型参数[x1,y1,z1,vx1,vy1,vz1; x2,y2,z2,vx2,vy2,vz2; ..... ]</param>
/// <param name="polynum">模型参数数量</param>
/// <returns>卫星坐标</returns>
Eigen::MatrixX<double> SatelliteSpacePoints(Eigen::MatrixX<double> &satellitetime, double SatelliteModelStartTime, Eigen::MatrixX<double>& polySatellitePara, int polynum = 4);
Eigen::MatrixX<double> GF3CALIBRATIONANDORTHLIB_EXPORT SatelliteSpacePoints(Eigen::MatrixX<double> &satellitetime, double SatelliteModelStartTime, Eigen::MatrixX<double>& polySatellitePara, int polynum = 4);
#endif

View File

@ -1,4 +1,8 @@
#pragma once
#ifndef __SATELLITEGF3XMLPARSER_H__
#define __SATELLITEGF3XMLPARSER_H__
#include "gf3calibrationandorthlib_global.h"
#include <QCoreApplication>
#include <QFile>
#include <QDomDocument>
@ -9,7 +13,7 @@
class SatelliteGF3xmlParser {
class GF3CALIBRATIONANDORTHLIB_EXPORT SatelliteGF3xmlParser {
public:
bool loadFile(const QString& filename);
@ -51,3 +55,5 @@ public:
#endif

View File

@ -103,7 +103,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<IncludePath>..\..\BaseCommonLibrary;..\..\BaseCommonLibrary\BaseTool;..\..\BaseCommonLibrary\ToolAbstract;..\..\GPUBaseLib\GPUTool;.\BaseToolbox;..\..\RasterMainWidgetGUI\RasterMainWidget;..\..\RasterMainWidgetGUI;..\..\SPG4Tool;..\..\RasterProcessToolWidget;$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
<IncludePath>..\..\GF3CalibrationAndOrthLib;..\..\BaseCommonLibrary;..\..\BaseCommonLibrary\BaseTool;..\..\BaseCommonLibrary\ToolAbstract;..\..\GPUBaseLib\GPUTool;.\BaseToolbox;..\..\RasterMainWidgetGUI\RasterMainWidget;..\..\RasterMainWidgetGUI;..\..\SPG4Tool;..\..\RasterProcessToolWidget;$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\Toolbox\</OutDir>
<TargetName>PluginTool_$(ProjectName)</TargetName>
<CopyLocalProjectReference>true</CopyLocalProjectReference>
@ -195,8 +195,6 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="BaseToolbox\DEMLLA2XYZTool.cpp" />
<ClCompile Include="BaseToolbox\GF3CalibrationAndGeocodingClass.cpp" />
<ClCompile Include="BaseToolbox\GF3PSTNClass.cpp" />
<ClCompile Include="BaseToolbox\QClipRasterByRowCols.cpp" />
<ClCompile Include="BaseToolbox\QComplex2AmpPhase.cpp" />
<ClCompile Include="BaseToolbox\QConvertCoordinateSystemDialog.cpp" />
@ -209,15 +207,11 @@
<ClCompile Include="BaseToolbox\QtCreateGPSPointsDialog.cpp" />
<ClCompile Include="BaseToolbox\QtLookTableCorrectOffsetDialog.cpp" />
<ClCompile Include="BaseToolbox\RasterVRT2ENVIdataDialog.cpp" />
<ClCompile Include="BaseToolbox\SatelliteGF3xmlParser.cpp" />
<ClCompile Include="BaseToolbox\SateOrbit.cpp" />
<ClCompile Include="BaseToolbox\simptsn.cpp" />
<ClCompile Include="BaseToolbox\WGS84_J2000.cpp" />
<ClCompile Include="SARSatalliteSimulationWorkflow.cpp" />
<QtMoc Include="SARSatalliteSimulationWorkflow.h" />
<QtMoc Include="BaseToolbox\DEMLLA2XYZTool.h" />
<ClInclude Include="BaseToolbox\GF3CalibrationAndGeocodingClass.h" />
<ClInclude Include="BaseToolbox\GF3PSTNClass.h" />
<QtMoc Include="BaseToolbox\QClipRasterByRowCols.h" />
<QtMoc Include="BaseToolbox\QComplex2AmpPhase.h" />
<QtMoc Include="BaseToolbox\QImportGF3StripL1ADataset.h" />
@ -230,8 +224,6 @@
<QtMoc Include="BaseToolbox\QtLookTableCorrectOffsetDialog.h" />
<QtMoc Include="BaseToolbox\QtCreateGPSPointsDialog.h" />
<QtMoc Include="BaseToolbox\RasterVRT2ENVIdataDialog.h" />
<ClInclude Include="BaseToolbox\SatelliteGF3xmlParser.h" />
<ClInclude Include="BaseToolbox\SateOrbit.h" />
<ClInclude Include="BaseToolbox\simptsn.h" />
<ClInclude Include="BaseToolbox\WGS84_J2000.h" />
<ClInclude Include="basetoolbox_global.h" />
@ -257,6 +249,9 @@
<ProjectReference Include="..\..\BaseCommonLibrary\BaseCommonLibrary.vcxproj">
<Project>{872ecd6f-30e3-4a1b-b17c-15e87d373ff6}</Project>
</ProjectReference>
<ProjectReference Include="..\..\GF3CalibrationAndOrthLib\GF3CalibrationAndOrthLib.vcxproj">
<Project>{886f7829-af74-4f23-b3be-29b7b3c9843c}</Project>
</ProjectReference>
<ProjectReference Include="..\..\GPUBaseLib\GPUBaseLib.vcxproj">
<Project>{b8b40c54-f7fe-4809-b6fb-8bc014570d7b}</Project>
</ProjectReference>

View File

@ -32,18 +32,6 @@
<ClCompile Include="BaseToolbox.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClInclude Include="BaseToolbox\GF3CalibrationAndGeocodingClass.h">
<Filter>BaseToolbox</Filter>
</ClInclude>
<ClInclude Include="BaseToolbox\GF3PSTNClass.h">
<Filter>BaseToolbox</Filter>
</ClInclude>
<ClInclude Include="BaseToolbox\SatelliteGF3xmlParser.h">
<Filter>BaseToolbox</Filter>
</ClInclude>
<ClInclude Include="BaseToolbox\SateOrbit.h">
<Filter>BaseToolbox</Filter>
</ClInclude>
<ClInclude Include="BaseToolbox\simptsn.h">
<Filter>BaseToolbox</Filter>
</ClInclude>
@ -55,12 +43,6 @@
<ClCompile Include="BaseToolbox\DEMLLA2XYZTool.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\GF3CalibrationAndGeocodingClass.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\GF3PSTNClass.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\QClipRasterByRowCols.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
@ -76,12 +58,6 @@
<ClCompile Include="BaseToolbox\QRDOrthProcessClass.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\SatelliteGF3xmlParser.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\SateOrbit.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>
<ClCompile Include="BaseToolbox\simptsn.cpp">
<Filter>BaseToolbox</Filter>
</ClCompile>

View File

@ -1,31 +0,0 @@
#pragma once
#include "BaseConstVariable.h"
#include "ImageOperatorBase.h"
#include "LogInfoCls.h"
#include "SARSimulationImageL1.h"
#include "GF3PSTNClass.h"
#include <QString>
// 数据定标
ErrorCode GF3CalibrationRaster(QString inRasterPath, QString outRasterPath, double Qualifyvalue, double calibrationConst);
ErrorCode ImportGF3L1ARasterToWorkspace(QString inMetaxmlPath,QString inRasterPath, QString outWorkDirPath, POLARTYPEENUM polsartype);
QVector<QString> SearchGF3DataTiff(QString inMetaxmlPath);
POLARTYPEENUM getDatasetGF3FilePolsarType(QString fileName);
ErrorCode ImportGF3L1AProcess(QString inMetaxmlPath, QString outWorkDirPath);
// RD 算法类
ErrorCode RD_PSTN(double& refrange,double& lamda, double& timeR, double& R, double& tx, double& ty, double& tz, double& slopex, double& slopey, double& slopez, GF3PolyfitSatelliteOribtModel& polyfitmodel, SatelliteOribtNode& node,double& d0,double& d1, double& d2, double& d3, double& d4);
//创建查找表
ErrorCode GF3RDCreateLookTable(QString inxmlPath, QString indemPath, QString outworkdir, QString outlooktablePath, QString outLocalIncidenceAnglePath, bool localincAngleFlag=false);
ErrorCode GF3OrthSLC( QString inRasterPath, QString inlooktablePath, QString outRasterPath);
// 正射处理流程
ErrorCode GF3RDProcess(QString inxmlPath, QString indemPath, QString outworkdir, double gridx, double gridy);