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的升级