Click or drag to resize
XDL

XSarGenerateInterferogram Method

SAR 영상 두 장을 입력받아 Interferogram 데이터를 생성한다.

Namespace: Pixoneer.NXDL.NSAR
Assembly: NXDLsar (in NXDLsar.dll) Version: 3.0.0.3
Syntax
C#
public static bool GenerateInterferogram(
	XSarParameters paramA,
	XOrbit orbitA,
	XGrid slcA,
	XSarParameters paramB,
	XOrbit orbitB,
	XGrid slcB,
	eInterpFilter FilterType,
	out XGrid Interferogram,
	XGrid Phase,
	XGrid Coherence,
	int logType,
	out string logFolderPath,
	XThread thd
)

Parameters

paramA  XSarParameters
Sar 영상 A의 입력 파라메터
orbitA  XOrbit
Sar 영상 A의 궤도 정보
slcA  XGrid
Sar 영상 A의 Single Look Complex data
paramB  XSarParameters
Sar 영상 B의 입력 파라메터
orbitB  XOrbit
Sar 영상 B의 궤도 정보
slcB  XGrid
Sar 영상 B의 Single Look Complex data
FilterType  eInterpFilter
Interferogram 데이터에 적용된 Filter 종류
Interferogram  XGrid
[out] Interferogram 데이터
Phase  XGrid
null이 아닌경우 Interferogram Phase 데이터를 저장
Coherence  XGrid
null이 아닌경우 Coherence 데이터를 저장
logType  Int32
로그정보 저장 방식 (0:로그정보 저장 없음, 1:임시 폴더에 로그 정보 저장, 2:로그 파일(00log.txt)과 함께 임시 폴더에 중간 데이터(XDM 형식) 저장
logFolderPath  String
[out] 로그 파일이 저장된 폴더. logType이 0인 경우 빈 문자열을 반환
thd  XThread
작업 쓰레드

Return Value

Boolean
Interferogram 데이터 생성 성공 여부
Example
두 장의 SAR 영상(K5)를 입력으로 받아 Interferogram 데이터를 생성하는 예제이다.
각 하위 데이터 별로 영상을 로딩하는 예제이다.
C#
XRasterIO RasterIO = new XRasterIO();
string strError = "";

if (!RasterIO.Initialize(out strError))
{
    MessageBox.Show(strError);
}

string SrcPairAPath = "..\\A\\K5_20150205174406_000000_08001_D_HR05_HH_SCS_B_L1A.h5";
string SrcPairBPath = "..\\B\\K5_20150305174354_000000_08422_D_HR05_HH_SCS_B_L1A.h5";
string logFolderPath = "";

XRSLoadFile inputFileA = RasterIO.LoadFile("K5HDF5", SrcPairAPath, out strError, false, Pixoneer.NXDL.NIO.eIOCreateXLDMode.All_NoMsg, true);
XSarParameters paramsA = inputFileA.SarParameters;
XOrbit orbitA = inputFileA.Orbit;
XDMBandComplex bandA = new XDMBandComplex();
XBandParamComplex pA = new XBandParamComplex();
pA.OutputType = eComplexOutType.Complex;
pA.SrcBand = inputFileA.GetBandAt(0);
bandA.SetInputParam(ref pA);

XRSLoadFile inputFileB = RasterIO.LoadFile("K5HDF5", SrcPairBPath, out strError, false, Pixoneer.NXDL.NIO.eIOCreateXLDMode.All_NoMsg, true);
XSarParameters paramsB = inputFileB.SarParameters;
XOrbit orbitB = inputFileB.Orbit;
XDMBandComplex bandB = new XDMBandComplex();
XBandParamComplex pB = new XBandParamComplex();
pB.OutputType = eComplexOutType.Complex;
pB.SrcBand = inputFileB.GetBandAt(0);
bandB.SetInputParam(ref pB);

XGrid slcA = new XGrid();
XGrid slcB = new XGrid();
XGrid outInterf;                      // Interferogram 데이터(복소수)
XGrid outPhase = new XGrid();         // Interferogram 위상 정보
XGrid outCoherence = new XGrid();     // Interferogram Coherence 정보

bandA.ReadSubset(ref slcA, 0, 0, bandA.XSize - 1, 0, bandA.YSize - 1);
bandB.ReadSubset(ref slcB, 0, 0, bandB.XSize - 1, 0, bandB.YSize - 1);

//// 필터 적용 없음
//Pixoneer.NXDL.NSAR.XSar.GenerateInterferogram(paramsA, orbitA, slcA, paramsB, orbitB, slcB, Pixoneer.NXDL.NSAR.eInterpFilter.None, out outInterf, null, null, 0, out logFolderPath, null);
//// Spatial 필터 적용
//Pixoneer.NXDL.NSAR.XSar.GenerateInterferogram(paramsA, orbitA, slcA, paramsB, orbitB, slcB, Pixoneer.NXDL.NSAR.eInterpFilter.Spatial, out outInterf, null, null, 0, out logFolderPath,null);
// Spatial 필터 적용 후 Phase 필터 적용
Pixoneer.NXDL.NSAR.XSar.GenerateInterferogram(paramsA, orbitA, slcA, paramsB, orbitB, slcB, Pixoneer.NXDL.NSAR.eInterpFilter.Phase, out outInterf, null, null, 0, out logFolderPath, null);

//// Interferogram 데이터만 필요할 때, 로그 정보 저장 없음
//Pixoneer.NXDL.NSAR.XSar.GenerateInterferogram(paramsA, orbitA, slcA, paramsB, orbitB, slcB, Pixoneer.NXDL.NSAR.eInterpFilter.Phase, out outInterf, null, null, 0, out logFolderPath, null);
//// Phase, Coherence 데이터 필요할 때, 로그 정보 저장
//// 로그 위치 : 실행파일(*.exe)가 있는 폴더와 같은 수준의 Temp 폴더에 임시 폴더를 생성하여 로그 정보 저장
//Pixoneer.NXDL.NSAR.XSar.GenerateInterferogram(paramsA, orbitA, slcA, paramsB, orbitB, slcB, Pixoneer.NXDL.NSAR.eInterpFilter.Phase, out outInterf, outPhase, outCoherence, 1, out logFolderPath, null);
See Also