Click or drag to resize
XDL

XDMBandOrthoRPC Class

XDMBandOrthoRPC 클래스는 RPC를 이용하여 정사보정을 수행한다. IKONOS, Quick Bird, OrbView 영상을 배포할 때 RPC(Rational Polynomial Coefficients) 파일을 함께 제공하는 경우가 있다. RPC 파일에는 latitude, longitude, 표정 요소에 대한 정보가 있다. 이런 RPC 파일을 이용하면 외부 표정을 결정하지 않고도 센서 모델링이 가능하다.
Inheritance Hierarchy

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

The XDMBandOrthoRPC type exposes the following members.

Constructors
  NameDescription
Public methodXDMBandOrthoRPC
XDMBandOrthoRPC 클래스의 기본 생성자로서, 멤버변수에 대하여 초기화를 수행한다.
Top
Methods
  NameDescription
Public methodGetInputParam
RPC 정사보정에 대한 입력 파라미터를 얻는다.
Public methodSetInputParam
RPC 정사보정에 대한 입력 파라미터를 설정한다.
Top
Examples
This is example #1:
using Pixoneer.NXDL;
using Pixoneer.NXDL.NRS;
using Pixoneer.NXDL.NIO;
using Pixoneer.NXDL.NSM;

// 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\\Ortho\\MSC_070223014732_03064_10761263PN16_1R.xdm";
XRSLoadFile xrsFileInputImg = RasterIO.LoadFile(strFilePathLoadImg, out strError, false, eIOCreateXLDMode.All_NoMsg);

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

// Load rpc and make SensorModel
String strRPCPathLoad = "D:\\Sample\\RS_Sample\\Ortho\\MSC_070223014732_03064_10761263PN16_1R.rpc";
XRpc smRPC = new XRpc();
smRPC.LoadFromRPC(strRPCPathLoad, eSensorRPCType.Ikonos, out strError);

// Set Input Param
XBandParamOrtho InputParam = new XBandParamOrtho();
InputParam.SensorModel = smRPC;
InputParam.SrcBand = xrsFileInputImg.GetBandAt(0);
InputParam.DemBand = xrsFileInputDem.GetBandAt(0);
InputParam.PixelSizeX = 0.00005; // degree If DEM coordinate is Geographic
InputParam.PixelSizeY = 0.00005; // degree If DEM coordinate 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;

    XDMBandOrthoRPC bandTmp = new XDMBandOrthoRPC();
    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_OrthoRPC.xdm";
if (!RasterIO.Export(ref fileSave, strFilePathSave, "XDM", out strError, thd))
{
    return;
}
See Also