数据库实习报告文档格式.docx

上传人:b****3 文档编号:18463841 上传时间:2022-12-16 格式:DOCX 页数:14 大小:559.10KB
下载 相关 举报
数据库实习报告文档格式.docx_第1页
第1页 / 共14页
数据库实习报告文档格式.docx_第2页
第2页 / 共14页
数据库实习报告文档格式.docx_第3页
第3页 / 共14页
数据库实习报告文档格式.docx_第4页
第4页 / 共14页
数据库实习报告文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据库实习报告文档格式.docx

《数据库实习报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据库实习报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

数据库实习报告文档格式.docx

点击服务器选项:

选择表空间:

点击“创建”,创建表空间。

返回管理首页,在“安全性”下找到“用户”。

点击右方“创建”按钮创建用户。

角色的选择很重要,一般“connect”和“dba”都要,否则会被限制很多。

(二)、矢量数据存储与管理操作的实验

2.1数据组织结构

在Spatial中提供了一种抽象数据类型SDO_GEOMETRY用于存储矢量空间数据,一个Oracle空间数据表能够包含至少一个SDOGEOMETRY类型的属性列,每列可以存储一个空间几何实体。

空间数据表中的每一条记录既可以存储空间实体的全部空间数据又可以同时存储相关的部分属性数据(更详细的属性数据可以存储在单独的属性表中),从而使得矢量空间数据和相关的属性数据能够同时存储在oracle中。

2.2SDO_GEOMETRY的定义

SDO_GEOMETRY是在MDSYS方案中定义的一个抽象数据类型,此类型能描述任何复杂的空间特征数据,其定义为

CREATETYPEsdo_geometryASOBJECT(

SDO_GTYPENUMBER,

SDO_SRIDNUMBER,

SDO_POINTSDO_POINT_TYPE,

SDO_ELEM_INFOSDO_ELEM_INFO_ARRAY,

SDO_ORDINATESSDO_ORDINATES_ARRAY);

该对象由五个分量组成

(1)SDO_GTYPE:

是一个NUMBER型结构,用于存放几何对象的类型。

SDO_GTYPE是四位数字的整数,其格式为dltt,其中”,表示几何对象的维数,可以是2、3或4;

”l”表示三维线性参考系统中的线性参考值,当”,为3或4时需要设置该值,一般情况下该值为0;

”’表示几何对象的类型,目前,OracleSpatial使用00到07(包括一种用户自定义类型)来描述7种几何类型。

如SDO_GTYPE取值2003则表示2维的多边形。

下图描述了OracleSpatial支持的几何对象类型。

(2)SDO_SRID:

是一个NUMBER型结构,用于存放与几何对象相关的空间坐标参照系标识符,Oracle所支持的SDO_SRID值均存储在表MDSYS.CS_SRS的SRID字段中。

如果该值为NULL,则表示没有空间参照系与该几何对象相关,只采用笛卡尔平面坐标系。

一般在存储地理数据,即与地球相关的数据时,均与特定的SRID相关联。

(3)SDO_POINT:

是一个包含X,Y,Z三个分量的对象类型,用于存放点实体的空间坐标。

当SDO_ELEM_INFO和SDO_ORDINATES数组都为空时,SDO_POINT中的x,Y,Z为点实体的坐标值,否则,SDO_POINT的值可以忽略。

(4)SDO_ELEM_INFO:

是一个NUMBER类型的变长数组,每3个值组成一个3元组,用于解释存储在SDO_ORDINATES分量中的坐标。

每个3元组包含以下3个部分的内容:

1)SDO_STARTING_OFFSET:

表明每个几何元素的第一个坐标在数组SDO_ORIDINATES中的存储位置,它的值从1开始,逐渐增加。

2)SDO_ETYPE:

它用于表示几何对象中每个组成元素的几何类型。

当它的值为1、2、1003和2003时,表明这个几何元素为简单元素;

如果SDO_ETYPE为1003,表明该多边形为外环(第一个数为1表示外环),坐标值以逆时针存储;

如果SDO_ETYPE为2003,表明该多边形为内环(第一个数为2表示内环),坐标值以顺时针存储;

