Arcgis中的Domain与修改应用

转载自:http://t.csdn.cn/yQHYp

有数据库基础开始学习ArcGIS engine,遇到域的操作始终无法理解,本文整理了网络上对ArcGIS Domain介绍。

ArcGIS官网对Domain介绍:属性域快速浏览

属性域是描述字段类型合法值的规则,提供了一种增强数据完整性的方法。属性域是可接受的特性值的声明。属性域用于约束表或要素类的任意特定属性中的允许值。如果要素类中的要素或表中的非空间对象已被分组为各个子类型,则可将不同的属性域分配给每个子类型。如果一个属性域与某个特性字段相关联,则只有该属性域内的值才对此字段有效。也就是说,此字段不会接受不属于该属性域的值。使用属性域可针对特定字段限制可供选择的值,从而有助于确保数据完整性。

Arcgis中的Domain

Arcgis中的应用模块 arcmap 和 ArcCatalog 中都有 domain(域) 的应用与设置。

下面介绍 Arcmap 中如何实现码域的设置与应用。

要解决的问题:

1、什么是domain

 域(Domain)这个词有很多的定义。在我们这里,表述的是限定属性一组值。属性有两种不同的域,值域(range domains)可以指定一个范围的值域(最小值、最大值),最小最大值可以使用整型或浮点型数值表示。码域(Coded valuedomains)则是合法属性代码的列表。域可以用于对应类型的任何字段中,比如你便可以为要素类的ID号创建一个整型的值域,这样这个值域便可以应用到很多要素类中。域是作为Geodatabase的属性存储的,而不是某个特定的类。

设置值域(range domain)
值域只能用于数值型字段中。你可以设置最小和最大值。比如设置电线杆的高度最低为8米,最高为12米。

设置码域(coded value domain)
码域可以用于数值型和文本型字段中。可以设置一个“描述信息(Description)= 值(Value)”的列表。这时候,ArcMap的属性编辑器(attribute editor)的下拉菜单中出现的是描述信息,而不是值。下面是两个码域的举例,左边一组中,PoleTypt是整型字段;右边一组中,PoleType是字符串型字段。那么码域可以这么设置:
 描述信息   = 值                  描述信息   = 值
 Wood poles =1               Wood poles = Wood 
 Steel poles =2                 Steel poles = Steel 
 Concrete poles = 3          Concrete poles = Concrete

2 、要实现的目标

在进行数据录入的时候,有一些内容是重复的,比如地震工程安全性评价中场地土类型,为了避免每次录入的麻烦,将场地土类型进行码域设置,这样录入的时候直接选择相应的类型,而避免了进行重复的文字录入,提高工作效率。如图

 3、实现技术路线

主要将在arcmap中如何实现。

1 、在ArcCatalog中新建一个PersonnalGeodatabase

2 、打开Arcmap→点击→+添加想要编辑的文件。

3 、点击Data Management→Domain

4、 Creat Domain

5、 Add Coded Value To Domain.

(最后添加的结果如图)

 6、 Assigne Domain To Field

7 、打开要素的属性表,选择Editor→Star Editing.然后就会看见相应自己设置的选项。完成

8 、属性域规则验证

     在arcmap中在边界状态下选中需要验证的要素,在editor下拉菜单中选择validated,对要素的Domain属性进行验证。

ArcGIS设置字段的Domain

转自:http://blog.sina.com.cn/s/blog_673c98be0101axna.html

设置Domain主要是为了编辑的方便,这个问题也是用EditWidget时遇到的,特此记录。

1.ArcCatalog中:

选中sde数据库,右键属性打开,设置,注意有两种类型:Range和Code Values

选中Layer,右键打开属性,Fields标签页下进行设置,选中字段如果下方没有出现Domain,是由于被lock了,重启sde服务,再重新连接进行操作。而且字段类型要与预先定义的Domain的类型一致,否则也不会下方的doman.

设置完成后,在ArcMap中编辑,字段的值就可以直接选择,不用输入。

 在EditWidget中编辑时,对应的字段也成了ComboBox,相应的参考另一篇博文

 2.在ArcMap中使用toolBox来定义设置

参考资料:

arcgis不常用功能之Domain(域)-华夏土地论坛 - Powered by Discuz!

1) 在ArcCatalog中新建一个Personnal Geodatabase

2 )打开Arcmap→点击→+添加想要编辑的文件。

3)点击Data Management→Domain

4 )Creat Domain

5 )Add Coded Value To Domain.

6 )Assigne Domain To Field

ArcGIS中的Domain与Subtype 

转自:

