首页 理论教育 实验内容与要求-空间数据库实验教程

实验内容与要求-空间数据库实验教程

时间:2023-08-29 理论教育 版权反馈
【摘要】:图10-1MapBuilder导入.shp文件向导——数据选择图10-2MapBuilder导入.shp文件向导——附加参数设置第三步,查看矢量数据导入结果。导入完成后,可以用SQL Developer打开OVCDEMO方案,如图10-3所示。该方案共包含六个数据表。图10-3OVCDEMO方案第四步,图像或栅格数据导入。图10-6是空间参考参数设置,SRID设置为8307。图像的大小为:2143*1795*3。Y方向纬度范围:30.5354°—30.4837°。所以,图像左上角点坐标,可以算出。图10-9显示的是ovcpoints主题的要素风格。

实验内容与要求-空间数据库实验教程

(1)采用MapBuilder将OVCDEMO矢量数据(ovcpoints.shp、ovclines.shp、ovcpolygon.shp)和栅格数据(ovcdemo.jpeg)导入到Oracle数据库中。

第一步,新建ovcdemo表空间和用户,密码也为ovcdemo,并且至少具有CONNECT、RESOURCE、CREATE TABLE和CREATE VIEW等权限。

第二步,导入.shp文件。MapBuilder提供了两种.shp文件导入方式,即单文件导入和多文件导入。启动MapBuilder,点击“Tools->Import Shapefile”,弹出.shp文件导入向导,如图10-1所示。对于单文件导入选择“Single File”,然后选择“.shp”文件,输入.shp文件对应的几何表名称,接着输入几何表中几何字段的名称。对于多个.shp文件的批量导入,则选择Multiple Files or Directories,所有的几何表名称将与.shp文件同名,然后输入几何字段的名称,接着选择.shp文件所在目录,在列表中会显示选择的.shp文件或目录,点击“Next>”进入下一步,如图10-2所示。这一步是附加参数的设置,主要是空间参考系统设置和表信息设置。以OVCDEMO数据为例,选择的是WGS 84坐标系统。表信息则主要是选择相关的表是新建还是使用已经存在的表以及是否创建空间索引等信息。点击“Next>”进入下一步,显示的是导入向导的总结信息,点击“Finish”开始数据的导入。

图10-1 MapBuilder导入.shp文件向导——数据选择

图10-2 MapBuilder导入.shp文件向导——附加参数设置

第三步,查看矢量数据导入结果。导入完成后,可以用SQL Developer打开OVCDEMO方案,如图10-3所示。该方案共包含六个数据表。数据主要存储在OVCPOINTS、OVCLINES和OVCPOLYGONS三个数据表中。由于在使用MapBuilder导入的时候,选择了创建索引,因此在该方案中也包含了OVCPOINTS_MB_IDX、OVCLINES_MB_IDX和OVCPOLYGONS_MB_IDX三个空间索引。

图10-3 OVCDEMO方案

第四步,图像或栅格数据导入。MapBuilder是一个整合的建库工具。它除了能够导入.shp文件等矢量数据外,还能导入栅格图像数据。ovcimage.jpeg是与上面的.shp数据对应的图像数据。在MapBuilder中连接OVCDEMO方案,点击“Import Image”,弹出GeoRaster导入向导,如图10-4所示,在其中设置表的名称和描述信息。GeoRaster表名为ovcimage,其中的GeoRaster列名为georaster,存放分块数据的栅格数据表名为ovcimage_rdt。选项“Build Pyramid Levels”用于创建图像金字塔。由于数据很小,没有必要创建,因此没有勾选此项。默认的块大小为256。图10-5是选择图像数据文件,可以是一个文件也可以是多个文件,选择ovcimage.jpeg文件。图10-6是空间参考参数设置,SRID设置为8307。Model Location有两种方式:左上模式和中心模式。采用默认值左上模式。图像的大小为:2143*1795*3。其对应空间范围如下。

X方向经度范围:114.3684°—114.4331°。

Y方向纬度范围:30.5354°—30.4837°。

所以,图像左上角点坐标(114.3684,30.5354),可以算出。

X分辨率:(114.4331-114.3684)/2143=3.019132×10-5

Y分辨率:(30.5354-30.4837)/1795=2.880223×10-5

将这些参数填入后完成数据导入。

图10-4 GeoRaster导入向导表参数设置

第五步,导入栅格数据后,可以采用SQL Developer进行查看。Oracle会建立OVCIMAGE和OVCIMAGE_RDT两个数据表和一个空间索引OVCIMAGE_RTREEIDX,如图10-7所示。OVCIMAGE存放GEO_RASTER对象,OVCIMAGE_RDT存放对应的分块数据。

图10-5 GeoRaster导入向导数据文件选择

图10-6 GeoRaster导入向导空间参考参数设置

图10-7 GeoRaster导入后建立的表和索引

第六步,定义主题和地图。.shp数据通过MapBuilder导入Oracle数据库以后,如果要在MapBuilder或MapViewer中显示几何形状,还需要定义几何地图,也即为每个几何字段构建几何主题(Geometry Theme),然后定义一个基本地图由哪些主题(可能是几何主题、栅格主题等)构成。图10-8显示的是ovcpoints几何主题的创建过程之一,这里给出了几何主题的名称、描述、表的所有者、基础表和几何字段所在的列。图10-9显示的是ovcpoints主题的要素风格。图10-10显示的是ovcpoints主题的标注风格,在这里可以选择某个字段的值进行标注。图10-11显示的是ovcpoints主题的查询条件,采用的是默认查询。然后点击“Next>”进入总结信息页面,点击“Finish”完成ovcpoints几何主题的定义。采用同样的方法,也可以利用向导定义ovclines和ovcpolygons两个几何主题。

