ArcGIS Engine 10 开发手册(4-10)子类和域

本文目录
  • 正文

空间数据库(Geodatabase)是一个面向对象的数据库,它将空间实体视为对象加以管理,并为对象的完 整性提供了一些行为,其中阈和子类是很常见的。

子类和域的概念

子类提供了一种划分要素的方法,即依据长整型数属性值把要素类划分成多个逻辑组。例如,街道类 中有一个长整型属性字段 CLASS(街道级别),1 代表主要街道,2 代表次要街道。将街道类划分为两个子 类,主要街道和次要街道就是根据要素类中的列的数值而创建。任何值为 1 的要素都归类到次要街道子类, 值为 2 的要素类属于主要街道子类。这样在 ARCMAP 中可以利用符号表示或根据子类对其进行编辑。通过子 与一个域的联结,还可以为整个子类加强数据的完整性。注意:子类列必须是长整数。

域是适用于业务表中字段的规则,它们通过只允许在字段中输入为属性域所指定的值来实施数据 完整性。ArcGIS 中提供了两种类型的域:范围属性域和编码属性域,其中范围属性域仅适用于数值 字段。下面是 ArcGIS Engine 关于域的模型图:

代码创建域

域是数据库的一个属性,而不是要素类的,因此要定义一个域是在数据库的层次上进行,下面我 们用代码创建一个编码域

void CreateDomain (IWorkspace pWorkspace)
{
  IWorkspaceDomains pWorkspaceDomains = (IWorkspaceDomains) pWorkspace;
  ICodedValueDomain pCodedValueDomain = new CodedValueDomainClass ();
  pCodedValueDomain.AddCode ("RES","Residential");
  pCodedValueDomain.AddCode ("COM","Commercial");
  pCodedValueDomain.AddCode ("IND","Industrial");

  IDomain pDomain = (IDomain) pCodedValueDomain;
  pDomain.Name = "Building Types";

  pDomain.FieldType = esriFieldType.esriFieldTypeString;
  pDomain.SplitPolicy = esriSplitPolicyType.esriSPTDuplicate;
  pDomain.MergePolicy = esriMergePolicyType.esriMPTDefaultValue;
  pWorkspaceDomains.AddDomain (pDomain);
}

public void AssignDomainToFieldWithSubtypes (IFeatureClass pFeatureClass)
{
  IDataset pDataset = (IDataset) pFeatureClass;
  IWorkspace pWorkspace = pDataset.Workspace;
  IWorkspaceDomains pWorkspaceDomains = (IWorkspaceDomains) pWorkspace;
  IDomain pDistributionDiamDomain = pWorkspaceDomains.get_DomainByName ("DistDiam");

  ISubtypes pSubtypes = (ISubtypes) pFeatureClass;

  pSubtypes.set_Domain (1, "SIZE_ONE",pDistributionDiamDomain);
}

public void AddPipeSubtypes (IFeatureClass pFeatureClass)
{

  ISubtypes pSubtypes = (ISubtypes) pFeatureClass;
  pSubtypes.SubtypeFieldName = "PipeType";
  pSubtypes.AddSubtype (1, "Primary");
  pSubtypes.AddSubtype (2, "Secondary");
  pSubtypes.DefaultSubtypeCode = 1;
}

ArcGIS Engine 10 开发手册全集

ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册

如您有疑问,可在文末留言,或到QQ群提问。

本站QQ群:291616564 麻辣GIS

微信公众号:malagis,扫描右边二维码直接关注。

微信捐助麻辣GIS 支付宝捐助麻辣GIS

如果本文对您有所帮助,欢迎对我们团队进行打赏捐助,让我们在传播3S的路上可以走得更远。


作者:,GIS爱好者。
分享本文,请您带上本文链接

发表评论