基础知识

属性域基础知识
属性域工具箱

ArcEngine操作

常用接口

IDomain、ICodedValueDomain、ICodedValueDomain2、IRangeDomain

创建编码域(coded value domains)

//将Workspace对象转换到IworkspaceDomains接口
IWorkspaceDomains workspaceDomains = (IWorkspaceDomains)workspace;
// 创建编码域
ICodedValueDomain codedValueDomain = new CodedValueDomainClass();
// 添加编码
codedValueDomain.AddCode("RES", "Residential");
codedValueDomain.AddCode("COM", "Commercial");
codedValueDomain.AddCode("IND", "Industrial");
codedValueDomain.AddCode("BLD", "Building");
// 移除编码
codedValueDomain.DeleteCode("BLD"); // The "Building" code is removed.
// 将ICodedValueDomain对象转换到IDomain对象上,设置通用属性
IDomain domain = (IDomain)codedValueDomain;
domain.Name = "Building Types";
domain.FieldType = esriFieldType.esriFieldTypeString;
domain.SplitPolicy = esriSplitPolicyType.esriSPTDuplicate;
domain.MergePolicy = esriMergePolicyType.esriMPTDefaultValue;
// 添加Domain到工作空间中
workspaceDomains.AddDomain(domain);

创建范围域(range domains)

// 将Workspace对象转换到IworkspaceDomains接口
IWorkspaceDomains workspaceDomains = (IWorkspaceDomains)workspace;
// 创建范围域
IRangeDomain rangeDomain = new RangeDomainClass();
rangeDomain.MinValue = 0;//设置最小值
rangeDomain.MaxValue = 255;//设置最大值
//将IRangeDomain对象转换到IDomain对象上,设置通用属性
IDomain domain = (IDomain)rangeDomain;
domain.Name = "EightBitUnsignedInt";//设置Domain名称
domain.FieldType = esriFieldType.esriFieldTypeInteger;//设置Domain的字段类型
domain.SplitPolicy = esriSplitPolicyType.esriSPTDuplicate;//设置Domain的分割策略
domain.MergePolicy = esriMergePolicyType.esriMPTAreaWeighted;//设置Domain的合并策略
//添加Domain到工作空间中
workspaceDomains.AddDomain(domain);

打开值域

IWorkspaceDomains workspaceDomains = (IWorkspaceDomains)workspace;
IDomain requestedDomain = workspaceDomains.get_DomainByName(domainName);

删除值域

IWorkspaceDomains workspaceDomains = (IWorkspaceDomains)workspace;
workspaceDomains.DeleteDomain(domainName);

修改值域

//修改Domain的属性
......代码略
//修改完,调用AlterDmoain方法保存修改
IWorkspaceDomains2.AlterDomain(pDomain);

在字段上应用值域

// For example: domainName = "Material".
// fieldName = "CP_MATERIAL".
public void AssignDomainToField(IFeatureClass featureClass, String domainName,String fieldName)
{// Cast the feature class to IDataset to get a reference to the workspace.IDataset dataset = (IDataset)featureClass;// Get the workspace and cast it to the IWorkspaceDomains interface and get the requested domain.IWorkspace workspace = dataset.Workspace;IWorkspaceDomains workspaceDomains = (IWorkspaceDomains)workspace;IDomain domain = workspaceDomains.get_DomainByName(domainName);// Get the field to assign the domain to.IFields fields = featureClass.Fields;int fieldIndex = featureClass.FindField(fieldName);IField field = fields.get_Field(fieldIndex);// Check that the field and domain have the same field type.if (field.Type == domain.FieldType)    {// Cast the feature class to the ISchemaLock and IClassSchemaEdit interfaces.ISchemaLock schemaLock = (ISchemaLock)featureClass;IClassSchemaEdit classSchemaEdit = (IClassSchemaEdit)featureClass;// Attempt to get an exclusive schema lock.        try        {// Lock the class and alter the domain.schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);classSchemaEdit.AlterDomain(fieldName, domain);Console.WriteLine("The domain was successfully assigned.");        }catch (Exception exc)        {// Handle the exception in a way appropriate for the application.Console.WriteLine(exc.Message);        }finally{// Set the schema lock to be a shared lock.schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);}}else{Console.WriteLine("The field and the domain have different field types: " + "Field = {0}, Domain = {1}", field.Type, domain.FieldType);    }
}

