分享
 
 
 

Arc SDE 中空间坐标的的物理存储

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

SDE 中空间坐标的的物理存储

坐标顺序

一个SDE特征的几何属性,使用一个或者更多的坐标。坐标包括,最小包括一对x,y。一个特征

可能还有与x,y相关的z或m值.x,y,z和m值都以整数来存储。二进制流的顺序为x/y,x/y,...,x/y,

z,z,z,z...z,m,m,....m(z值和m值是可选的)。z,m值和x,y值直间都是一对一的关系。对于每一个

z,m值都有一个x,y对与之对应。

Multipart特征类型对象的表达

一个SDE特征的几何属性可能有一个或多个几何部分,每个部分使用一个坐标值分隔符。分隔符有

一个预定义的值。分隔符是第二个几何部分的开始,多个部分的几何属性坐标列表在二进制流中

以如下形式存储: x/y,x/y,...,x/y,<separator>,x/y,x/y,...,x/y,z,z,...,z,<separator>,z,

z,...,z,m,m,...,m,<separator>,m,m,...,m(z值和m值是可选的)

Point压缩

在二进制流中,每个x/y,z,和m值都压缩到一个顺序无关的字节流。

在SDE内部,所有的空间坐标都是从0到2147483647.这种格式提供了更好的准确性和完整性,

和相对于浮点数处理更优的性能表现.开发者应该知道内部整数的表示,因为有可能试图在

图层中存储一个过大的值.如果是那样的话,SDE将返回SE_COORD_OUT_OF_BOUNDS错误.开发者

不需要直接使用整数。

因为真实世界坐标既不是正也不是负值,SDE数据需要一个偏移距离(假原点)以确保

浮点数坐标转换到整数后是正的并有一个最小的比例系数

Part separators(Part 分隔符)

x 值为-1 ,y值为0,z和m值没有定义。分隔符在压缩时不需要任何逻辑

Point compression(点压缩)

压缩或解压缩存储在二进制流中的点分两个步骤:转换到相对偏移方案并压缩为字节数组。解压缩与之相反,

先从字节数组中解压缩,然后把值转为绝对坐标。每个过程都描述如下:

Relatie-offset value calculation(相对偏移值的计算)

转化坐标值为相对偏移的目的是使其在存储是占用尽可能少的字节。在一个存储相对偏移值的数组中,

第一个值是点的绝对坐标(使用32位整数)后面的值都是相对前一个的偏移值.

或者差值.因此,给定N个绝对坐标值,其绝对坐标计算如下:

relative_value[0]=absolute_value[0]

relative_value[1]=absolute_value[1]-absolute_value[0]

...

relative_value[N-2]=absolute_value[N-2]-absolute_value[N-3]

relative_value[N-1]=absolute_value[N-1]-absolute_value[N-2]

给定N个相对坐标值,其绝对坐标计算如下:

absolute_value[0] = relative_value[0]

absolute_value[1] = relative_value[0] + relative_value[1]

...

absolute_value[N-2] = relative_value[N-3] + relative_value[N-2]

absolute_value[N-1] = relative_value[N-2] + relative_value[N-1]

这种方法通常非常有效,因为一个特征的点往往都是紧密相临的

压缩整数值

相对偏移值一般比绝对坐标值要用更少的字节来表达,相对偏移值被压缩为一个字节序列。每个

字节的高位作为控制位来表示结束标志,指示是否还有后续字节。例如:如果一个整数被压缩为

三个字节,第一和第二个字节的高位被置位(指示还有一个后续的字节),第三个字节高位没有

被置位(表示这个是整数的最后一个字节)。第一个字节的第二个位是符号标志。所以一个字节

有一个控制位,一个符号位,和六个数据位。所有的后续字节都包括一个控制位和七个数据位。

因为只有很少的数据位来表达一个整数,最多五个字节才能表达一个整数值,(这是最坏的情形,

仅仅发生在整数值大于134,217,727)

压缩字节的整数存储的形式

=======================================================

字节数目 位 值

0 0 控制位(0 =最后一位,1=整数值延续到下个字节)

0 1 符号位(0 =正整数,1=负整数)

0 2~7 整数的其余六个位

1-4 0 控制位(0 =最后一位,1=整数值延续到下个字节)

1-4 2~7 整数的其余七个位

整数值根据数据位的存储情况使用六个或七个位(在被压缩的值和0x3F或0x7F分别使用二进制OR操作)来存储到

压缩的字节内。原始的值被向右移位(也就是将值划分为不同的部分)使用六个或七个位。如果新的,移位后的值

不为零,那么在压缩字节内的控制位就被置位,并重复这个步骤,直到移位后的值为0。解压缩与此相似,是此过

程的逆过程。

二进制形式

除了压缩的坐标值之外,一些额外的信息也被存储,用来提供坐标值存储的信息。

字节流的前八个字节被保留,用来存放额外信息。

当前,有两部分额外信息:压缩点字节流的大小和维度。这两个值都以压缩的整数方式来存储

坐标字节流长度定义为总的长度减去保留的八个字节(也就是压缩点字节流的大小)。这个值

存储在一开始的前五个字节。

坐标系统的维度表示z值m值是否包含在字节流中,维度是一个字节位向量存储在字节流的第六个字节里

第一个低位表示是否有z值存在。第二个低位指示是否有measure值存在。

SDE中几何属性的二进制形式的形式表示

=======================================================

字节数据 使用

0-4 坐标值流长度,压缩整数格式(字节流长度减去8个保留字节)

5 坐标维度掩码,压缩整数格式

6-7 保留,当前没使用

8+ 压缩的坐标值,压缩的相对偏移值格式

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有