当SDO_TYPE为4、1005和2005时,表明这个几何元素为复合元素,它至少包含一个头三元组用以说明该复合元素具有多少个简单几何元素。

同样,当1005表示多边形为外环时,坐标值以逆时针存储;

当2005表示多边形为内环时,坐标值以顺时针存储。

3)SDO_INTERPRETATION:

它具有两层含义,具体的作用由SDO_ETYPE是否为复合元素决定。

如果SDO_ETYPE是复合元素(4,1005和2005),则SDO_INTERPRETATION表示它后面有几个子三元组属于这个复合元素;

如果SDO_ETYPE是简单元素(1,2,1003和2003),则SDO_TERPRETATION表示该元素的坐标值在SDO_ORDINATES中是如何排列的。

需要注意的是,对于复合元素来说,组成它的子元素是连续的。

一个子元素的最后一个点是下一个子元素的第一点;

最后一个子元素的最后一个坐标要么与下一个元素的SDO_STARTING_OFFSET值减1所对应的坐标相同,要么是整个SDO_ORDINATES数组的最后一个坐标。

(5)SDO_ORDINATES:

一个NUMBER类型的变长数组,用于存储组成空间几何对象边界的空间坐标值。

SDO_ORDINATES必须与SDO_ELEM_INFO数组配合使用,才具有实际意义。

SDO_ORDINATES的坐标存储方式由几何对象的维数决定,如果几何对象为三维,则SDO_ORDINATES的坐标以{X1,Y,Z1,X2,Y2,Z2,……}的顺序排列;

如果几何对象为二维,则SDO_ORDINATES的坐标为{X1,Y1,X2,Y,……}。

2.3矢量空间数据库的创建方法

创建矢量空间数据库最基本的步骤就是创建矢量空间数据表和上载矢量数据。

2.3.1创建矢量空间数据表

创建矢量空间数据表要经过以下几个步骤:

(1)创建矢量空间数据表:

创建一个名为chemical_plants的表,代码如下:

CREATETABLEchemical_plants(

IdNUMBERPRIMARYKEY,

NameVARCHAR2(32),

geolocSDO_GEOMETRY);

在命令提示符中键入代码后运行的结果如下图:

(2)将新创建的空间表注册到元数据视图

代码如下:

INSERTINTOUSER_SDO_GEOM_METADATAVALUES(

'

chemical_plants'

'

geoloc'

SDO_DIM_ARRAY(

SDO_DIM_ELEMENT('

X'

-180,180,0.000000005),

Y'

-180,180,0.000000005)),

8307

);

执行后的结果如下图:

(3)为空间表创建R_Tree空间索引

CREATEINDEXPLANTS_R_IDXONchemical_plants(geoloc)

INDEXTYPEISMDSYS.SPATIAL_INDEX;

结果如下:

2.3.2矢量空间数据加载方法

矢量空间数据的加载方法可分为两种情况:

利用加载工具批量导入数据和利用SQL语句事务性的插入少量数据。

(l)对于插入少量空间数据的情况,可以使用SQL语句中的INSERT语句。

例如,向chemical_plants中添加一个化工厂(表示为一个由直线组成的五边形)。

INSERTINTOchemical_plantsVALUES(8,'

城北化工厂'

SDO_GEOMETRY(2003,8307,

SDO_POINT_TYPE(-1.1229671,1.05127803,NULL),

SDO_ELEM_INFO_ARRAY(1,1003,1),

SDO_ORDINATE_ARRAY(-1.29838,1.10085102,-1.29838,1.0017060,-0.94755492,

1.00170603,-0.94755492,1.10085102,-1.29838,1.10085102)))

注意:

输入代码的过程中需要在英文的输入法状态下进行输入,否则会提示标识无效。

(2)对于批量导入空间数据又可以分为两大类:

一类是利用Oracle本身的工具SQL*Loader;

另一类是利用GIS软件公司提供的加载工具。

以少量数据为例,上述

(1)键入后的实现结果如下:

(三)、栅格数据存储与管理操作的实验

