基于Oracle Spatial的时态空间数据库设计

需求前提:数据每年变化 1 ~ 2 次,软件预计生命周期 50 年

实践环境: Oracle Spatial

术语表:时空对象,快照

** 时空对象 ** :一个地理目标从诞生到消亡所经历的空间和时间范围及其属性信息。这是一个为处理时空数据方便而抽象出来的概念,相当于全信息模型中的全信息对象。为了理解时空对象,我们以二维地物为例。二维地物在二维空间中占据一定的空间范围,表现为一个二维几何体,也就是它的几何属性。如果再增加一条时间轴,成为( x , y , t )坐标系,并认为任何的空间对象都有诞生和消亡,则这个二维地物就在( x , y , t )坐标系中占据了一定的三维空间。我们就把二维地物从诞生到消亡这一时间段所占据的空间-时间范围称之为“时空对象”。同理,也可以将时空对象扩展为三维的空间对象在时间维度上的延续,也就是四维对象。时空对象的属性信息是一张二维表。

** 快照 ** :一个地理目标在某一特定时刻所占据的空间范围及其属性信息,或者说:时空对象在某一特定的时刻所占据的空间范围及其相应的属性信息。举例来说,地图上绘制了一个饭店的位置,大小,这就是饭店的一个快照。因为饭店是从某一时刻才诞生的,又会在某一时刻消亡,而在诞生和消亡之间,还可能会搬迁或扩建。所以地图上反映的仅仅是饭店在某一时刻的状态,所以称之为饭店在某一时刻的快照或时空对象在某一特定时刻的快照。注意,快照总是对应于某一特定的时刻,否则将失去快照的意义。快照的属性信息是时空对象属性信息表中的一条记录。

设计方向:

以时空对象的概念组织空间数据和属性数据,使得对地物变迁历史的查询和分析成为可能。

对应用层屏蔽历史数据的处理过程,将历史数据的处理当作数据库模块的功能之一。

技术要点:

1、 Oracle 包变量的会话独立性

2、 动态视图技术(基于函数的视图)

图形解说:

时间


空间


对象诞生时间


观察方向


当前观察时间


对象消亡时间


快照 3


快照 2


快照 1


时空对象(对象一)


对象三


对象二


![](http://dev.csdn.net/article/37/C:/Documents and Settings\lih\My Documents\My Pictures\SpatialTime.bmp)

从以上示意图中可以清晰地看出,每一个时空对象都是由多个快照记录所描述的。观察者的每一次观察都是基于一个特定的观察时间的。例如,图示中的观察者应该看到对象一的快照 2 和对象三的快照 2 ,而无法看到对象二和对象一、三的其他快照记录。看不到对象二是因为在此观察时间之前,对象二已经消亡。看不到对象一的快照 1 是因为对象一有更新的观察数据快照 2 可以更好地近似反映对象二在当前观察时间所处的状态。

数据表:数据表的设计基于以上概念

** 对象表 **

Obj_id

|

NUMBER

|

时空对象标识号

|

  1<pk>  
  2  
  3---|---|---|---  
  4  
  5Start_time 
  6
  7| 
  8
  9DATE 
 10
 11| 
 12
 13对象诞生时间 
 14
 15|   
 16  
 17End_time 
 18
 19| 
 20
 21DATE 
 22
 23| 
 24
 25对象消亡时间 
 26
 27|   
 28  
 29Obj_Attr 
 30
 31| 
 32
 33VARCHAR2(100) 
 34
 35| 
 36
 37对象属性数据 
 38
 39| 
 40
 41会因时间的流逝而发生变化的属性信息。   
 42  
 43** 快照记录表  **
 44
 45Obj_id 
 46
 47| 
 48
 49NUMBER 
 50
 51| 
 52
 53时空对象标识号 
 54
 55| 
 56
 57<fk>  
 58  
 59---|---|---|---  
 60  
 61Snap_id 
 62
 63| 
 64
 65NUMBER 
 66
 67| 
 68
 69快照数据的唯一序号 
 70
 71| 
 72
 73<pk>  
 74  
 75Snap_time 
 76
 77| 
 78
 79DATE 
 80
 81| 
 82
 83快照时间 
 84
 85|   
 86  
 87Snap_end 
 88
 89| 
 90
 91DATE 
 92
 93| 
 94
 95快照结束时间 
 96
 97| 
 98
 99属于同一时空对象的最近的下一条快照的快照时间。设置此列的目的是为了查询方便。   
100  
101Geom. 
102
103| 
104
105MDSYS.SDO_GEOMETRY 
106
107| 
108
109快照几何数据 
110
111|   
112  
113Attr 
114
115| 
116
117VARCHAR2(100) 
118
119| 
120
121快照属性数据 
122
123| 
124
125会因时间的流逝而发生变化的属性信息。   
126  
127存储过程: 
128
129利用  Oracle  中包变量的会话独立性,在包中建立以下几个基本的存储过程:设置当前观察时间,获取当前观察时间,利用当前观察时间和传入的  Snap_time  ,  Snap_end  参数判断快照记录是否可见(  Snap_Filter  )。 
130
131视图:建立在快照记录表上的视图,基于存储函数  Snap_Filter  实现对表中记录的筛选。传入参数为:  Snap_time,Snap_End.  ,返回值为此快照是否可见。 
132
133SELECT Obj_id, Snap_time, Geom, Attr 
134
135FROM  快照记录表 
136
137WHERE Snap_Filter(Snap_time, Snap_end) &gt; 0; 
138
139Obj_id 
140
141| 
142
143NUMBER 
144
145| 
146
147时空对象标识号 
148
149|   
150  
151---|---|---|---  
152  
153Snap_time 
154
155| 
156
157DATE 
158
159| 
160
161快照时间 
162
163|   
164  
165Geom. 
166
167|  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: page; mso-element-lef</pk></fk></pk>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus