《Visual C++开发GIS系统 第2版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:陈建春编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7121003341
  • 页数:615 页
图书介绍:本书是GIS开发技术和Visual C++编程技术的集合体。全面介绍和分析了MFC程序的框架结构和各种MFC辅助工具的使用方法,实例剖析了MFC中与图形和数据库应用程序设计有关的类。介绍了GIS的开发方法和思路,结合具体代码开发实现了矢量图形系统、数据库管理系统、矢量图形系统和数据库管理系统之间的连接、空间信息查询、图形几何关系计算、区域重叠分析、缓冲区分析、网络分析等功能,实现了一个基本GIS。本书是在作者2000年出版的《Visual C++开发GIS系统——开发实例剖析》一书的基础上,总结近几年实际开发的经验和技术,进行修订并补充了很多新的内容而写成的。本书既保持了集开发思路、系统构筑、编程技术、实现代码于一体的特点,又在具体内容上进行了更新,融合了许多新的技术,更加强调了实用性。本书适用于GIS、CAD、MFS等领域的软件开发人员,以及大专院校的师生。本书的代码适用于VC++5.0,VC++6.0及其新版本。

第1章 VC++开发GIS的思路 1

1.1GIS简介 1

1.1.1GIS的应用领域和范围 1

1.1.2GIS与其他系统的结合 1

1.1.3GIS的专业开发工具 2

1.1.4GIS专业开发工具的优缺点 3

1.1.5VC++开发GIS的优缺点及应用前景 4

1.1.6选用GIS的开发方法 5

1.2.1开发相对完整的矢量图形系统 6

1.2VC++开发GIS的思路 6

1.2.2开发属性数据库管理系统 7

1.2.3建立矢量图形系统与数据库管理系统的连接 7

1.2.4开发各种查询检索、空间分析、网络分析功能 8

第一篇 VC++程序设计技术要点 11

第2章 MFC应用程序设计的开发工具 11

2.1使用MFCAppWizard 12

2.1.1MFCAppWizard的启动 13

2.1.2利用MFCAppWizard产生MFC应用程序的步骤 14

2.2使用ClassView 18

2.2.1启动ClassView 18

2.2.3增加类 19

2.2.2编辑定位 19

2.2.4增加类的成员 22

2.3使用ResourceView 23

2.3.1ResourceView的调用 24

2.3.2ResourceView工作分析 24

2.4使用FileView 28

2.4.1打开一个程序项目 28

2.4.2FileView相关的操作功能 28

2.5使用ClassWizard 30

2.5.1Windows消息 30

2.5.2消息处理函数 32

2.5.3ClassWizard的作用和启动 34

2.5.4ClassWizard管理消息处理函数 35

2.5.5ClassWizard管理重载虚函数 39

2.5.6ClassWizard管理映射变量 41

2.5.7管理Automation和ActiveX事件 45

2.5.8重新创建开发项目的ClassWizard工作信息 45

2.6使用DataView 46

2.7管理多个程序项目 47

2.8使用各设计工具进行编程的几点建议 48

第3章 MFC应用程序框架 50

3.1MFC程序基本框架类和文件组成 50

3.1.1基本程序框架类 50

3.1.2应用程序主要源文件组成 51

3.2MFC应用程序中各个框架类的作用 52

3.3MFC应用程序的执行步骤分析 54

3.4MFC应用程序设计结构体系剖析 56

3.4.1标准菜单的执行分析 56

3.4.2修改标准菜单执行功能 58

3.4.3MFC应用程序多态性的实现 59

3.4.4MFC应用程序中各个框架类对象的相互调用关系 61

4.1.1绘图类简介 65

4.1绘图类 65

第4章 与绘图操作有关的MFC类及操作 65

第二篇 实现基本矢量图形系统 65

4.1.2几个绘图类的主要差别 66

4.1.3绘图类的使用方法 67

4.2绘图设备类 68

4.2.1CGdiObject类 68

4.2.2CPen类 68

4.2.3CBrush类 71

4.2.4CFont类 73

4.2.5CRgn类 77

4.2.6CPalette和CBitmap类 82

4.3.1Windows映像方式及其设置方法 83

4.3坐标映像方式 83

4.3.2逻辑坐标和设备坐标的转换 84

4.4窗口和视口 85

4.4.1窗口和视口的概念 85

4.4.2窗口和视口有关的操作函数 85

