第1部分 使用MapBasic开发GIS 1
第1章 MapBasic开发环境 1
1.1 MapInfo相关技术 1
1.1.1 MapInfo公司及其产品 1
1.1.2 MapInfo空间数据的拓扑关系模型 2
1.1.3 MapInfo的技术特点 3
1.1.4 MapInfo的数据组织 4
1.2 MapBasic概述 6
1.2.1 MapBasic的特点 6
1.2.2 MapBasic的开发环境 7
1.3 MapBasic开发过程 8
1.3.1 创建第一个MapBasic应用程序 8
1.3.2 编辑MapBasic程序 9
1.3.3 编译和链接MapBasic程序 9
1.4 创建多个模块的项目 10
1.4.1 创建项目文件 11
1.4.2 编译和链接项目文件 12
1.5 调试和运行MapBasic程序 13
1.5.1 错误类型 13
1.5.3 错误的捕获 14
1.5.2 MapBasic程序的调试 14
第2章 MapBasic语言基础 17
2.1 MapBasic的基本语法规则 17
2.1.1 标识符 17
2.1.2 运算符 17
2.1.3 书写规则 21
2.2 常量、变量和数据类型 22
2.2.1 常量 23
2.2.2 变量 24
2.2.3 数据类型 27
2.3 程序控制语句 29
2.3.1 循环语句 31
2.3.2 选择语句 39
2.3.3 其他流程控制语句 44
2.4 过程 48
2.4.1 主过程 48
2.4.2 子过程 49
2.4.3 使用过程 51
2.4.4 向过程传递参数 53
2.5.1 函数的声明、定义与特点 54
2.5 函数 54
2.5.2 递归函数 56
2.5.3 Define与Include语句 57
2.6 MapBasic中的常用函数 58
2.6.1 数学函数 59
2.6.2 日期函数 59
2.6.3 字符串函数 59
2.6.4 返回地理计算的函数 60
2.6.5 返回对象的函数 60
2.7.1 打印窗口内容 61
2.7 输出与显示 61
2.7.2 在消息窗口中显示文本 62
2.7.3 保存窗口 64
第3章 用户界面设计 66
3.1 设计菜单 66
3.1.1 菜单的基本元素 66
3.1.2 增加菜单项 67
3.1.3 删除已有菜单项 68
3.1.4 创建新的菜单 69
3.1.5 修改菜单项 69
3.1.6 重新定义菜单栏 70
3.2 设计标准对话框 71
3.1.7 定义快捷键和热键 71
3.2.1 确认对话框 72
3.2.2 打开文件对话框 73
3.3 设计自定义对话框 74
3.3.1 创建用户对话框 74
3.3.2 控件的位置和大小 75
3.3.3 控件类型 75
3.4 设计窗口 77
3.4.3 浏览窗口 78
3.4.1 指定窗口的尺寸和位置 78
3.4.2 地图窗口 78
3.4.4 统计窗口 79
3.4.5 信息窗口 80
3.4.6 重新设置窗口属性 82
3.4.7 设置布局窗口 86
3.5 设计工具栏 89
3.5.1 不同类型的按钮 90
3.5.2 创建和修改工具栏 90
3.5.3 获取用户选择的信息 91
3.5.4 综合使用工具栏实例 93
3.6 自动运行MapBasic应用程序 99
第4章 控制地图图层、窗口与地图对象 100
4.1 地图图层的处理 100
4.1.1 打开地图窗口 100
4.1.2 增加图层 102
4.1.3 增加不同投影的图层 104
4.1.4 使用活动图层 104
4.1.5 删除地图图层 111
4.2 标注图层 113
4.2.1 自动标注图层 113
4.2.2 查询图层标注 118
4.3 获取地图窗口和图层的设置信息 126
4.3.1 获取地图窗口的设置信息 126
4.3.2 获取图层的设置信息 128
4.4 改变地图窗口和图层的设置 132
4.4.1 改变地图的当前视图 134
4.4.4 改变图层属性 135
4.4.3 改变图层顺序 135
4.4.2 改变整个地图窗口的属性 135
4.4.5 改变图层的标注对象属性 137
4.5 创建和修改专题图 142
4.5.1 创建范围专题图 142
4.5.2 创建独立值专题图 147
4.5.3 创建点密度专题图 150
4.5.4 创建等级符号专题图 151
4.5.5 创建直方图专题图 153
4.5.6 创建饼图专题图 156
4.5.8 插值形成栅格图层 158
4.5.7 修改专题图 158
4.6 创建地图对象 161
4.6.1 对象概述 161
4.6.2 使用对象列 162
4.6.3 创建对象的语句 163
4.6.4 创建对象的函数 167
4.6.5 高级操作 168
4.6.6 在表中保存对象 172
4.7.1 修改对象的过程 175
4.7.2 修改对象的属性 175
4.7 修改地图对象 175
4.7.3 改变对象的类型 182
4.7.4 设置目标对象 182
4.7.5 擦除对象 183
4.7.6 合并对象 185
4.7.7 分割对象 186
4.7.8 在交叉点增加节点 187
4.8 查询地图对象 188
4.8.1 空间量算 188
4.8.2 坐标量算 190
4.8.3 设置坐标系统 195
4.9 处理对象样式 198
4.9.1 查询当前样式 198
4.9.2 查询样式属性 199
4.9.3 创建样式 199
第5章 管理工作表 203
5.1 操作工作表 203
5.1.1 打开普通表 203
5.1.2 打开外部文件 204
5.1.4 创建新表 209
5.1.3 关闭表 209
5.1.5 紧缩表 210
5.1.6 表的删除与重命名 211
5.2 操作表中字段 212
5.2.1 修改表结构 212
5.2.2 增加列数据 213
5.3 操作表中记录 217
5.3.1 访问表中指定的行和列 217
5.3.2 删除记录 219
5.3.3 保存对表的编辑 219
5.3.4 放弃对表的修改 220
5.4 操作表属性 221
5.4.1 获取表属性 221
5.4.2 设置表属性 226
5.5 操作元数据 228
5.5.1 创建、修改和删除元数据 228
5.5.2 读取元数据 229
5.6 操作无缝图层 230
5.6.1 创建无缝图层 230
5.6.2 访问无缝图层中的基表 236
5.7.1 导入表 239
5.7 导入与导出表 239
5.7.2 导出表 241
5.8 连接远程数据 243
5.8.1 获取可使用的数据源 243
5.8.2 连接和断开数据服务器 244
5.8.3 执行SQL命令 245
第6章 文件的操作 246
6.1 文件输入/输出基本概念 246
6.2 打开、关闭和复制文件 247
6.2.1 打开文件 247
6.2.3 复制文件 248
6.2.2 关闭文件 248
6.3 顺序文件的读写 249
6.3.1 读顺序文件 249
6.3.2 写顺序文件 251
6.4 随机文件和二进制文件的读写 253
6.4.1 读随机文件和二进制文件 253
6.4.2 写随机文件和二进制文件 254
6.5.4 文件属性 255
6.5.3 当前文件指针的位置 255
6.5.2 文件长度 255
6.5.1 是否到达文件结尾 255
6.5 判断文件的状态 255
6.5.5 文件是否存在 256
第7章 选择和查询 257
7.1 从表中选择数据 257
7.1.1 Select子句 258
7.1.2 From子句 262
7.1.3 Where子句 263
7.1.5 Group By子句 264
7.1.4 Into子句 264
7.1.6 Order By子句 265
7.1.7 用子选择进行选择 265
7.1.8 使用地图比较运算符 266
7.1.9 选择性能 267
7.1.10 查询选择表 267
7.2 通过地址查询地图对象 269
7.2.1 初始化地址查询 269
7.2.2 执行地址查询并获取查询结果 270
7.3.2 矩形查询 275
7.3.1 点查询 275
7.3 通过位置查询地图对象 275
7.3.3 查询结果 276
第8章 集成地图 280
8.1 集成地图开发概述 280
8.1.1 集成地图开发实现技术 280
8.1.2 在Visual Baisc中集成地图 281
8.1.3 在C++Builder中集成地图 282
8.2.1 启动MapInfo 284
8.2 集成地图开发过程 284
8.2.2 向MapInfo发送命令 285
8.2.3 从MapInfo中查询数据 285
8.2.4 重父化MapInfo窗口 286
8.2.5 重父化图例窗口和其他特殊窗口 287
8.2.6 提供改变地图窗口大小的功能 290
8.2.7 集成MapInfo工具按钮 292
8.2.8 自定义MapInfo快捷菜单 296
8.2.9 打印集成窗口 296
8.2.11 终止MapInfo 297
8.2.12 在线帮助 297
8.2.10 检测运行错误 297
8.3 使用回调从MapInfo中获取信息 299
8.3.1 使用OLE回调的步骤 299
8.3.2 处理回调数据 300
8.3.3 回调的其他方法 302
8.4 OLE自动化对象模型 305
8.4.1 Application对象 305
8.4.2 MBApplication集合 306
8.4.3 MBGlobals集合 307
8.5 使用Visual C++和MFC集成地图 309
8.5.1 准备工作 310
8.5.2 初始化 311
8.5.3 在视图中加入地图 311
8.5.4 加入工具按钮和处理句柄 313
8.5.5 增加工具栏按钮 314
8.5.6 使用异常处理捕获MapInfo错误 316
8.5.7 支持回调 317
8.6 运行外部应用程序 320
8.7 使用DDE集成其他应用程序 321
8.7.1 创建DDE对话 321
8.7.3 通过DDE传值 322
8.7.2 发送DDE命令 322
8.7.4 通过DDE获取值 323
8.7.5 关闭DDE对话 323
8.7.6 响应请求 327
第2部分 使用IDL开发GIS 329
第9章 IDL概述 329
9.1 IDL主要功能 329
9.2 IDL集成开发环境 330
9.3.1 IDL程序的种类 331
9.3 IDL应用程序基础 331
9.3.2 过程和函数 332
9.4 IDL程序开发过程 333
9.4.1 编写程序代码 334
9.4.2 编译并运行程序 335
第10章 IDL的图形图像处理 336
10.1 读写数据 336
10.1.1 导入文本文件数据 336
10.1.2 读写二进制数据 338
10.1.3 保存模板 340
10.2 二维坐标图的绘制 341
10.1.4 读写图像文件 341
10.3 信号处理 343
10.3.1 创建测试数据集 344
10.3.2 信号的平滑处理 345
10.3.3 频率域滤波 345
10.4 图像增强处理 348
10.4.1 读入和显示图像 349
10.4.2 对比增强处理 350
10.4.3 平滑图像 351
10.4.4 锐化图像 352
10.5 格网表面和等高线的绘制 354
10.5.1 显示格网表面 354
10.5.2 绘制阴影表面 356
10.5.3 绘制等高线 357
10.5.4 使用SHOW3绘图 359
10.6 绘制地图 360
10.6.1 绘制全球地图 361
10.6.2 绘制正射投影 362
10.6.3 绘制部分世界地图 363
10.6.4 标注地图 364
10.6.5 在地图上绘制等高线 365
10.6.6 在地图中加入图像 366
10.7 处理不规则格网数据 369
10.7.1 TRIANGULATE过程 370
10.7.2 使用TRIGRID绘制结果 371
10.8 动态显示 372
10.8.1 动态显示一系列图像 373
10.8.2 以格网形式动态显示 374
10.8.3 使用XINTERANIMATE动态显示 376
11.1.1 使用GUIBuilder的步骤 378
11.1.2 启动GUIBuilder工具 378
11.1 概述 378
第11章 开发图形界面 378
11.2 创建应用程序实例 379
11.2.1 为窗体创建菜单 380
11.2.2 创建绘图控件 380
11.2.3 用测试模式运行应用程序 381
11.2.4 生成IDL代码 381
11.2.5 处理事件 381
11.2.6 编译并运行程序 384
11.3.1 创建自定义控件 385
11.3 创建并使用自定义控件 385
11.3.2 使用自定义控件 389
第12章 面向对象的图形图像处理 391
12.1 面向对象的图形图像概述 391
12.1.1 直接图形图像和面向对象的图形图像的区别 391
12.1.2 如何使用面向对象的图形图像 392
12.1.3 图形图像类库的组成 395
12.2 图形处理 396
12.2.1 等高线对象 396
12.2.2 多边形对象 397
12.2.3 折线对象 399
12.2.4 坐标图对象 401
12.2.5 图例对象 403
12.3 表面处理 404
12.3.1 表面对象 404
12.3.2 光照对象 405
12.4 图像处理 407
12.4.1 图像对象 407
12.4.2 颜色条对象 409