1 概述 1
1.1 地理信息系统 1
1.1.1 地理信息系统概述 1
1.1.2 GIS分类与开发方式 1
1.1.3 地理信息系统软件 2
1.2 MapInfo简介 5
1.2.1 MapInfo概述 5
1.2.2 MapInfo的软件开发思想 6
1.2.3 MapInfo的功能特色 7
1.2.4 MapInfo的数据组织g 7
1.2.5 MapInfo Professional 9
1.2.6 MapInfo系列产品介绍 10
1.2.7 主要应用领域 12
1.3 MapX 12
1.3.1 MapX主要功能 12
1.3.2 MapX v5.0的特性 14
1.4 Visual C++编程语言 15
1.4.1 Visual C++简介 15
1.4.2 ActiveX 16
1.4.3 VARIANT类型 17
1.5 本章小结 19
2 MapX基础 20
2.1 MapX入门 20
2.1.1 MapX空间数据结构 20
2.1.2 MapX对象模型 20
2.1.3 图层 22
2.2 安装MapX 23
2.2.1 系统要求 23
2.2.2 安装过程 23
2.3 Geoset和GeoDictionary管理器 25
2.3.1 Geoset管理器 25
2.3.2 GeoDictionary管理器 30
2.4 Map对象 31
2.5 VisualC++中创建地图 33
2.5.1 MapX的设置 33
2.5.2 主视图中创建简单地图 34
2.5.3 在对话框中创建地图 36
2.5.4 导出地图 39
2.5.5 灵活地开发GST文件 40
2.6 本章小结 44
3 MapX工具 45
3.1 MapX标准工具 45
3.2 标准工具的使用 46
3.2.1 箭头工具 46
3.2.2 平移工具 46
3.2.3 居中工具 47
3.2.4 放大工具 48
3.2.5 缩小工具 48
3.2.6 符号工具 48
3.2.7 文本工具 50
3.2.8 选择工具 50
3.2.9 半径选择工具 51
3.2.10 矩形选择工具 52
3.2.11 多边形选择工具 52
3.2.12 添加标签工具 53
3.2.13 添加线条工具 53
3.2.14 添加折线工具 54
3.2.15 添加区域工具 55
3.2.16 添加点工具 55
3.3 自定义工具 56
3.3.1 创建工具 56
3.3.2 工具处理过程 57
3.3.3 使用工具 58
3.4 工具创建示例 59
3.4.1 手动测距计算 59
3.4.2 拖曳图元 61
3.5 本章小结 63
4 Layers与Features 64
4.1 Layer对象与Layers集合 64
4.1.1 Layer对象 64
4.1.2 Layers集合 67
4.2 图层与图元 69
4.2.1 图层的顺序 69
4.2.2 图层的图元类型 70
4.2.3 图层的缩放 72
4.3 Feature对象与Features集合 72
4.3.1 Feature对象 72
4.3.2 Features集合 73
4.4 Selection集合 76
4.4.1 添加方法 76
4.4.2 获得图元数目 76
4.4.3 克隆方法 76
4.4.4 集合交 76
4.4.5 删除方法 76
4.4.6 替代方法 77
4.4.7 获得指定的图元 77
4.4.8 选择图层中指定点处的图元 77
4.4.9 从图层中选择某点周围指定半径内的图元 77
4.4.10 选择矩形中的图层图元 77
4.4.11 选择区域内的图层图元 77
4.4.12 取消选择 77
4.4.13 重载操作符 78
4.5 在地图中查找图元 78
4.5.1 Find对象 78
4.5.2 FindFeature对象 79
4.6 Visual C++环境下操作示例 80
4.6.1 计算高速公路总长度 80
4.6.2 图元的闪烁 81
4.6.3 查找城市 83
4.6.4 综合搜索 84
4.7 本章小结 86
5 Style对象 87
5.1 Style对象概述 87
5.1.1 属性类方法 87
5.1.2 操作类方法 89
5.2 线图元式样 90
5.2.1 线图元颜色 90
5.2.2 线图元式样 91
5.2.3 线图元宽度 94
5.2.4 式样属性选择对话框 94
5.2.5 输出 95
5.3 面图元式样 95
5.3.1 颜色控制 95
5.3.2 面图元填充式样 96
5.3.3 边界式样 96
5.3.4 边界线宽 96
5.3.5 式样属性选择对话框 96
5.3.6 输出 97
5.4 文本式样 98
5.4.1 颜色控制 98
5.4.2 文本阴影 98
5.4.3 文本光晕 99
5.4.4 大写字母显示控制 99
5.4.5 旋转显示 100
5.4.6 式样属性选择对话框 101
5.4.7 输出 102
5.5 符号式样 102
5.5.1 符号类型 102
5.5.2 位图符号 102
5.5.3 字体符号 103
5.5.4 向量符号 105
5.5.5 符号的输出 106
5.5.6 属性选择对话框 107
5.6 Visual C++环境下开发示例 107
5.6.1 改变TypeTrue字体符号大小 108
5.6.2 改变文本属性 108
5.7 本章小结 111
6 用DBMS访问数据库 112
6.1 MapInfo SpatialWare 112
6.1.1 SpatialWare介绍 112
6.1.2 安装及配置 112
6.1.3 数据输入与查询 113
6.2 Oracle Spatial 114
6.2.1 Oracle Spatial简介 114
6.2.2. 空间数据的准备和管理 114
6.3 MapX访问空间数据库 115
6.3.1 访问空间数据的方法 115
6.3.2 通过LayerInfo访问空间数据 116
6.3.3 通过.tab文件访问远程表 117
6.4 LayerInfo对象 117
6.4.1 LayerInfo对象方法 117
6.4.2 LayerInfo参数 118
6.5 连接字符串格式 120
6.5.1 ODBC连接字符串格式 120
6.5.2 Oracle Spatial连接字符串格式 121
6.6 地图目录 121
6.6.1 管理地图目录 122
6.6.2 加载空间数据 122
6.6.3 手工创建地图目录 122
6.7 地图化DBMS表 123
6.7.1 点样式 124
6.7.2 线样式 124
6.7.3 填充样式 124
6.8 VisualC++环境下开发示例 124
6.9 本章小结 127
7 MapX的数据绑定 128
7.1 数据绑定 128
7.1.1 空间数据存储方式 128
7.1.2 数据绑定简述 128
7.1.3 向地图添加数据 129
7.2 DataSet对象和DataSets集合 129
7.2.1 DataSet对象 129
7.2.2 DataSets集合 131
7.3 使用Fields集合 133
7.3.1 Field对象 133
7.3.2 Fields集合 135
7.4 BindLayer对象 136
7.4.1 绑定的图层名 136
7.4.2 绑定的图层类型 137
7.4.3 参考字段 138
7.4.4 参考图层 138
7.4.5 Filespec 138
7.5 数据绑定事件 139
7.5.1 RequestData事件 139
7.5.2 RveDaBd事件 139
7.5.3 ResveDaBdEx事件 143
7.5.4 DaMm事件 144
7.6 C++环境下数据绑定示例 144
7.6.1 图层绑定 144
7.6.2 文件绑定 145
7.6.3 DAO绑定 147
7.4.6 ODBC绑定 149
7.6.5 Unbound绑定 152
7.6.6 安全数组绑定 154
7.6.7 将数据显示为点图层 157
7.7 本章小结 161
8 MapX主题地图 162
8.1 规划主题地图 162
8.1.1 主题地图的概念 162
8.1.2 规划主题地图 162
8.2 主题地图类型 163
8.2.1 独立值地图 163
8.2.2 范围地图 164
8.2.3 等级符号地图 165
8.2.4 点密度地图 165
8.2.5 柱状图 166
8.2.6 饼状图 167
8.3 Theme对象和Themes集合 168
8.3.1 Theme对象 168
8.3.2 Themes集合 172
8.4 ThemePropes对象 173
8.4.1 适用于范围专题图的方法 173
8.4.2 适用于柱状专题图的方法 175
8.4.3 适用于等级专题图的方法 176
8.4.4 适用于饼状专题图的方法 176
8.4.5 适用于点密度专题图的方法 177
8.4.6 适用于独立值专题图的方法 178
8.5 类别对象与集合 178
8.5.1 RangeCategory对象 178
8.5.2 RangeCategpries集合 180
8.5.3 MultivarCategory对象 180
8.5.4 MultivarCategpries集合 181
8.5.5 IndividualValueCategory对象 181
8.5.6 IndividualValueCategories集合 182
8.6 主题图例 183
8.6.1 Legend对象 183
8.6.2 LegendText对象与LegendTexts集合 187
8.6.3 LegendTexts集合 187
8.7 Visual C++坏境下主题地图绘制示例 188
8.7.1 各种范围专题地图的绘制 188
8.7.2 运行中主题地图的修改 195
8.8 本章小结 197
9 逐层细化图层 198
9.1 逐层细化图层概述 198
9.1.1 逐层细化图层 198
9.1.2 逐层细化需注意的问题 199
9.2 逐层细化应用程序开发步骤 200
9.2.1 主要开发步骤 200
9.2.2 准备逐层细化图层 200
9.2.3 创建逐层细化和卷起工具 203
9.3 实施逐层细化的相关方法 204
9.3.1 DrilldownAddFeatures方法 204
9.3.2 DdownRemoveFeatures方法 205
9.3.3 Layer.DrilldownReset方法 205
9.3.4 Layer.GetDrilldownFeaturesByID方法 205
9.4 逐层细化的限制和要求 206
9.5 逐层细化开发示例 206
9.5.1 准备逐层细化图层 206
9.5.2 创建工具与初始化 207
9.5.3 选取工具 208
9.5.4 ToolUsed事件代码 208
9.6 本章小结 219
10 MapX应用程序的发布 220
10.1 制作安装程序工具概述 220
10.1.1 InstallShield 220
10.1.2 Setup Factory 220
10.1.3 Wise 220
10.1.4 Inno Setup 221
10.1.5 Tarma Installer 221
10.1.6 Nullsoft Installation System 221
10.1.7 Install Creator 221
10.1.8 Setup Specialist 221
10.1.9 SetupBuilder Professional 222
10.1.10 Setup2Go 222
10.2 发布应用程序所需的项目和步骤 222
10.2.1 客户安装项目 222
10.2.2 客户安装步骤 223
10.3 打包文件的确定 223
10.4 注册与许可证 225
10.4.1 MapX的注册 225
10.4.2 注册表的修改 225
10.4.3 通过注册对ODBC设置 226
10.4.4 MapX许可证 227
10.5 应用程序的发布 227
10.5.1 常规设计 227
10.5.2 屏幕设计 228
10.5.3 卸载 232
10.5.4 文件导入 234
10.5.5 生成安装文件 235
10.6 本章小结 236
11 Visual C++开发案例 237
11.1 MapX中鼠标事件 237
11.1.1 开发思路 237
11.1.2 开发步骤 237
11.1.3 部分源代码 238
11.2 道路交点的计算 239
11.2.1 开发思路 239
11.2.2 开发步骤 239
11.2.3 部分源代码 242
11.3 道路上两点间距离计算 243
11.3.1 开发思路 243
11.3.2 开发步骤 244
11.3.3 部分源代码 246
11.4 基于MapX的鹰眼图实现 248
11.4.1 开发思路 248
11.4.2 开发步骤 249
11.4.3 部分源代码 249
11.5 路网中最短路径计算 255
11.5.1 开发思路 255
11.5.2 主要步骤 256
11.5.3 部分源代码 258
11.6 比例尺的绘制 271
11.6.1 开发思路 271
11.6.2 开发步骤 271
11.6.3 部分源码 272
11.7 使用数据库 277
11.7.1 几种连接方式 277
11.7.2 开发步骤 278
11.7.3 部分源码 281
11.8 GPS目标轨迹显示 289
11.8.1 开发思路 289
11.8.2 开发步骤 289
11.8.3 关键代码 294
11.9 本章小结 301
参考文献 302