1 / 32

空间数据库实习

空间数据库实习. 主讲人:蔡忠亮. 武汉大学资源与环境科学学院. 一、背景知识与技术. 一、背景知识与技术. GIS 软件开发中数据库的访问机制( VC ). ODBC. DAO. OLEDB. ADO. 一、背景知识与技术. 关系数据库 概念 主要关系数据库 Oracle,SQL Server,Sybase,Informix,Access , FoxPro…… 数据库的基本术语 数据库 表(平面数据库) 视图(虚拟表,一个或多个数据表中的全部或部分字段。全部或部分记录组成) 记录集合. 一、背景知识与技术. SQL 语言 概念

hogan
Download Presentation

空间数据库实习

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 空间数据库实习 主讲人:蔡忠亮 武汉大学资源与环境科学学院

  2. 一、背景知识与技术

  3. 一、背景知识与技术 GIS软件开发中数据库的访问机制(VC) ODBC DAO OLEDB ADO

  4. 一、背景知识与技术 • 关系数据库 • 概念 • 主要关系数据库 • Oracle,SQLServer,Sybase,Informix,Access,FoxPro…… • 数据库的基本术语 • 数据库 • 表(平面数据库) • 视图(虚拟表,一个或多个数据表中的全部或部分字段。全部或部分记录组成) • 记录集合

  5. 一、背景知识与技术 • SQL语言 • 概念 • Structured Query Language, 用于定义、操作和管理数据库表的工业标准 • 常用语言 • 选择:select *(FieldName1,…) from table1,… select table.* from table1,… where table2.FieldName = “wuhan” select table.* from table1,… where table2.FieldName = “wuhan” AND table1.FieldName > 50 • 过滤:select * from table1 wherefieldvalue>50 • 排序:select * from table1 ORDER BY FieldNameASC(DESC) select * from table1,table2,… ORDER BY table1.FieldName ASC, table2.FieldName DESC

  6. 一、背景知识与技术 • 数据库的访问方式 • ODBC(Open Database Connectivity) ODBC API提供了一个通用的编程接口,允许程序与多种不同的数据库连接。它为Oracle,SQL Server,MS Excel等都提供了驱动程序,使得用户可以使用SQL语句对数据库进行直接的底层功能操作。 ODBC API的特点是功能强大丰富,提供了异步操作,事务处理等高级功能,但相应的编程复杂,工作量大。 • MFC ODBC MFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库操作。 MFC 定义的ODBC类:CDatabase,CRecordSet,CRecordView,CDBException

  7. 一、背景知识与技术 • 数据库的访问方式 • DAO(Data Access Object) DAO用于和微软的Access数据库接口。在数据库应用程序如果只需与Access数据库接口时,使用DAO编程较方便。 其主要类:CDaoWorkspace,CDaoDatabase,CDaoRecordSet, CDaoRecordView,CDaoException,CDaoTableDef,CDaoFieldExchange。 * MFC DAO仅用来支持Access数据库,应用范围相对固定。

  8. 一、背景知识与技术 • 数据库的访问方式 • OLEDB OLE DB在数据提供程序和用户之间提供了灵活的组件对象模型(COM)接口,这种灵活性有时会使得操作复杂化。OLE DB框架定义了应用的三个基本类: 数据提供程序Data Provider; 使用者Consumers; 服务提供程序Service Provider。 组件: 枚举器:用于列出可用的数据源;     数据源:代表单独的数据和服务提供程序,创建对话;    对 话:用于创建事务和命令;    事 务:用于将多个操作归并为单一事务处理;     命 令:用于向数据源发送文本命令(SQL),返回行集;     错 误:用于获得错误信息。

  9. 一、背景知识与技术 • 数据库的访问方式 • ADO(ActiveX Data Object) ADO是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。 ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处理的对象。下面的对象类组成了ADO接口: Connection:用于表示与数据库的连接,处理命令和事务。 Command:用于处理传送给数据源的命令。 Recordset:用于处理数据的表格集,包括获取和修改数据。 Field:用于表示记录集中的列信息,包括列值和其他信息。 Parameter:用于对传送给数据源的命令之间来回传送数据。 Property:用与操作在ADO中使用的其他对象的详细属性。 Error:用于获得可能发生的错误的详细信息。

  10. 一、背景知识与技术 • Visual C++开发数据库技术的特点 • 简单性 • 灵活性 • 访问速度快 • 可扩转性 • 访问不同类数据源 • VC开发数据应用程序 • 基于ODBC • 基于DAO • 基于ADO

  11. 一、背景知识与技术 VC开发实例 ODBC

  12. 一、背景知识与技术 VC开发实例 ADO

  13. 一、背景知识与技术 VC开发实例 ——ADO变长记录创建与读写 创建字段

  14. 一、背景知识与技术 VC开发实例 ——ADO变长记录创建与读写 写操作

  15. 一、背景知识与技术 VC开发实例 ——ADO变长记录创建与读写 读操作

  16. 一、背景知识与技术

  17. 一、背景知识与技术 空间索引与空间检索

  18. 二、实习安排

  19. 二、实习安排 1)学习并掌握空间数据的数据组织方法; 2)学习并掌握基于VC+ADO的空间数据库读写操作开发方法 3)学习并掌握空间索引的建立与使用方法; • 4)学习并掌握基于VC的空间索引的建立与使用开发方法; 实验目的

  20. 二、实习安排 VC+ ADO程序设计 基于Access的数据操作 实验内容 空间索引建立与应用 基于数据库的数据查询与显示

  21. 二、实习安排 学习实例 实习方法 VC+ADO独立开发 结果对比验证

  22. 二、实习安排 E00数据(building.e00,Road.e00) 实习数据 Shape数据 (Roads.shp)

  23. 二、实习安排 VC+ADO实现E00存储到Access数据库和从Access数据中取出数据并显示数据 实习任务 VC建立空间索引,并在数据查询中应用索引技术

  24. 三、实例程序说明

  25. 空间数据库 索引、查询 数据库存储、管理 数据导出、可视化 CMdbDatabase CSQLDatabase CGeoMap CGrid CIndex CGeoLabel CGeoArc CGeoPolygon 三、实例程序说明 类结构

  26. CIndex接口 CreateIndex() AddGrid() DrawAllGrid() PointSelect() RectSelect() CIndex类 • CGeoMap接口 • SetArc() • SetPolygon() • SetMapBoundary() • GetLable() • GetArc() • GetPolygon() • GetMapBoundary() • GetTotalNumLabel() • GetTotalNumPoly() • GetTotalNumArc() • DrawGeoMap() CGeoMap类 CMdbDatabase类 CSQLDatabase类 CSQLDatabase接口 CreateSQLDatabase() CreateSQLTable() AddField() OpenSQLDatabase() OpenTable() OpenRecordset() IsDBFileExist() IsTableExit() IsFieldExist() GetFieldName() GetFieldType() GetFieldValue() RecordSearch() ImportE00Data() ImportShapeData() ExportE00Data() ExportShapeData() CMdbDatabase接口 CreateMdbDatabase() CreateMdbTable() AddField() OpenMdbDatabase() OpenTable() OpenRecordset() IsDBFileExist() IsTableExit() IsFieldExist() GetFieldName() GetFieldType() GetFieldValue() RecordSearch() ImportE00Data() ImportShapeData() ExportE00Data() ExportShapeData() 三、实例程序说明 类结构

  27. 创建数据库 (CreateMdbDatabase) 创建数据库表(CreateMdbTable) 导入属性数据 导入几何数据 (ado中Recordset对象) 导出数据到CGeoMap中 创建索引(CIndex) 绘图 查询 三、实例程序说明 总体流程

  28. 三、实例程序说明 DB读写消息定义 void CSDBView::OnAccessImportE00() DB读写流程 DB对象定义及读写接口调用 CMdbDatabasemdbDatabase; mdbDatabase.ImportE00ToDatabase(); DB、表格及结构(字段)创建 CreateMdbDatabase() CreateTable() AddField() DB写操作 ReadDataFile() RecordSet->AddNew() RecordSet->PutCollect() RecordSet->Update() DB读操作 RecordSet->GetCollect() CreateGeoObject() RecordSet->MoveNext()

  29. 三、实例程序说明 索引创建消息定义 void CSDBView::OnCreateIndex() Index创建流程 索引对象定义及创建接口调用 CIndexidx Idx.CreateIndex() 格网创建 CGridpGrids=new CGrid(); 注册/登记地理目标到格网 pGrids->AddPolygonInGrid() pGrids-> AddLabelInGrid() pGrids-> AddArcInGrid

  30. 三、实例程序说明 使用消息定义 CSDBView::OnLButtonDown() Index使用流程 索引对象定义、空间参数输入及使用接口调用 CIndexidx idx. RectSelect(rect) 计算空间参数覆盖的网格 Grids Selected 获取覆盖网格内的目标并精确计算空间关系 For(objects){ 目标与空间参数关系计算 } 获取选中目标信息并绘制 Object->getPoints() Mdb.RecordSearch()

  31. 三、实例程序说明 主要结果

  32. 三、实例程序说明 主要结果

More Related