Click or drag to resize
XDL

XVectorIO Class

XVectorIO클래는 표준 포맷 혹은 상용 포맷의 벡터파일(shp, dxf등)을 읽을수 있는 기능을 정의한다.
Inheritance Hierarchy
SystemObject
  Pixoneer.NXDL.NIOXVectorIO

Namespace:  Pixoneer.NXDL.NIO
Assembly:  NXDLio (in NXDLio.dll) Version: 1.2.817.72
Syntax
C#
public class XVectorIO : IDisposable

The XVectorIO type exposes the following members.

Constructors
  NameDescription
Public methodXVectorIO
XVectorIO클래스의 기본 생성자로서, 멤버변수에 대하여 초기화를 수행한다.
Top
Methods
  NameDescription
Public methodExport
표준 및 상용 포맷의 벡터 파일로 저장한다.
Public methodGetDriverKey
입력 인덱스에 의한 Driver Key를 반환한다.
Public methodGetFiltersForLoad
XVectorIO객체로부터 로딩이 가능한 필터를 얻는다. 이 필터 String은 보통 Load Dialog Box에서 사용된다.
Public methodGetFiltersForSave
XVectorIO객체로부터 저장이 가능한 필터를 얻는다. 이 필터 String은 보통 Save Dialog Box에서 사용된다.
Public methodInitialize
XVectorIO객체를 초기화하고 IO Driver를 로딩한다.
Public methodIsExtensionExportSupported
this객체가 Export기능에 대하여 입력되는 파일 타입을 지원하는지 여부를 채크한다.
Public methodIsExtensionImportSupported
this객체가 Import기능에 대하여 입력되는 파일 타입을 지원하는지 여부를 채크한다.
Public methodIsKeyImportSupported
this객체가 입력되는 Key(예 : "DXF", "SHP" 등)에 대하여 지원 가능한지여부를 채크한다.
Public methodLoadFile
표준 및 상용 포맷의 벡터 파일을 로딩한다.
Top
Remarks

Examples
Korea TM Centrol belt 좌표계인 Shape 파일을 읽어 XScene 객체로 변환한 뒤 Scene 객체를 위경도로 좌표변환하고 SML 파일로 저장하는 예제이다.
using Pixoneer.NXDL;
using Pixoneer.NXDL.NIO;
using Pixoneer.NXDL.NRS;
using Pixoneer.NXDL.NCC;
using Pixoneer.NXDL.NFT;
using Pixoneer.NXDL.NSCENE;

//Create Vector IO Manager
XVectorIO VectorIO = new XVectorIO();
String strError = "";
if (VectorIO.Initialize(out strError) == false)
{
    return;
}

// Create spatial reference of input vector file.
XSpatialReference srIn = new XSpatialReference();
srIn.importFromEPSG(40055); // Korea TM Central belt
String strFilePathLoad = "D:\\Sample\\Vector_Sample\\sample.shp";
XftDataSource vectorDS = VectorIO.LoadFile(strFilePathLoad, out strError, ref srIn);

// Create scene object to convert shape to scene file.
XScene scene = new XScene();

// Convert feature data source to Scene object.
String msg = "";
for (int k = 0; k < vectorDS.NumLayer; k++)
{
    XftFeatureLayer layer = vectorDS.GetLayerAt(k);
    for (int j = 0; j < layer.NumFeature; j++)
    {
        XftFeature feature = layer.GetFeatureAt(j);
        XscObj obj = Xsc.Feature2SceneObj(feature);
        scene.AddNode(j, obj);

        int fieldcount = feature.NumField;
        for (int i = 0; i < fieldcount; i++)
        {
            string name = feature.GetFieldName(i);
            eFieldType type = feature.GetFieldType(i);
            if (obj.GetTypeName() == "XscPolygon")
            {
                XscPolygon scObj = (XscPolygon)obj;

                if (type == eFieldType.FieldReal)
                {
                    string temp;
                    double value = feature.GetFieldAsDouble(i);
                    temp = name + " : " + value.ToString("f4") + "\n";
                    msg += temp;
                }
                else if (type == eFieldType.FieldString)
                {
                    string temp;
                    string value = feature.GetFieldAsString(i);
                    // Do something....
                }
                else if (type == eFieldType.FieldInteger)
                {
                    string temp;
                    int value = feature.GetFieldAsInteger(i);
                    // Do something....

                }
                else
                {
                    // Do something....
                }
            }
            else if (obj.GetTypeName() == "XscComplexPolygon")
            {
            }
            else if (obj.GetTypeName() == "XscPoint")
            {
            }
        }
    }
}

// Convert "Korea 2000 / Korea Central Belt" to "WGS84" 
XSpatialReference srOut = new XSpatialReference();
srOut.SetWellKnownGeogCS("WGS84");
scene.SR = srIn;        
XScene sceneConvert = XScene.Convert(scene, srOut);

// Save WGS 84 Scene object
string strExt = Path.GetExtension(strFilePathLoad);
string strPath = strFilePathLoad.Substring(0, strFilePathLoad.Length - strExt.Length);
strPath += ".sml";
XScene.SaveScene(sceneConvert, strPath, null);
See Also