Oracle Spatial时态空间数据库设计

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

实践环境:Oracle Spatial。

术语表:时空对象,快照。

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

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

设计方向:以时空对象的概念组织空间数据和属性数据,使得对地物变迁历史的查询和分析成为可能。对应用层屏蔽历史数据的处理过程,将历史数据的处理当作数据库模块的功能之一。

技术要点:

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

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

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

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

存储过程:利用Oracle中包变量的会话独立性,在包中建立以下几个基本的存储过程:设置当前观察时间,获取当前观察时间,利用当前观察时间和传入的Snap_time,Snap_end参数判断快照记录是否可见(Snap_Filter)。

视图:建立在快照记录表上的视图,基于存储函数Snap_Filter实现对表中记录的筛选。传入参数为:Snap_time,Snap_End.,返回值为此快照是否可见。

SELECT Obj_id, Snap_time, Geom, Attr

FROM 快照记录表

WHERE Snap_Filter(Snap_time, Snap_end) > 0;

触发器:视图上的触发器,使应用层用户可以在视图中插入,修改,删除数据。

时间: 2024-09-10 12:01:23

Oracle Spatial时态空间数据库设计的相关文章

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

oracle|设计|数据|数据库|数据库设计 需求前提:数据每年变化1-2次,软件预计生命周期50年 实践环境:Oracle Spatial   术语表:时空对象,快照 时空对象:一个地理目标从诞生到消亡所经历的空间和时间范围及其属性信息.这是一个为处理时空数据方便而抽象出来的概念,相当于全信息模型中的全信息对象.为了理解时空对象,我们以二维地物为例.二维地物在二维空间中占据一定的空间范围,表现为一个二维几何体,也就是它的几何属性.如果再增加一条时间轴,成为(x,y,t)坐标系,并认为任何的空间

Oracle中自定义临时表的实现及其在Oracle Spatial中的应用

oracle|临时表 Oracle 临时表功能介绍:         Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时.每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的.         Oracle 的临时表分为事务型和会话型.         事务型临时表就是指在事务处理过程中插入的记录只在事务提交或回滚之前有效,一旦事务完成,表中的记录便被自动清除.         会话型临时表指临时表中的数据在本次会话期间一直有效,

Oracle Spatial新驱动的添加记录实例

Oracle的空间数据库的操作驱动更新了,新的驱动适用于Oracle8.0或以上,新驱动在对数据库的操作上面和原有的驱动差别比较大,不过有一点:使用变得简单了 建立空间数据库和建立空间索引的步骤就略过了,那些网上有很多例子,而且实现方式上面也没有变化,下面列出添加一条空间数据库记录的代码: import java.sql.*; import oracle.sql.*; import oracle.spatial.geometry.JGeometry; /** * <p>Title: </

Oracle Spatial 简介

oracle Oracle Spatial 简介:        首先,Oracle 支持自定义的数据类型,你可以用数组,结构体或者带有构造函数,功能函数的类来定义自己的对象类型.这样的对象类型可以用于属性列的数据类型,也可以用来创建对象表.而Oracle Spatial也正是基于此种特性所开发的一套空间数据处理系统.        Spatial 的自定义数据类型有很多,都在MDSYS方案下,经常使用的是SDO_GEOMETRY类型.SDO_GEOMETRY表示一个几何对象,可以是点.线.面.

Oracle Spatial数据加密问题研究

oracle|加密|数据|问题 Oracle 9i2 特色功能:        1.返回值为自定义对象类型的函数.例如SDO_GEOMETRY数据类型.        2.可以用Java或C语言编写存储过程.÷Oracle Spatial 高级功能:        可以使用返回值为SDO_GEOMETRY数据类型的自定义函数作为几何列获取空间数据.         加密实现:     1.简单的数据加密.         1)创建返回值为SDO_GEOMETRY数据类型的自定义函数,从BLOB(

oracle数据表的设计问题

问题描述 oracle数据表的设计问题 现在是一名初级的java编程人员,接触的项目是用oracle数据库,但是对于oracle中建表的指令,知识有限,希望大神们能给予知道,比如授权了,表的级联关系等等,谢谢了

甲骨文推出最新设计工具Oracle商务智能移动应用设计软件

北京,2013年8月22日--甲骨文公司日前宣布推出最新设计工具Oracle商务智能移动应用设计软件(Oracle BI Mobile App Designer),帮助企业用户更加便捷地在任意主流移动设备上创建出色的交互式分析应用.该产品是Oracle商务智能(Oracle Business Intelligence,简称Oracle BI)新增的重要创新,扩充了Oracle移动商务智能(Oracle BI Mobile)解决方案的功能,并加强了甲骨文对企业用户的承诺--帮助企业用户随时随地自主

百度和谷歌地图的图元信息是存储在Oracle Spatial中的吗?

问题描述 最近在开发一项GIS项目,看了谷歌和百度地图的效果,很想知道百度和谷歌的图元信息是怎么存储的?尤其是百度地图在搜索某一点多少半径单位内的目标(如学校.餐馆)时,是不是使用了OracleSpatial的相关函数呢?如果这些数据的存储都是百度自己设计数据存储,那是不是太麻烦了?还是说百度用了自己的数据存储格式和自己的函数呢?谢谢. 解决方案 解决方案二:google的存储机制说不好,但是百度是使用的第三方提供的数据,那么数据存储也是由第三方解决的,用的都是导航数据,导航数据具有很好的缓冲区

Oracle Spatial数据表插入的一个问题

问题描述 INSERTintoWZW_LAYER(ID,VOLTAGE,MI_PRINX,GEOLOC.SDO_GTYPE,GEOLOC.SDO_SRID,GEOLOC.SDO_POINT.X,GEOLOC.SDO_POINT.Y)VALUES(19,6300.00000,20,2001,8307,113.92153,34.40705);上面是我向一个空间表中查数据的语句,但是出现以下错误提示信息:GEOLOC.SDO_SRID,GEOLOC.SDO_POINT.X,GEOLOC.SDO_POI