麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

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 开发手册

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)