4.4.3窗口逻辑坐标与视口设备坐标的转换 86

4.5其他绘图类操作函数 89

4.5.1选用绘图设备对象 90

4.5.2主要绘图属性设置函数 91

5.1组织矢量图形系统的图形元素类 93

5.1.1图形元素基类的组织 93

第5章 实现矢量图形系统的文档和视图 93

5.1.2点类图形元素组织 94

5.1.3线类图形元素组织 98

5.1.4面类图形元素组织 100

5.1.5网络类图形元素的组织 101

5.1.6图形参数类 102

5.2组织矢量图形系统的文挡 104

5.2.1组织面向对象的文档管理机制 104

5.2.2利用MFC模板创建管理图形元素对象指针的对象 104

5.2.3实现矢量图形系统的文档 105

5.2.4实现文档的管理功能 106

5.3.1建立坐标系 116

5.3实现矢量图形系统的视图 116

5.3.2实现各类图形元素的绘制功能 122

5.3.3视图类的OnDraw函数 133

5.3.4实现视图 135

5.4各类图形元素几何属性的计算 136

5.4.1图形元素长度的计算 136

5.4.2图形元素面积的计算 138

第6章 鼠标交互绘图 140

6.1用鼠标绘图要解决的主要问题 140

6.1.1捕捉鼠标操作消息 140

6.1.4保存图形数据到文档 142

6.1.3在屏幕上拖动图形 142

6.1.2捕捉所有的鼠标输入 142

6.1.5将图形以实际的形态重画 143

6.2交互绘制各类图形元素 143

6.2.1加入绘图菜单 143

6.2.2获得图形元素的惟一识别号 146

6.2.3绘制直线 148

6.2.4绘制圆和填充圆 151

6.2.5绘制圆弧 154

6.2.6交互绘制标注文本 162

6.2.7绘制连续直线和多边形区域 170

6.2.8绘制网络点 173

6.2.9绘制网络连接 174

第7章 矢量图形系统的操作功能 177

7.1增加图形操作菜单 177

7.1.1增加菜单资源 177

7.1.2增加消息处理函数 178

7.2图形重画 179

7.2.1全屏重画 179

7.2.2局部重画 180

7.3图形放大和摆动 181

7.3.1图形放大和摆动的计算方法 181

7.3.2图形放大和图形摆动功能的实现 183

7.4重画上屏和重画首屏 186

7.4.1记录屏幕状态 186

7.4.2实现重画上屏和重画首屏功能 189

7.5显示全图 190

7.5.1各类图形元素的边界矩形计算 191

7.5.2实现显示全图功能 195

7.6提高矢量图形系统重画速度的基本方法 198

7.6.1提高图形重画速度的方法 198

7.6.2提高图形重画速度的实现方法 198

7.6.3提高图形元素的绘制速度 200

8.1.1各种图形元素的选中区域 202

第8章 图形的选中、移动、旋转、删除 202

8.1鼠标点选图形元素 202

8.1.2各种图形元素的点选判断函数 207

8.1.3选中图形元素的特殊显示 212

8.1.4实现点选图形元素功能 212

8.1.5放弃选中的图形元素 218

8.1.6图形元素的显示和选中顺序 219

8.2图形移动 220

8.2.1各类图形元素的移动操作 220

8.2.2实现图形移动操作功能 222

8.3.1点与点的旋转操作 225

8.3图形旋转 225

8.3.2各类图形元素的旋转操作 227

8.3.3实现旋转操作功能 229

8.4图形元素的删除 229

8.4.1删除操作的类型 229

8.4.2从屏幕上删除图形元素的方法 230

8.4.3各类图形元素的删除操作 231

8.4.4实现图形元素删除操作 235

第9章 图形的存取功能 237

9.1利用串行化存取文档 237

9.1.1CArchive类及CArchive对象的创建 237

9.1.2Serialize函数 239

9.1.3CObArray类的Serialize函数 241

9.2实现矢量图形系统的存取功能 242

9.2.1实现各个图形元素类的串行化 242

9.2.2MFC框架程序的文档串行化机制 248

9.2.3实现矢量图形系统的文档存取功能 249

9.2.4设置和取消文档修改标志 251

第10章 矢量图形系统的其他功能 253

10.1子图块管理 253

10.1.1组织管理子图块 253

10.1.3实现子图块的绘制功能 255

10.1.2创建子图块的方法 255

10.2管理各种图形参数 257

