1) 坐标整数存储
Arcinfo coverage以浮点型存储空间坐标,然而ArcSDE使用整型存储。那么空间坐标值在存入sde中必须有个转换问题。为提高精度,arcsde先把浮点坐标乘以一个比例系数,然后再利用四舍五入取整。比如:
2356257.11*10=23562571.1=23562571
当把整数坐标返回浮点坐标到客户端时,arcsde会除以这个比例系数:
23562571/10=2356257.1
这个时候可以注意到数据的有效精度会有所损失,引起这个的就是比例系数值。假如上面例子比例系数为1000,那么这样的误差就小多了。但是这样带来的一个问题是存储空间会有所增加。
2) 图形编辑
事实上GIS软件存储坐标点数据格式通常有三种格式:long integer,single precision,double precision。三者存储有效数字的能力:
Long integer 9
single precision 7
double precision 13
不管用哪一种方式存储空间数据都可能会引起坐标存储“舍取”问题。比如用长整型存储坐标值可能涉及的一个问题是:
123456.7891 存储为 123456.789
123456.7899 存储为 123456.789
也就是123456.7891和123456.7899再返回客户端渲染的时候是同一个值。
根据这个存储方式,实际上在arcgis中(也应该包括其他软件中)坐标系统可以类似的描述为一个网格点阵,那么在数据处理中点的处理将被捕捉到这些网格点上。比如插入点的操作,本来在一段直线上应该是一个线形的方程,插入2个点应该也是线形变化,但是实际情况点坐标值的存储“舍取”使得有可能补捉到其他的网格点坐标值。这个在细微的数据编辑和处理,或者scale值设定的足够大时可能不会在视觉上引起注意。但是如果数据结构的scale设置的比较小时,就会在图形编辑上反映出来。比如数据转换有时候会有锯齿或者稍微的偏移,或者在移动一个节点的时候痛苦的发现始终不能到达想要的地方。
3) 图形拓扑
正是因为上面描述的问题,那么坐标的这种存储和恢复机制可能引起拓扑问题,特别在精度要求比较高的数据处理中。例如两个相邻的polygon(shape/sde存储结构与coverage文件存储结构不同)的公共边在这里是存储了2次。
如果编辑其中一个polygon,插入2个节点,那么2个节点坐标值将捕捉到邻近的网格点位置。
结果在两个polygon之间将出现极小的缝隙。
解决的办法呢可以设置足够的tolerance或者scale进行编辑。
4) 存储空间
创建新图层或者新数据集时,需要指定空间参考,坐标范围,图层比例系数等。图层比例系数需要指定满足坐标精度要求的最小比例系数。比例系数一旦设定,就不能更改,要么重新建立一遍。按前面说的如果图形比例系数设定越大,那么会增加存储空间。其实还会影响arcsde处理数据的速度。按照arcsde提供的数据结构,在压缩存储32-bit的整型点二进制大型对象时,完整的4个字节存储第一个点的坐标,以后每个点的坐标都以它距前一个点的偏移距离来存储。如果偏移很大的时候,arcsde会申请保留6个bit来处理坐标存储。但特殊处理下,大偏移量可以占用第5个字节。