坐标或测量值超出范围的解决方法 您所在的位置:网站首页 gis打开shp文件显示打开要素类时出错 坐标或测量值超出范围的解决方法

坐标或测量值超出范围的解决方法

2024-07-12 14:45| 来源: 网络整理| 查看: 265

(3)解决方案一:使用追加工具,将环境中"XY属性域"设置"与输入相同",如果目标数据集没有坐标系统,需要先定义一个;(个人认为,这种方案的做法不对,后面分析原因)

(4)解决方案二:创建一个较大XY属性域的新要素类。(这里说得也不完整,实际工作中,还需要把已有的数据导入到新建要素类中)

如果仔细阅读官方帮助,反复测试数据,应该能解决问题,但官方解释并没说清楚原因,我们来仔细分析一下。

问题分析

遇到问题,一定要相信,你不是第一个人(或许只是你难以描述问题罢了)。据官方解释和实践证明,一切都是XY属性域在作怪。

问:XY属性域是什么时候创建的?

在新建要素类,根据要素类的空间参考它会自动计算XY属性域,默认为空间参考的域(Domain),即要素类空间参考X、Y坐标最大范围。当然,如果新建时不选择坐标系统,它也会给你创建一个较大的范围(-450359962737.05,450359962737.05,仅对9.2版本以后的地理数据库),不信你试试。

问:XY属性域怎么修改?

无法直接手动修改,可通过以下三种方式:导出Shp文件后再导入、设置工具XY属性域环境、新建要素类。详见"解决方案"。

问:为什么XY属性域会变化?

既然创建要素类时,会自动创建一个较大的XY属性域范围,又无法手动修改,那么它为什么会变小,以至于报错。对于本文所使用的测试数据,推测原因是导入了没有空间参考的Shp文件,具体如下:

(1)由于原始的Shp文件空间参考是unkown,在编辑时,Shp文件没有XY属性域的概念,因此不会被限制,故不会报错;

(2)编辑Shp文件完成后,在未定义坐标的情况下,直接导入地理数据库,此时会按照数据的要素范围(Extent)来生成XY属性域(Domain),稍微编辑超出范围则会报错;

(3)编辑Shp文件完成后,先定义数据坐标系统后,然后导入地理数据库,此时会按坐标系统的域(Domain)来生成XY属性域(Domain),这样就不会报错了。

解决方案

下面综合官方的解决方案,通过测试,可使用以下三种方法解决此问题:

方案一:导出导入法

方法:将数据导出为Shp文件,在保证有空间参考的情况下,再导入回去;

优点:此方法操作简单,能方便保留要素类的原始数据。

缺点:导出Shp文件后可能会造成字段名称被截取(Shp字段名不能超过10个字符);属性域、制图表达等(地理数据库特有功能)信息会丢失。

方案二:环境设置法

方法:使用合并工具,重新生成新要素类,在执行工具前,通过设置"环境"-"高级地理数据库"-"XY属性域"设置为 "如下指定"(指定较大的新的XY属性域);为什么使用追加工具不可以,是因为追加工具并未生成新的要素类(XY属性域改变仅对生成新的输出要素类有效),所以官方解决方案一不能实现。

优点:保留了导出导入法的优点,并避开其缺点。

缺点:如果要素类太多,批量操作麻烦;特别是遇到字段结构有差异的情况。

方法三:新建要素类法(推荐)

方法:先使用"创建要素类"工具批量创建空的要素类,模板文件选择以前对应的要素类;然后使用"追加"工具把数据复制过去。

优点:安全、便捷。

问题小结

1、XY属性域不是"属性域",也不是"要素范围",但它同属性域一样,可以限制数据有无效输入,所以,在某种程度上,也有它存在的合理性。将数据结构导出为xml文件,可以查看和修改XY属性域,如下图所示:

2、数据处理时牢记:不要使用Shp文件编辑数据(Shp文件常用来数据交互),不要将无空间参考的Shp文件导入地理数据库(先定义空间参考再导入);

本文作者:我也是个傻瓜

作者博客地址:

https://www.cnblogs.com/liweis/

bbs3s001返回搜狐,查看更多



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有