Oracle公司为了完善Spatial组件的空间数据管理机制,在升级N10g版本以后,引入了新的特性GeoRaster,它提供了存储、索引、查询、分析和发布栅格数据的能力,使得Oracle具备了在不用空间数据引擎的情况下也能存储和处理栅格数据的能力。

GeoRaster使用一个基于组件的、逻辑分层并且多维的通用栅格数据模型。

栅格中的核心数据是由栅格单元(或象素)组成的多维矩阵,这些栅格单元的值被称为单元值,并且这些核心的栅格数据集可以进行分块,用于优化存储、检索和处理。

3.1影像金宇塔机制

显示栅格图像时,大部分情况下不需要显示全图,更多的时候需要缩小显示,如果这些情况下仍然加载整幅图像,势必会降低显示速度.图像越小,显示速度越快,尤其是在不需要显示非常详细而仅显示图像轮廓的情况下,显示速度明显加快.为了提高栅格图像在前端的显示速度,Oracle11gSpatial在栅格数据模型中提供了影像金字塔技术.影像金字塔分为不同的层次,即第0层、第1层等等,其中第0层表示原始图像,层次数大于0时就表示缩小显示。

3.2层次尺寸

确定的情况下,金字塔的每个层次对应的栅格图像的尺寸可以由下面的公式计算出

r(n)=(int)(r(0)/2n)

c(n)=(int)(c(0)/2n)

其中r(0)与c(0)表示原始图像的行数与列数;

r(n)与c(n)表示第n层的影像金字塔的行数与列数;

int用来取整数.金字塔的层次不是可以无限多的,其最大的层次数由公式(int)(log2(a/64))决定,其中a表示原始图像中行数与列数中较小的一个的数量.例如,如果图像的大小是1024*768,由于行数与列数较小的数是768,所以影像金字塔的最高的层次数就是(int)(log2(768/64))=int(3.6)=3,即只能达到3层。

3.3栅格数据存储与管理操作方法的实验

(1)创建栅格表

CREATETABLERASTER(NAMEVARCHAR(64),IMAGESDO_GEORASTER);

(2)创建RASTER栅格表的触发器

代码:

