Posted on 2005-02-03 21:16
海天一鸥 阅读(323)
评论(0) 编辑 收藏 所属分类:
Java数据库技术
如果你已经在Oracle中存储了几何数据,你就可以直接从浏览器中浏览它,而不需要任何其它的软件。
Oracle Spatial无论从功能,数据结构,还是帮助用户存储或重新找回空间数据的表格来说,都算得上是一种完备的设置。该数据以二维空间,三维空间,或四维空间的形式来描述形状以及它们的几何关联。
有了Oracle Spatial,你就可以定义一组有特色的形状(诸如点,线,矩形,多边形,或者);你可以将数据存储注册于Oracle Spatial数据词典中,并可从中重新找回;还可以对该数据提出质疑,以重新找回关于范围,交叉点,亲密关系,以及其它一些以内插值置换的信息。
Oracle Spatial数据最初是从一些很难阅读的存储物诸如SDO-POINT、SDO_ORDINATES中得来的。能够直接解压,直接使用而不需要额外的软件,这对用户来说无疑很有益处。SVG(可变动的矢量绘图档)是从数据库中产生的,只要你的机器上安装了SVG浏览器,它就可以帮你毫不费力地完成这一任务,。
这篇文章里,我将要向你展示一个PL/SQL包裹,当用户通过modplsql界面下达指令时,这一包裹会产生出足够的SVG,让你用它们来浏览那些数据,这些在Oracle Spatial使用说明的第二章中用一个简单的例子作了介绍。(在Oracle Technology Network上,你可以在线看到每一个主要数据库版本的HTML版本,在该网络上,你可能需要注册)。这个例子中定义了四个图形――一个矩形,两个多边形,以及一个圆,以此来帮助一个软件制造商确定在哪里可以获得更多的销售利润。为了节省空间,我只支持这个例子中所涉及的三种形状。我不支持单元转换(公尺置换成像素),但是我支持将那些图象卷起来并放大。我还假设所有的数据现在都是二维的。
在将数据转换成SVG所期望的形式的过程中遭遇到的最大挑战是,描述那些形状有许多不同的方法。比如说,Oracle Spatial对“圆”的定义是:三个点沿着其圆周而成。这对于描述一个二维的圆很有用,而在三维或四维空间中,从特定的方向看,它则可能是歪斜的。SVG期望中点与半径相匹配。在数学中只要求那些三点不在同一条直线上,这样的可能性则大多了。还有一个小难题就是这样一个事实,那就是Oracle Spatial更倾向于按照数学图表来描述数据,以Y轴为纵轴,而在SVG中则以Y轴为横轴,因此要把整个图形翻转成垂直状。
如果你安装了Oracle Spatial,并运行Oracle Spatial用户指导第二章中的声明,就可以从modplsql中编辑并运行以下脚本了。我发现“m=20”是一个很好的放大倍率,与图表很相符。