这些主题信息存放在MDSYS方案的SDO_THEMES_TABLE中。为判断上述执行过程是否正确,执行下列查询语句:

图10-8 定义几何主题的主题参数设置

图10-9 定义几何主题的要素风格

图10-10 定义几何主题的标注风格

图10-11 定义几何主题的查询条件

第七步,定义主题之后,接下来应该定义的是地图,它确定的是一个地图包含哪些主题。在MapBuilder中有定义地图的向导。运行向导,首先出现的是地图的名称与描述信息,如图10-12所示。接下来是定义地图的主题层信息,如图10-13所示。这里定义的ovcmap包含了三个主题,这些信息将保存在USER_SDO_MAPS表中。向导的最后一个对话框显示的是定义地图的概要信息,如图10-14所示。

图10-12 定义地图的基本信息

关于地图的定义信息存放在MDSYS方案的SDO_MAPS_TABLE中。为判断地图定义是否成功,可以执行下列查询语句:

select tab.name from mdsys.sdo_maps_table tab where tab.sdo_owner='ovcdemo';(www.xing528.com)

第八步,如果地图定义成功,则返回结果应该是ovcmap。这是通过查询语句来验证的。同时也可以通过MapBuilder直接预览该地图,如图10-15所示。

第九步,加入栅格主题层。上面的OVCMAP中没有加入栅格主题层。栅格主题的定义方法和几何主题方法相似。可以采用MapBuilder的GeoRaster主题定义向导完成。首先设定GeoRaster主题名称等参数,这里设定的名称为ovcraster,如图10-16所示。图10-17主要设置查询模式,这里采用默认模式。图10-18为该主题的金字塔、投影等参数设置,均采用默认值。

第十步,定义好了GeoRaster主题后,可以像集合主题一样把它加入到地图中显示。这里构建一个地图叫OVCALL,包含所有的几何主题层和栅格主题层,然后在MapBuilder中显示该地图,如图10-19所示。这样OVCDEMO中就存在四个主题层(OVCPOINTS、OVCLINES、OVCPOLYGONS和OVCRASTER)和两个图(OVCMAP和OVCALL)。

图10-13 定义地图的主题层信息

图10-14 地图的概要信息

图10-15 预览OVCMAP地图

图10-16 GeoRaster主题向导(Ⅰ)

图10-17 GeoRaster主题向导(Ⅱ)

图10-18 GeoRaster主题向导(Ⅲ)

图10-19 OVCALL地图预览

(2)基于Oracle IMP/EXP工具的空间数据导入与导出。

第一步,将建立的OVCDEMO数据库全部导出:

exp ovcdemo/ovcdemo file=ovcdemo.dmp full=y大致输出如图10-20所示。

第二步,部分表导出。如果只想导出某个或某几个表,如OVCLINES和OVCPOINTS数据表,则执行:

exp ovcdemo/ovcdemo file=ovcdemo.dmp tables='ovclines,ovcpoints'上面EXP导出生成的.dmp文件就是IMP的输入文件。

第三步,在另外的数据库中导入OVCDEMO数据库,则可以先新建ovcdemo用户,密码为ovcdemo,然后执行:

imp ovcdemo/ovcdemo file=ovcdemo.dmp full=y ignore=y这里的full代表整个数据库全部导入,ignore代表忽略所有警告。如果是Oracle 12c的可插拨数据库,则可以采用:imp ovcdemo/ovcdemo@pdborcl file=ovcdemo.dmp full=y ignore=y。

第四步,不同用户导入。上面给出的例子都是用户名和密码相同的导入示例。IMP也支持从一个用户导入到另外一个用户,不过这种操作一般需要管理员账户,例如:

imp system/password fromuser=ovcdemo touser=mvdemo file='ovcdemo.dmp'

就是将OVCDEMO数据库中的数据导入到MVDEMO数据库中。

图10-20 导出OVCDEMO数据库

第五步,采用IMPDP/EXPDP工具导入导出。Oracle也提供了和IMP/EXP等效的IMPDP/EXPDP工具,这组工具对于.dmp文件处理更高效。例如,在Oracle 12c中的PDBORCL可插拔数据库中导入OVCDEMO.DMP,命令行如下:

impdp ovcdemo/ovcdemo@pdborcl directory=DATA_FILE_DIR dumpfile=ovcdemo.dmp logfile=ovcdemo.log schemas=ovcdemo其中,DATA_FILE_DIR是Oracle定义的目录,如果该目录不存在,则需要创建。例如,将DATA_FILE_DIR指定为d:\app\data,命令行如下:

creat or roplace directory DATA_FILE_DIR as'd:\app\data'

这样就在Oracle数据库中创建了一个目录对象。要导入的文件直接放置在该目录下即可。如果要将OVCDEMO方案导出,命令行如下:

expdp ovcdemo/ovcdemo@pdborcl directory=DATA_FILE_DIR dumpfile=ovcdemo.dmp logfile=ovcdemo.log schema=ovcdemo

如果要将ovcdemo数据导入到另外一个用户ovcdemoz下,则命令行如下:

impdb ovcdemoz/ovcdemoz@pdborcl directory=DATA_FILE_DIR dumpfile=ovcdemo.dmp logfile=ovcdemo.log schema=ovcdemo fromuser=ovcdemo touser=ovcdemoz

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