ArcEngine Domain 总结相关推荐

  1. GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码

    ArcEngine打开cad文件的几种方法 方法一.通过遍历CAD数据集,依次加载中点线面注记等图层,所加载的数据均为一个独立的图层. IWorkspaceFactory pWorkspaceFact ...

  2. java arcengine_在Java程序中调用ArcEngine

    ArcEngine一般在C#中用的比较多,不过esri也是为Java提供了AE的类库的,不过文档确实没做的C#那么好.下面我记录一下如何在项目中配置使用AE的环境. 第一步:将arcobject.ja ...

  3. Apache启动时报Could not reliably determine the server's fully qualified domain name

    在系统启动时apache,没有启动起来,查看"事件查看器"发现报一些错误: The Apache service named  reported the following err ...

  4. ArcEngine中的缩放地图

    在ArcEngine地图操作中,缩放地图的功能经常用到,这里做一个小结. 缩放地图一般可分为以下几种情况: 1.缩放地图:与放大地图相对,一般是手动绘制区域或固定比例缩放,可调用命令或Expand函数 ...

  5. ArcEngine的ToolbarControl解析

    转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarContr ...

  6. 通过document.domain实现跨域访问

    通过document.domain实现跨域访问:https://blog.csdn.net/nlznlz/article/details/79506655 前端跨域方法之document.domain ...

  7. JBoss 系列十六:JBoss7/WildFly配置domain模式

    2019独角兽企业重金招聘Python工程师标准>>> 内容概要 JBoss7/WildFly有两种模式可供选择,即standalone和dimain模式,详细请参照社区文档(链接) ...

  8. java domain层_java框架中的controller层、dao层、domain层、service层、view层

    1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...

  9. ArcEngine开发中“错误类型****未定义构造函数”

    问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地方在实例化一个对象的时候. 比如: ISpatialReference a = new UnknownCoordinateS ...

最新文章

  1. 使用Keras计算余弦相似度(Cosine Similarity)
  2. Windows下利用TortoiseSVN搭建本地SVN服务器
  3. PHP开发环境MAMP for Windows
  4. 科大奥锐实验报告霍尔效应_大学物理实验报告系列之霍尔效应
  5. mysql-安装教程
  6. windchill文件无法上传服务器,Windchill MethodServer无法启动
  7. Kubernetes 详解
  8. Python标准库32个模块的整理
  9. CTFSHOW【萌新计划】Writeup
  10. postman怎么设置中文
  11. 苹果摄像头黑屏_品牌借势:苹果12发布会,王守义十三香领衔,杜蕾斯再出手...
  12. 数据分析报告怎么写?
  13. 辉芒微IO单片机FT60F024-RB
  14. Android用mediaPlayer.prepare()报错
  15. python登录斗鱼_python3 selenium模拟登陆斗鱼提取数据保存数据库
  16. Freemarker生成word文件,打开后页眉和页脚图片不显示
  17. pycharm使用虚拟环境时出现的那些问题
  18. 微信停止为苹果服务器,苹果用户注意!iOS成微信封号重灾区 赶快停止使用你的双客户端...
  19. 统计字符串中出现频率最高的字母 C语言
  20. IBM Watson大裁70% 员工,国内大批伪AI企业!

热门文章

  1. 汤晓丹的第四版计算机操作系统--第二章总结概述
  2. 网页点击弹出QQ对话框
  3. analytics -- Google 的使用。
  4. seo如何快速有效的引流
  5. 推荐一个下载电子书的站点,得益网
  6. Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
  7. 优秀的 Verilog/FPGA开源项目介绍(二十五)- FPGA图像处理库
  8. 使用扩散模型从文本生成图像
  9. ubuntu系统下adb连接手机
  10. 【开放数据】中国气象局API接口