Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103683281
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-22 17:19:33

 来源:

21世纪是信息的世纪,综合国力的竞争在很大程度上是信息的竞争,更是信息利用率的竞争。近年来,随着“数字地球”和“数字国土”战略的提出和实施,地学领域的海量数据飞速增长,数据的存储、、管理和处理变得日益复杂。随着Oracle技术的成熟,尤其是8.15本版后Oracle Spatial的出现,数据仓库在海量数据存储、分析和表达方面有着无可比拟的优势。同时,由于信息量的巨大,传统的数据存储和显示方式在大数据快速浏览方面显得力不从心,这样有必要改变空间数据的存储方式,加载需要的空间数据部分,避免不必要数据的反复加载和卸载。

分层管理器

1、分层管理器架构:

分层管理器是实现大范围数据的快速浏览的关键部分,它控制了逐层细化表的结构和元数据的定义和赋值,定义了组件表中的关键信息,给出了空间数据的来源、数据挖掘规则、图层加载范围和图形编辑、输出和保存。分层管理器有两部分组成,分别为:

a) 一组存储于Oracle数据仓库中的空间数据表,用于逐层细化图层中的每个详细信息层,这些表称为组件表;

b) 一个空表,包含该表的结构定义和描述组件表的特殊元数据,该表称为逐层细化表。任何逐层细化应用程序均需要逐层细化表,从中可以逐层细化图层中各层的层次关键字描述,以及它们之间的层次关联方式。进行分层时,分层管理器作为程序的一部分,确定需要添加的子图元所在的图层及其关键字,以便确定在逐层细化图层中需要添加和删除的图元信息。

逐层细化图层是一种特殊的地图图层,它是有自己表结构的空白图层,并用元数据规定了所有加载图层的一些规则和限制,所显示出来的地图信息是按照元数据规定的规则从其它表或数据库中提取出来的。在地图中显示逐层细化图层时,分层管理器会创建一个临时表,然后将组件表中的图元复制到该临时表中。逐层细化图层中显示的图元实际上是组件表中图元的副本。这样就可以灵活的在图层上面加载需要的信息。在应用程序终止时,将丢弃该临时表,为了保存有用的专题图信息,可以对提取出来的图层进行保存。此时,如果用户查看图层信息时,逐层细化图层仍将是单个图层。

逐层细化表的要求作为分层管理器的组织部分,它定义了元数据关键字和三个标准列:关键字、层和标签。并有着自己的一套语法:

(1) 关键字 begin_metadata 标记逐层细化表中元数据部分的开头。

(2) 每行元数据包含两个元素:关键字和值。所有关键字和值均使用双引号引起来。

(3) 逐层细化表必须包含 IsDrilldown 关键字,该关键字的值必须为 True。

(4) 每个关键字以“”(反斜线)开头。

(5) 元数据关键字可以在层次结构中嵌套。层次结构中的每一层以反斜线 () 标记。

(6) 元数据包括 DDMapComponentMaps 关键字层次结构。在该层次结构中为每个组件表指定四个元数据关键字。

分层管理器的分层原理图如上图所示,从图中可以看出,分层管理器有两部分组成:组件表和逐层细化表组成,分层管理器根据系统的要求以数据挖掘的方式从Oracle数据仓库中提取数据,形成组件表中的某个图层,然后确定需要加载图层的名称和图层中的部分,并加载到逐层细化表中。如果是第一次加载,此时的逐层细化表是空白图层,在加载过程中,逐层细化表不断的进行图元信息的增加和删除,这样会出现每个组件表中的部分信息显示在逐层细化表所示的图层中。这样输出所需要的图层,并对它进行编辑,由于逐层细化表中数据是个组件表中的副本,需要对编辑后的图层进行另存,形成专题图。

分层管理器首先形成空白图层,通过分层管理器用数据挖掘工具从Oracle数据仓库中提取数据,根据分层管理器的元数据规则形成一级的图层,在该图层中,通过事件,以确定加载二级图层的图层名称和该图层中的加载部分,相应的加载三级、四级图层数据,在加载的同时,就形成了各种专题图。当然,分层管理器功能的实现是通过GIS组件(MapX、MO、AO等)和编程语言(VB、VC、Delphi等)来实现的。

2、分层管理器开发步骤:

分层管理器应用程序需要进行许多设置和准备。主要步骤汇总如下:

(1)获取多层逐层细化图层时要使用的各个表的数据。

(2)创建一个包含特殊列和特殊元数据的新的空逐层细化表(.tab 文件)。元数据为每个组件表指定一个层名,同时标识组件表中的重要列标识列和标题列。

(3)将逐层细化表加入地图。例如,将逐层细化表加入您使用的Geoset,或通过编码将逐层细化表加入地图。

(4)在应用程序中添加用户界面元素,响应逐层细化事件。

(5)添加代码,响应用户对逐层细化工具的使用(也就是说编写分层管理器)。

(6)该代码需要检测用户已选择的图元;确定需要添加的子图元和需要删除的图元;调用应用程序来实现分层或汇总地图图元。


阅读(257) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~