簡單要素類ABC

概念:

簡單要素類是相同類型簡單要素的集合;是要素分類的概念性表示;是一 種描述地理要素的格式分類。

簡單要素(SFeature):

1.真實世界中的地理對象在地圖上的表示;

2.簡單要素具有幾何和屬性。

簡單要素類(SFeatureCls ):

    1.簡單要素類是相同類型簡單要素的集合;

   2.簡單要素分類的概念性表示;

   3.一種描述地理要素的格式分類;

   4.在地理數據庫中具有幾何信息的對象類。

簡單要素類對象接口關係圖

簡單要素類基本操作

組件

mc_basObj7Lib

基本對象定義及管理組件,提供了大量基本對象的定義,比如要素、屬性結構、屬性等。

mc_basXcls7Lib

矢量空間數據管理組件,提供了基本的類和數據集以及相關對象的定義及操作。

注意:在對空間數據進行操作時,必須對以上兩個組件添加引用。

using mc_basObj7Lib;

using mc_basXcls7Lib;

簡單要素類接口:mcSFeatureCls

  1. 如何打開一個簡單要素類?

    第一步:連接數據源:

    GDBSvr.Connect("MapGislocal", "","");

    第二步:打開數據庫:

    GDB = GDBSvr.get_gdb("DevelopDB");//DevelopDB爲數據庫名字

    第三步:打開簡單要素類:

    SFeatureCls =GDB.get_XClass(meXClsType.meXSFCls) as mcSFeatureCls;
        SFeatureCls.Open("Ku6_1s.wl",0); // Ku6_1s.wl爲簡單要素類名稱

  2. 如何添加一個點簡單要素類?

    第一步:連接數據源:

    GDBSvr.Connect("MapGislocal", "","");

    第二步:打開數據庫:

    GDB = GDBSvr.get_gdb("DevelopDB");//DevelopDB爲數據庫名字

    第三步:創建一個點簡單要素類

            SFeatureCls= GDB.get_XClass(meXClsType.meXSFCls) as mcSFeatureCls;
            SFeatureCls.Open("Ku6_1s.wl",0);

    第四步:構造點幾何類型

    Dot.x = 200;Dot.y = 200;
    GeoPoints.Append(Dot);

    第五步:添加點簡單要素類

            SFeatureCls.Append(GeoPoints,null, null);

注意:

SFeatureCls.Append(   IGeometry geom,mcRecord rcd,IGeomInfo inf)

該方法可以添加點、線、面三種類型的簡單要素類;

第一個參數:幾何形態:點、線、面 ;

第二個參數:屬性記錄 ;

第三個參數:幾何信息(顏色、大小等) 。

前面我們在打開一個點簡單要素類時只設置了第一個參數,如果想要給添加的簡單要素類增加屬性記錄和設置幾何信息,可以通過第二個和第三個參數來實現。

  1. 如何對簡單要素類進行查詢?

注意:

在MapGISK9中,只用一個方法——Select就可以實現所有常見的查詢功能,是以前版本中的AttSelect、PntSelect、RectSelect、RegSelect等方法的濃縮。此方法繼承了以前

空間查詢的所有思想,並通過與查詢接口IQueryDef 的聯合使用發揮強大的查詢功能。

 

SFeatureCls.Select(   mcQueryDef def, out mcRecordSet rcd );

第一個參數:查詢定義接口,通過對該接口的屬性進行設置可以進行任何查詢;

第二個參數:查詢出的結果集 ;

例如:

mcQueryDef QueryDef = newmcQueryDef();
mcRecordSet RecordSet = null;

//設置屬性查詢條件
QueryDef.Filter = "id>500";
SFeatureCls.Select(QueryDef, out RecordSet);

  1. 如何顯示一個簡單要素類?

    第一步:連接控件

            axMapXView1.WorkSpace= axMxWorkSpace1.ToInterface;

    第二步:打開簡單要素類

        參照"1.如何打開一個簡單要素類?"

第三步:調用XDisplay接口將簡單要素類顯示在MapXView中

        Display= axMapXView1.Display;

Display.DisplayXCls(SFeatureCls,RecordSet );

注意:

Display.DisplayXCls(   IBasClspXCls, mcRecordSet pXSet)

該方法有兩個參數。

第一個參數傳入類對象(簡單要素類、註記類等);

第二個參數傳入一個記錄集,這個記錄集是對前面的類對象進行查詢得來的。

此方法的意義在於對查詢出來的記錄集中的對象進行顯示。

 

如果想要顯示所有的對象,結果集設置爲null即可:Display.DisplayXCls(SFeatureCls, null);

 

以下爲代碼爲Objects參考手冊中DisplayXCls的示例代碼。)

using mc_basXcls7Lib;
using mc_basObj7Lib;
using mapXBase;

//變量定義
mcGDBServer GDBSvr = null; //地理數據庫服務器
mcGDataBase GDB = null; //地理數據庫
mcSFeatureCls SCls = null;
mcRect Rect = null;
mcRect Rect1 = null;
mcQueryDef QueryDef = null;
mcRecordSet RecordSet = null;
IBasCls BasCls = null;
IXDisplay Display = null;

//變量初始化
GDBSvr = new mcGDBServer();
QueryDef = new mcQueryDef();
Rect = new mcRect();
Rect1 = new mcRect();

//連接數據源,打開數據庫
GDBSvr.Connect("MapGislocal", "", "");
GDB = GDBSvr.get_gdb("DevelopDB");

//打開簡單要素類
BasCls = GDB.get_XClass(meXClsType.meXSFCls);
SCls = BasCls as mcSFeatureCls;
SCls.Open("Ku6_1s.wl", 0);

//設置矩形範圍
Rect.xmax = 300;
Rect.xmin = 100;
Rect.ymax = 300;
Rect.ymin = 100;

//空間查詢
QueryDef.set_rect(Rect,meSpaQueryMode.meModeContain);
SCls.Select(QueryDef,out RecordSet);

Display = axMapXView1.Display;

if (Display != null)
{
//獲得mapxview的窗口範圍
Rect1.xmin = 0;
Rect1.ymin = 0;
Rect1.xmax = axMapXView1.Width;
Rect1.ymax = axMapXView1.Height;

//設置設備座標
Display.Transformation.DeviceRect= Rect1;

//設置地圖視圖顯示的邏輯範圍
Display.Transformation.DispRect = SCls.Range;

//設置地圖的邏輯範圍。
Display.Transformation.MapRange = SCls.Range;

//顯示記錄集
Display.StartDraw();
Display.DisplayXCls(SCls, RecordSet);
Display.FinishDraw();

}

//關閉類,數據庫,斷開數據源連接

SCls.Close();
GDB.Close();
GDBServer.DisConnect();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章