第4章简单分布式空间数据库引擎的实现 - 图文 联系客服

发布时间 : 星期一 文章第4章简单分布式空间数据库引擎的实现 - 图文更新完毕开始阅读18c30509fd00bed5b9f3f90f76c66137ee064f7a

第1章 简单分布式空间数据库引擎的实现

目前已有的空间数据库引擎复杂的系统结构和高昂的价格,完全无法满足小型数据的处理,因此为了适应中小型软件的研发,我们设计了主要用于栅格数据和矢量数据的简单分布式空间数据库引擎(Simple Distributed Spatial Database Engine, SD_SDE),它不仅缩小了数据处理的空间,还简化了系统的结构,从空间数据分散的特性出发,在保证数据安全性的同时大大提升了数据处理的效率,常用于多层次的GIS。

首先,我们将具体介绍简单分布式空间数据库引擎的主要功能: (1)数据的存储和提取 (2)通信接口

(3)空间数据信息的查询 (4)分布式管理

4.1 数据存取实现

数据的存取作为该系统的最主要的功能,包括模型和结构的存取两个方面。作为支持数据库引擎的重要支柱,我们将以第三章3.2节中所设计的空间数据模型为例,在数据库的选择上使用SQL Server2000和Oracle,对数据的存取操作进行具体的论述。数据在存储时主要是通过表格的形式对信息进行记录。

4.1.1 SD_SDE存储结构

4.1.1.1 栅格数据存储结构

如何对SD_SDE的栅格数据进行存储,首先我们需要了解栅格数据的存储结构。由于存储的方式是表格的形式,因此存储结构中一般有七张表格,分别是:

(1)栅格影像集表(raster set) (2)管理表(raster_admin)

(3)栅格影像数据块表(raster block) (4)栅格影像图层表(raster band) (5)金字塔表(raster_pyramid) (6)压缩表(raster encode) (7)栅格元数据表(raster metadata)

当需要将图像数据进行存储时,一般流程是先在栅格影像集表中新增一个影响数据的记录,然后在其他六个表中也增加记录。 下面我们对存储结构中的七个表进行具体的解释说明:

(1)栅格影像集表:当有新的影像数据被存储,栅格影像集表会对该数据编号,即ID(raster_id),ID中不仅有数据存储时间、拥有者等数据的各种信息,还能够作为桥梁,将其他表中的记录连接起来。用户拥有对数据信息中的金字塔最高层级值和数据块的大小值自定义的权限。

(2)管理表:数据通过ID与管理表实现信息的连接共享,因此当用户对数据库进行检索是,管理表会提供所有影像数据的各种详细的信息。

(3)栅格影像数据块表:通过影像块来对数据进行存储,每个影像块都记录了影响块的方位、大小等信息。

(4)栅格影像图层表:根据波段对影像数据进行分层,然后将每个图层的具体信息记录在表上。图层往往由图层块组成,每个图层块都记录了影响的数据信息,为了方便记录,规定0表示影像块数据,1表示图层块数据。

(5)金字塔表:可以根据用户查询的条件有针对性的提取数据,不仅减少了工作量还能够提高系统的运行速度。金字塔表中记录的主要是金字塔每块的坐标、层级等信息,数据主要存储在金字塔块中。

(6)压缩表:主要用于记录数据的大小方位等信息,通过对大量的数据进行压缩,节约了空间,大大提高了数据的传输速度,当用户需要提取数据信息时,压缩表会自动解压还原数据。

(7)栅格元数据表:主要用于记录影像的尺寸分辨率等基本信息。

如图是 栅格影像集表raster_set

字段名 raster_id name date owner pyramid blockheight blockwidth description 表4-2 管理表raster_admin

字段名 admin_id 类型 int 标示ID 描述 类型 int char datatime char int double double varchar 栅格影像id 栅格影像名称 入库时间 所有者 金字塔最高级别 影像数据块的高度 影像数据块的宽度 备注 描述 raster_id name description int char varchar 栅格影像id 栅格影像名称 备注 表4-3 栅格影像数据块表raster_block

字段名 block_id xlcorner ylcorner blockrow blockcol blockdata raster_id 表4-4 栅格影像图层表raster_band

字段名 level_id raster_id cellsize level_width level_height description

表4-5 金字塔表raster_pyramid

字段名 pyramid_id pxlcorner pylcorner pbrow pbcol plevel 类型 int double double int int int 金字塔数据块块号 左下角坐标x 左下角坐标y 金字塔数据块所在行号 金字塔数据块所在列号 图层金字塔等级 描述 类型 int int double double double varchar 影像图层id 栅格影像id 栅格影像分辨率 图层宽度 图层高度 分辨率备注 描述 类型 int double double int int image int 影像数据块号 影像数据块左下角坐标x 影像数据块左下角坐标y 影像数据块所在行号 影像数据块所在列号 影像数据块存储数据 栅格影像id 描述 pblockdata raster_id image int 金字塔数据块存储数据 栅格影像id 表4-6 压缩表raster_encode

字段名 pyramid_id pxlcorner pylcorner pbrow pbcol cellsize pblockdata raster_id 表4-7 栅格元数据表raster_metadata

字段名 meta_id raster_id imagewidth imageheight imagetype cellsize fillsize description 下面描述的是各存储表之间的关系,如图4-1所示:

类型 int int double double int double double varchar 标示ID 栅格影像id 栅格影像宽度 栅格影像高度 栅格影像数据格式(如0代表遥感影像等) 栅格影像分辨率 文件大小 备注 描述 类型 int double double int int double image int 数据块块号 左下角坐标x 左下角坐标y 数据块所在行号 数据块所在列号 分辨率 数据块存储数据 栅格影像id 描述