10.2.1管理颜色 257

10.2.2管理图层 260

10.3定制线型 262

10.3.1线型的描述方式 262

10.3.2实现线型所必须具备的功能 263

10.3.3线型体的数据定义 266

10.4区域的子图填充 268

10.4.1管理填充子图块 268

10.4.2绘制填充子图块 268

10.5与其他图形系统的接口 272

10.5.1读入其他图形系统的图形 273

10.5.2输出可识别的接口文件 279

10.6图形的打印输出 281

10.6.1视图的打印机理和实现方法 282

10.6.2打印功能的实现方法 282

10.6.3实现矢量图形系统的打印功能 285

第三篇 实现数据库管理系统 293

第11章 开发数据库应用程序的基础知识 293

11.1关系数据库 293

11.1.1数据库的概念 293

11.2SQL语言 295

11.1.2关系数据库的基本术语 295

11.2.1选择子式 296

11.2.2过滤子式 298

11.2.3排序子式 299

11.3ODBC及创建ODBC数据源的方法 301

11.3.1ODBC的优势 301

11.3.2VC++中使用ODBC的方法 302

11.3.3创建ODBC数据源 302

11.3.4动态创建ODBC数据源 308

12.1.2MFCAppWizard创建一个数据库应用程序的步骤 312

12.1.1创建一个ODBC数据源 312

12.1创建基于ODBC的数据库应用程序 312

第12章 数据库应用程序开发技术 312

12.2CRecordSet类功能分析 314

12.2.1连接数据源和创建记录集合 315

12.2.2与记录集合的数据交换 318

12.2.3打开和关闭记录集合对象 320

12.2.4过滤记录集合 320

12.2.5排序记录集合 321

12.2.6移动指向记录集合的记录指针 323

12.2.7修改记录集合 326

12.2.8CRecordSet类的其他操作功能 328

12.2.9MFCClassWizard管理CRecordSet派生类 331

12.3CRecordView视图类分析 336

12.3.1CRecordView视图类 336

12.3.2CRecordView视图对象与记录集合对象的联系 337

12.3.3MFCClassWizard管理CRecordView派生类 339

12.4基本数据库管理功能实现剖析 344

12.4.1浏览功能 344

12.4.2增加一个操作菜单 350

12.4.3记录编辑功能 352

12.4.4数据库过滤功能 355

12.4.5数据库排序功能 359

13.1.1视图的创建过程 361

第13章 实现数据库浏览功能 361

13.1创建一个数据库浏览视图 361

13.1.2创建另外一类视图的步骤 363

13.1.3在矢量图形系统中创建数据库浏览视图 366

13.2创建一个CRecordSet派生类对象 373

13.2.1创建一个ODBC数据源 374

13.2.2创建管理记录集合的CRecordSet派生类 375

13.2.3创建记录集合对象 376

13.3实现数据库浏览视图 377

13.3.1建立视图与记录集合对象的联系 377

13.3.2获得数据库浏览视图的滚动区域 378

13.3.3实现数据库浏览视图 379

第14章 实现数据库编辑功能 385

14.1在数据库浏览视图中建立记录指针 385

14.2建立数据库编辑功能操作菜单 389

14.2.1修改菜单资源 389

14.2.2创建消息处理函数 389

14.3建立编辑数据记录的对话框类 391

14.3.1建立对话框资源 391

14.3.2创建编辑数据记录的对话框类 392

14.3.3设置对话框类的外部对象引用 392

14.3.4建立对话框控制与记录集合类的映射变量的映射联系 394

14.4.1获得记录的惟一识别号 396

14.4增加和修改数据记录 396

14.4.2增加记录 397

14.4.3修改记录 401

14.5删除记录 402

14.5.1删除当前记录 402

14.5.2删除所有记录 403

第15章 通用数据库过滤功能 405

15.1过滤操作的实现方式 405

15.1.1固定条件过滤操作 405

15.1.2固定方式过滤操作 405

15.1.3通用条件过滤操作 406

15.2创建组织过滤条件的对话框类 407

15.2.1创建对话框资源 407

15.2.2创建组织过滤条件的对话框类 408

15.3组织过滤条件编辑器的各种功能 409

15.3.1过滤条件编辑器编辑的过滤条件式的语法格式 409

15.3.2定义和初始化对话框类的变量 410

15.3.3产生和分解各级条件子式 413

15.3.4初始化对话框的状态 418

