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 开发手册
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。