简单要素类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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值