http://webcache.googleusercontent.com/search?q=cache:1zLWTgJVkawJ:lijiwei19850620.blog.163.com/blog/static/97841538201210130595452/+&cd=4&hl=en&ct=clnk&gl=jp

Domain——属性域——针对数据库——在数据库属性中设置

相当于数据字典,设置了Domain的字段在赋值时从中选取属性值,用于保证数据完整性和减小数据的输入量。

Subtype——子类——针对要素类——在要素类属性中设置

同一要素类的逻辑分类,每个要素类只能设置一个Subtype字段,且该字段为整型数据。

每个Subtype可以为同一字段设置不同Domain,使不同Subtype的同一字段具有不同的取值范围。

参考文献:

ArcGIS中Subtype

http://blog.csdn.net/zhanghlivan/article/details/7435847

Domain

http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/001s00000001000000/

Subtype

ArcGIS 帮助 10.1

ArcGIS92 的xy domain和precision

转自:新浪博客

1、XY main

用ArcMap加载sde里的数据或者导入shp数据是常常出现“超出范围”的错误提示 。

导致原因是:domain设置的问题。数据在导入sde的时候默认是按照空间参考的domain 来设置的,由于原始的shp文件空间参考是unkown,在导入的时候就按照数据的extent来设置domain,因此在ArcMap里稍一移动就会超出domain的范围而报错,而shp文件没有domain的限制故不会报错。

解决办法是:在将shp文件import进sde的时候,点那个对话框下面的Environment settings,然后在Geodatabase settings栏里设置output xy domain。可以打开该shp文件在它extent的基础上加大一点,最好相关数据的domain设置一致,或者在sde中新建一个Featureclass(默认domain很大),再将数据load进来。

如果是9.2以前,在生成要素类或者要素集的时候需要指定xy domain不然在数据导入/导出中会有范围限制(有时提示超出范围的错误),但是在9.2中不再需要手工指定范围。

在9.2中已经采用新的高精度数据存储方式,不再需要指定xy domain。当你在9.2中创建单一的featureclass,或者dataset,软件会为选择的坐标系自动计算合适的xy domain,当然在向导生成他们的过程中,范围中涉及的Minx,Miny,Maxx,Maxy,默认不再可编辑,甚至你都看不到。

其实合适的数据精度值也在这一过程中计算出来了,但是这个精度值是可以需要自己手动指定的。对应空间范围:

当指定unknown空间参考时,出现编辑区域但是只有更改Minx,Miny有效,而且测试发现Maxx,Maxy值直接定义在在1016数量级(当然手动修改的话,可以设置的更大)。

当你选择空间参考中定义好的坐标系时,空间范围与坐标系定义相关。

当你修改Minx,Miny值或者通过数据库修改系统表SPATAIL_RES修改范围(也只有修改Minx,Miny值),Maxx,Maxy值直接定义在在1016数量级。

需要注意的是arcgis9.2以前xy domain与precision相关密切。

1.2. Precision

Arcgis中对precision的设置对数据的影响包括系统数据的有效精度,存储空间(当记录数海量时明显),数据处理和查询的效率。

Arcgis9.2以前,坐标数据,在geodatabase中是以低精度32位bit( 4字节)的整型数存储的。例如:scale值设置为10(相当于precision为0.1)时,在geodatabase中存储为2356257.11*10= 23562571.1= 23562571

反馈客户端为23562571/10= 2356257.1

那么在这个过程中其实发生了数据损失,数据损失随scale值递增。换而言之,设置的高精度precision,将会压缩xy domain,也就是说在实际工作中必须要在xy domain和precision之间寻求一个平衡点。

Arcgis9.2以后,在geodatabase中可以以双精度53位bit整型数存储和处理。这种双精度(高精度)数据存储相比以前提供了更广泛和更精确的范围,甚至可以包括所有的坐标系统,因此到了无需用户定义域的程度。这个可以解决xy domain与precision的问题,从这个方面可以说简化了创建和维护空间数据的过程。在arcgis9.2后,当您创建一个新的dataset ,软件自动计算出用户选择的坐标系统的适当xy domain,范围中涉及的Minx,Miny,Maxx,Maxy,默认不再可编辑,除非你创建数据没有指定坐标系统。如果您坐标系统为自定义或unknown,那么向导引导你确定需要xy domain。

对于已有的9.2以前的数据,在9.2后的软件中你可以通过Data Management Tools  > Database  > Upgrade Spatial Reference实现对precision的升级。

lk个人理解:Domain作为真实数据显示出来的外皮,无法直接被写入到字段,还需要导出Domain表格之后,将真实数据填写到字段后,字段会自动显示为Domain设置的显示字段。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值