西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页公文办公论文写作 → 《空间数据库索引建立》实验报告

《空间数据库索引建立》实验报告

相关软件相关文章发表评论 来源:网络时间:2010/5/3 17:31:16字体大小:A-A+

作者:佚名点击:286次评论:0次标签: 空间数据库索引建立 论文

  • 类型:编程控件大小:5.9M语言:中文 评分:7.5
  • 标签:
立即下载

1.认识空间数据库中数据的存放方式或存储结构;
2.掌握空间数据库的格网索引、标题索引的建立方法;
3.理解空间索引的功能和意义;
4.加强学生面向对象程序设计的能力。

  实验II:空间数据库的格网索引建立

一、实验课时和类型:
学时:8
实验类型:综合性
二、实验目的:
1.认识空间数据库中数据的存放方式或存储结构;
2.掌握空间数据库的格网索引、标题索引的建立方法;
3.理解空间索引的功能和意义;
4.加强学生面向对象程序设计的能力。
三、适用专业:
地理信息系统专业
四、采用教材:
教材:《计算机地图制图》艾自兴,龙毅编著 武汉大学出版社
参考书:《地图学》 祝国瑞 编著 武汉大学出版社
五、仪器与工具:
P3以上配置计算机;
VC++工具软件;
实验地图数据。
六、实验原理与内容:
本次实验为综合性实验,涉及《数字地图制图原理》、《计算机地图制图原理》、《地图数据库》等几门课程中所讲的内容。
七、实验数据说明
1、 地图区域:武汉市
文件名:武汉实习数据.usr
2、分类代码:
代码 名称
30000 控制点
10000 图廓点
10001 铁路
10003 汽渡虚线
10004 主要道路
20001 码头
20002 铁路中转站
20003 河流、湖泊
20004 居民地
3、代码说明:
分类代码第一个字符为1,表示线目标;
分类代码第二个字符为2,表示面目标。
4、控制点顺序:
第一点:左上角 第二点:右上角
第三点:右下角 第四点:左下角
控制点的理论值(人为规定x,y):
第一点:12.50 37.40
第二点:62.50 37.40
第三点:62.50 82.40
采用仿射变换方法。
主要实验内容:
1.读取数据
2.仿射变换
3.绘图显示
4.建立定位索引——格网索引
5.建立定性索引——标题索引
6.将已建立的格网索引用于目标拾取功能的实现
7.运用已建立的标题索引实现对象的属性查询
八、实验步骤:
第一;建立一个MapOfWuhan (MFC)工程,参数缺省。
第二;建立地图三要素:点、线、面。点类包括对应点的X,Y坐标;线类包括线号(Xcode),线分类代码(Xflcode)以及组成线的点号数组(m_array);面类包括面号(Mcode),面分类代码(Mflcode)以及组成面的点号数组(m_array)。
第三;在读取数据时,要设计存储结构。在Doc中要建立点类数组Array_dian,线类数组Array_xian,面类数组Array_mian,分别存放对应的点线面类目标。一共有655组数据,读取的时候每组中的X,Y坐标存放到预先定义的点类对象中,若每组的分类代码为线类目标的分类代码,则把相应的线的分类代码存放到事先定义的线类对象的Xflcode中,把对应的组号存放到Xcode中,把组成线的一系列点类对象存放到线类对象的m_array中,最后把线类对象存放到对应的线类数组(Array_xian)中;面类也是如此。这样,就完成了读取存储,即将不同类的对象存放到不同的类数组中。
第四;对数据进行仿射变换。选择控制点中的1,2,3点,根据这三点的理论值和规定其在屏幕上的输出值求出仿射变换的未知系数a0,a1,a2,b0,b1,b2。然后,顺序扫描线类数组Array_xian和 面类数组Array_mian,对不同的线类对象和面类对象的坐标值进行变换(X=a0*x+a1*y+a2;Y=b0*x+b1*y+b2)。
第五;当显示数据时,为了保证面状地物不压盖线状地物,首先要对面装地物进行显示,即顺序扫描面类数组Array_mian,根据数组中对象分类代码(Mflcode)的不同,将不同的对象进行着色填充并显示在屏幕上;然后再顺序扫描线类数组Array_xian,同样根据线分类代码(Xflcode)的不同,对不同对象规定不同的画笔并显示在屏幕上。
第六;建立格网索引首先要建立一个索引类Csuoyin,其中包括存放经过每个格网的对象的标志号码(即线号(Xcode)和面号(Mcode))的数组HLcode,然后再Doc中定义一个自己已规定行列号的格网索引类的数组HL[行号][列号]。然后对格网进行初始化,按行顺序扫描每一个格网,在初始化每一个格网时,要顺序扫描线类数组Array_xian和面类数组Array_mian,判断当前对象是否在当前格网内部,若在当前格网内部,则将当前对象的标志码(即线号Xcode或面号Mcode)存放到当前格网对应的HLcode中,依次进行,直到扫描完毕,格网初始化完毕。
第七;生成格网索引。首先要判断当前鼠标点击处所对应格网的行列号(行号=(当前点击点.Y-20)/20;列号=(当前点击点.X-60)/20),然后再顺序扫描当前格网所存放的对象,在扫描每一个对象时,都要扫描一次线类数组Array_xian和面类数组Array_mian,若当前格网对象的号码与线类或者面类数组对象的Xcode或是Mcode相同,则对线类或者是面类数组中的对象进行显示输出。至此,格网索引完毕。
第八;建立一个定性索引的对话框,在对话框中加入一个EditBox,即文字输入窗口,在窗口中输入要查询的地物名称,点击确定即可将窗口中的内容存放到定性索引下预先定义的一个Char类型的数组Dx_shuzu中。
第九;在Doc中定义一个定性索引类型的对象Dx_dialog,然后顺序扫描线类数组Array_xian,若当前在对话框输入的内容与对应的线类地物名称匹配成功(即Strcmp(“对话框输入内容”,“线类地物名称”)==0),则根据当前线状地物的分类代码Xflcode,将当前地物输出显示在屏幕上;顺序扫描面类数组Array_mian,若在对话框中输入的内容与面状地物的名称匹配成功(即Strcmp(“对话框输入内容”,“面类地物名称”)==0),则根据面状地物的分类代码Mflcode,将当前面状地物输出显示在屏幕上,定性索引建立完毕。
第十;求出当前点击点所对应的格网行列号,然后将当前格网存放的对象一次取出,再求出当前点击点与每个对象的距离d,再求出d中的最小值dmin,若dmin<规定的阀值D,则拾取显示dmin对应的对象,否则拾取不成功。
九、注意事项
1.上机之前应先做好设计,以控制实验进程和方向。
2.实验中注意总结,联系所涉及的理论知识,解决所遇到的问题。
十、问题讨论
1.格网索引建立的方法是什么?
格网型空间索引的基本思想是将研究区域用横竖线条划分大小相等和不等的格网,记录每一个格网所包含的空间实体。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后再在该网格中快速查询所选空间实体,这样一来就大大地加速了空间索引的查询速度。
建立格网索引常用的方法包括空间驱动索引和数据驱动索引,空间驱动索引包括均匀格网索引,点对象的网格文件索引,网格文件索引MBB;数据驱动索引包括R树和R+树索引等。
2.建立空间索引的目的是什么?
空间索引的目的是为了在地理信息系统中快速定位到所选中的地理对象,从而提高了空间操作的速度和效率。空间技术的优劣直接影响GIS的整体性能,因而它是GIS的一项关键技术。建立空间索引机制的主要目的是便于空间目标的定位及各种检索操作。在一体化结构中共有两种不同类型的索引结构:一种是建立面向目标数据(点和线要素数据)的索引结构,以便直接明确目标与空间位置之间的二维关系;另一种是建立面向空间数据(面要素基本格网充填数据)的索引结构,以便使其部分具有面向目标的功能。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)