callsdo_geor_utl.createDMLTrigger('

RASTER'

'

IMAGE'

描述:

在一张GeoRaster表中的一个GeoRaster列中创建所需的标准GeoRaster数据操作语言(DML)的触发器,以便进行适当的操作时,其相关的触发器被触发。

用法:

为了保持GeoRaster的数据结构引用的完整性,你在表上执行任何DML操作前,都应该始终使用此过程来对每个GeoRaster表和其每一个GeoRaster列进行创建相结合的标准GeoRaster的DML触发器。

例如,如果GeoRaster表包含两个GeoRaster列,两次调用这个程序,指定名称和列名称为每个调用相应的表。

(3)创建该表的栅格数据表

CREATETABLERASTER_RDTOFSDO_RASTER

(PRIMARYKEY(rasterID,pyramidLevel,bandBlockNumber,

rowBlockNumber,columnBlockNumber))

LOB(rasterBlock)STOREASrdt_1_rbseg

(CHUNK8192

CACHEREADS

NOLOGGING

PCTVERSION0

STORAGE(PCTINCREASE0)

);

说明:

每张栅格数据表必须是一个SDO_RASTER类型的对象表,

而且必须有一个以下定义列(rasterID,pyramidLevel,bandBlockNumber,rowBlockNumber,columnBlockNumber)的主键。

最大的rasterBlock是4G字节。

(4)经由栅格数据表'

RASTER_RDT'

初始化一个栅格图对象插入栅格表中

INSERTINTORASTERVALUES('

gddst'

sdo_geor.init('

));

在存储一个栅格图像到一张栅格表前,必须创建一个栅格对象GeoRasterobject。

有两种方法创建一个新的栅格对象:

1、使用SDO_GEOR.initfunction来初始化一个空的栅格对象;

2、SDO_GEOR.createBlankfunction来创建一个空白的栅格对象。

(5)、利用SDO_GEOR.importFrom上载栅格数据

首先设置用户权限:

BEGINdbma_java.grant_permission('

SYSTEM'

SYS:

java.io.FilePermission'

C:

\image.tif'

read'

dbma_java.grant_permission('

MDSYS'

END;

然后上载数据:

DECLARE

georSDO_GEORASTER;

BEGIN

SELECTIMAGEINTOgeorfromRASTERwhereNAME='

FORUPDATE;

sdo_geor.importFrom(geor,NULL,'

TIFF'

file'

/gddst.tif'

UPDATERASTERSETIMAGE=georwhereNAME='

;

COMMIT;

(6)、创建栅格金字塔

利用SDO_GEOR.generatePyramid方法对指定栅格图像创建金字塔结构的PL/SQL过程如下:

DECLARE

grmdsys.sdo_georaster;

selectIMAGEintogrfromRASTERwhereNAME='

forupdate;

sdo_geor.generatePyramid(gr,'

rLevel=2resampling=NN'

updateRASTERsetIMAGE=grwhereNAME='

具体实验过程如下图:

(7)、导出栅格数据

至此完成了栅格数据的加载,创建影像金字塔,及栅格数据的导出的实验过程。

四、实习仪器及软件

个人电脑以及Oracle11g软件

五、实习体会

这次实习,巩固了以前学习的Oracle知识,加上这学期老师讲的地理空间数据库原理,我对空间数据库的认识有了进一步的提高。

当然,这次实习也遇到了不少问题,首先是Oracle软件的安装,需要将解压后的win32_11gR2_database_2of2文件下的database文件夹复制到win32_11gR2_database_1of2文件,替换该文件下的database文件夹,然后再点击setup.exe开始安装,如果在安装的过程中提示IIS错误,需要下载相应的补丁。

软件安装好后,开始进行实习任务,首先是以system用户的身份登录,创建用户和表空间,修改角色,这里角色的选择很重要,一般“connect”和“dba”都要,否则会被限制很多。

然后是矢量数据的存储和管理,先要熟悉数据的组织结构,SDO_GEOMETRY数据类型的定义,再进行矢量数据表的创建和矢量空间数据的加载。

在命令提示符中键入代码的时候要注意字母和符号应在英文输入状态下输入,对于批量导入空间数据可以分为两大类:

接下来是栅格数据的存储和管理,进行操作之前应该先明白影像金字塔的机制和层次尺寸,之后具体实验步骤如下:

1、在Oracle中创建栅格表'

RASTER;

2、创建此栅格表的触发器,(为了保持GeoRaster的数据结构引用的完整性,在表上执行任何DML操作前,都应该始终使用此过程来对每个GeoRaster表和其每一个GeoRaster列进行创建相结合的标准GeoRaster的DML触发器)。

3、创建此栅格表的栅格数据表,每张栅格数据表必须是一个SDO_RASTER类型的对象表;

4、经由栅格数据表'

初始化一个栅格图对象插入栅格表中;

5、导入图片文件到栅格表中,首先要设置用户权限,然后再上载栅格数据;

6、创建金字塔。

至此,完成了栅格数据的存储与管理。

在此次Oracle软件应用实习中,由于是第一次使用这个软件,其中遇到了很多问题。

幸亏有老师和同学的帮助,才能够顺利的完成实验内容。

同时,还希望以后能经常有这种实习的机会,提高我们动手操作的能力!

实习是一个动手与动脑一起的过程,而且在这个过程中还能培养我们善于分析、总结和细心的好习惯。

总之,这次实习我获益匪浅,对于即将大四,GIS专业的我们来说,对地理数据进行及时的存储和管理是必须的,而Oracle以其强大的功能和优越性得到了广泛的应用和推广,所以对于我们来说学好这款数据库软件非常重要。

希望在以后的练习和使用中继续巩固和掌握Oracle数据库的相关的知识,为自己打好专业基础。

虽然这次实习告一段落,但是我会将在实习中的状态保持先去的,并运用到以后的学习中去,争取取得更好的成绩。

成绩评定:

         指导教师签字:

年月日

实习单位意见

负责人签字:

(单位盖章)

年月日

备注

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1