Click or drag to resize
XDL

XDMBandOrthoFrame Class

XDMBandOrthoFrame 클래스는 Frame Sensor Model에 대한 정사보정을 수행한다.
Inheritance Hierarchy

Namespace:  Pixoneer.NXDL.NRS
Assembly:  NXDLrs (in NXDLrs.dll) Version: 1.2.817.72
Syntax
C#
public class XDMBandOrthoFrame : XDMBand

The XDMBandOrthoFrame type exposes the following members.

Constructors
  NameDescription
Public methodXDMBandOrthoFrame
XDMBandOrthoFrame클래스의 기본 생성자로서, 멤버변수에 대하여 초기화를 수행한다.
Top
Methods
  NameDescription
Public methodGetInputParam
Frame 센서 영상의 정사보정에 대한 입력 파라미터를 얻는다.
Public methodSetInputParam
Frame 센서 영상의 정사보정에 대한 입력 파라미터를 설정한다.
Top
Examples
Frame Sensor 모델 매개변수 및 출력 변수를 설정한 뒤 프레임 영상을 정사보정한다.
// IO initialize to load image file
XRasterIO RasterIO = new XRasterIO();
String strError = "";
if (RasterIO.Initialize(out strError) == false)
{
    return;
}
----
// Image load 
String strFilePathLoadImg = "D:\\Sample\\RS_Sample\\OrthoFrame\\FrameImage.tif";
XRSLoadFile xrsFileInputImg = RasterIO.LoadFile(strFilePathLoadImg, out strError, false, eIOCreateXLDMode.All_NoMsg);

// DEM load
String strFilePathLoadDem = "D:\\Sample\\RS_Sample\\OrthoFrame\\daejon_dem_10.xdm";
XRSLoadFile xrsFileInputDem = RasterIO.LoadFile(strFilePathLoadDem, out strError, false, eIOCreateXLDMode.All_NoMsg);

XSpatialReference sr = new XSpatialReference();
sr.importFromEPSG(40055); // Korea 2000 / Korea Central Belt

// Set Frame Sensor Parameter value
XFrameSensorParams smParam = new XFrameSensorParams();
smParam.FocalLength = 0.12;
smParam.SensorPos.x = 232954.461; // Korea 2000 / Korea Central Belt
smParam.SensorPos.y = 316145.192; // Korea 2000 / Korea Central Belt
smParam.SensorPos.z = 3889.389;
smParam.SensorYaw = XAngle.FromDegree(-0.09862);
smParam.SensorPitch = XAngle.FromDegree(0.08007);
smParam.SensorRoll = XAngle.FromDegree(-0.30901);
smParam.PSX = 0.0000012;
smParam.PSY = 0.0000012;
smParam.Width = 7680;
smParam.Height = 13824;
smParam.XPO = 0.0;
smParam.YPO = 0.0;
smParam.TopStartY = false;
smParam.SensorSR = sr;

XFrameSensor smFrame = new XFrameSensor();
smFrame.SetParamsLocal(smParam);

// Set Input Param
XBandParamOrtho InputParam = new XBandParamOrtho();
InputParam.SensorModel = smFrame;
InputParam.SrcBand = xrsFileInputImg.GetBandAt(0);
InputParam.DemBand = xrsFileInputDem.GetBandAt(0);
InputParam.PixelSizeX = 0.2; // If DEM coordiante is Geographic
InputParam.PixelSizeY = 0.2; // If DEM coordiante is Geographic
InputParam.UseConstant = false;
InputParam.HeightConstant = 0;

InputParam.ResampleMethodDem = eResampleMethod.BiLinear;
InputParam.ResampleMethodSrc = eResampleMethod.BiLinear;

// create XRSSaveFile to save realtime band(XDMBandXXXX)
// load another file to protect thread lock(it is stable and faster).
XRSLoadFile fileLoad = RasterIO.LoadFile(strFilePathLoadImg, out strError, false, eIOCreateXLDMode.All_NoMsg);
XRSSaveFile fileSave = new XRSSaveFile();
for (int i = 0; i < fileLoad.NumBand; i++)
{
    XDMBand bandRaw = fileLoad.GetBandAt(i);
    XBandParamOrtho param = new XBandParamOrtho(ref InputParam);
    param.SrcBand = bandRaw;

    XDMBandOrthoFrame bandTmp = new XDMBandOrthoFrame();
    bandTmp.BandName = bandRaw.BandName;
    bandTmp.SetInputParam(ref param);

    XDMBand bandCast = (XDMBand)bandTmp;

    fileSave.AddBand(ref bandCast);
}

// Save output file
XThread thd = null;
String strFilePathSave = "D:\\Sample\\Out_OrthoFrame.xdm";
if (!RasterIO.Export(ref fileSave, strFilePathSave, "XDM", out strError, thd))
{
    return;
}
----
See Also