15.3.5增加条件子式 419

15.3.6删除和修改条件子式 425

15.3.7条件子式的分解功能 429

15.3.8实现过滤操作 432

15.4在数据库浏览视图中实现过滤功能 434

15.4.1增加一个操作菜单 434

15.4.2实现数据库过滤操作功能 435

15.5增强过滤条件编辑器的功能 436

15.5.1增强过滤条件分解能力 436

15.5.2增强交互式编辑界面 437

15.5.3存储过滤条件 438

16.1.1可通用化的数据库管理功能 439

16.1各种数据库管理功能的可通用化分析 439

第16章 数据库管理功能通用化 439

16.1.2不易通用化的功能 440

16.2实现数据库管理功能通用化 440

16.2.1通用化功能模块的方法 441

16.2.2数据库操作功能模块通用化的步骤 443

16.2.3选择操作不同的记录集合对象 448

16.2.4增加应用程序管理的记录集合对象 451

16.2.5增加通用数据库操作功能 455

16.3数据库管理功能完全通用化 457

17.1.1连接方式 461

17.1连接方式及连接单元 461

第17章 图形元素与属性数据的连接 461

第四篇 实现GIS的常用功能 461

17.1.2连接单元 462

17.1.3连接的特性 462

17.2属性数据的连接方法 463

17.2.1隐含固定连接法 463

17.2.2动态组织连接信息法 464

17.3实现双向信息查询检索 470

17.3.1通过属性数据检索矢量图形元素 470

17.3.2通过图形元素检索属性数据 472

18.1.1直线与直线的关系 475

18.1直线与多边形区域的关系 475

第18章 图形元素的平面几何关系计算 475

18.1.2直线与多边形区域的相交关系 479

18.1.3连续直线与多边形区域的相交关系 482

18.2圆弧与多边形区域的关系 485

18.2.1圆与直线的关系 486

18.2.2圆弧与直线的关系 489

18.2.3圆弧与多边形区域的关系 492

18.3各类图形元素与圆形区域的关系 495

18.3.1圆与圆的关系 495

18.3.2圆弧与圆形区域的关系 497

18.3.3直线与圆形区域的关系 499

18.3.4连续直线与圆形区域的关系 502

第19章 多边形区域叠加分析 506

19.1两个多边形区域的交集 506

19.1.1两个多边形区域交集的计算思路 506

19.1.2计算两个多边形区域的交集 507

19.2两个多边形区域的并集 515

19.2.1两个多边形区域并集的计算思路 515

19.2.2计算两个多边形区域的并集 517

19.3一个多边形区域剪裁另外一个多边形区域 524

19.3.1计算一个多边形区域剪裁另一个多边形区域的思路 524

19.3.2计算一个多边形区域剪裁另一个多边形区域的补集 525

19.4区域相交、相并、剪裁计算时的重合边界处理 531

19.4.1相交、相并、剪裁计算时的重合边界处理情况分析 531

19.4.2获得重合边界 532

19.4.3相交、相并、剪裁计算时的重合边界处理 536

19.5环形区域的相交、相并、剪裁计算的思路 543

19.5.1实心区域与环形区域的相交、相并、剪裁计算 544

19.5.2两个环形区域相交、相并、剪裁计算的思路和方法 547

第20章 缓中区分析 549

20.1点的缓冲区 549

20.2直线的缓冲区 550

20.3.1用区域并集方法获取连续直线缓冲区 552

20.3连续直线的缓冲区 552

20.3.2计算单侧连续直线缓冲区时的剪裁处理 554

20.3.3加快连续直线缓冲区的计算速度 561

20.4多边形区域的缓冲区 563

第21章 网络分析 565

21.1网络基本信息计算 565

21.1.1枢纽点的确定方法 565

21.1.2节点连接信息的描述方法和处理 566

21.1.3管理整个网络组织和网络连接信息 568

21.2最佳路径分析 577

21.2.1最佳路径分析方法 578

21.2.2正向最佳路径搜索 579

21.2.3逆向最佳路径搜索 585

21.2.4确定搜索方向的方法 589

21.3最佳游历路径分析 590

21.3.1求解最佳游历路径的方法 590

21.3.2实现最佳节点游历功能 591

21.4资源分配 600

21.4.1获取所有节点到中心节点距离法 600

21.4.2中心节点向外延伸法 604

21.5连通分析 612

附录 代码光盘与技术支持 614

参考书目 615