前言 1
联系博文视点 5
第1章 走进插件式GIS应用框架 1
1.1应用框架精讲 1
应用框架简介 1
应用框架的特点 2
GIS应用框架 5
1.2插件式应用框架 7
1.3 ArcGIS Engine简介 9
ArcG IS产品框架 9
GIS开发组件——ArcGIS Engine 11
ArcGIS Engine产品类型 13
ArcGIS Engine 9.2新特性展现 14
1.4第三方UI组件——Janus Systems 20
1.5小结 22
第2章 框架插件引擎设计 23
2.1他山之石——ArcMap插件机制 24
2.2框架通信契约——接口 27
接口的秘密 28
实现接口与显式实现接口 31
C#的实现继承 33
继承和重用 37
2.3框架宿主程序设计与实现 38
属性——合理冲破私有变量访问限制 39
动手——从宿主程序开始 41
2.4框架通信契约设计 46
IPlugin接口 46
ICommand接口 47
ITool接口 48
IItemDef接口和实现 51
IMenuDef接口 54
IToolBarDef接口 55
IDockableWindowDef接口 56
通信契约设计小结 57
2.5插件容器设计与实现 57
集合 58
泛型机制 61
聚合法产生容器 62
产生插件容器 64
访问容器元素 66
2.6动态加载框架插件 68
反射机制 68
考虑异常 70
插件的动态加载和对象生成 71
2.7框架日志处理 75
一个Log4net例子 76
Log4net配置文件 77
框架的日志设计 78
2.8插件的分类 80
类型转换与判别 81
插件分类的设计与实现 83
2.9小结 87
第3章 框架宿主程序设计 89
3.1静态UI设计 89
菜单和状态栏设计 90
浮动面板设计 91
3.2插件UI对象 96
公共变量的设计 97
插件获取 100
解析ICommand和ITool对象 102
解析IMenuDef和IToolBarDef对象 105
解析IDockableWindowDef对象 109
3.3插件对象的事件处理 111
松散耦合的关键——委托与事件 112
ITool的Click事件 116
ICommand的Click事件 119
ITool的地图交互事件 121
3.4小结 125
第4章 框架插件设计 127
4.1 ArcGIS Engine的扩展框架 127
基础类 129
内置Command和Tool 132
HookHelper原理及应用 133
4.2如虎添翼的Geoprocessing 135
什么是Geoprocessing 135
运行Geoprocessing工具 138
Geoprocessing的批处理 143
4.3插件的设计和实现 144
ICommand插件实例 144
ITool类型插件实例 148
使用内置ITool对象实例 151
IDockableWindowDef类型插件实例 155
4.4小结 161
第5章 宿主程序的高级设计 163
5.1两种视图的同步 163
共享同一份地图 165
同步类的使用 171
5.2使用TOCControl控制图层 172
选择TOC控件的元素 173
TOC控件的鼠标交互 174
快捷菜单的设计实现 179
5.3要素数据的查询显示 184
从FeatureClass到DataTable 185
DataTable的显示 187
要素的属性查询和空间定位 190
5.4符号控件应用 192
SymbologyControl控件 192
控件使用实例 193
5.5小结 196
第6章 GIS算法的实现 199
6.1图结构简介 199
6.2自动构面算法 200
线网拆分 201
左转算法及其改进 204
构造有向图 207
左转算法实现 212
剔除无效多边形 216
岛和洞的处理 218
6.3单源最短路径算法 220
Dijkstra算法 220
网络节点和边的定义 223
构建拓扑网络 226
Dijkstra算法实现 228
6.4小结 231
第7章 框架辅助组件库设计 233
7.1 NBGISFunLib设计 234
7.2复制要素类 236
字段的复制 238
Annotation要素类的复制 240
7.3要素数据加载 243
字段匹配 244
数据加载 245
加载异常问题 248
7.4小结 249
第8章 程序的部署与打包 251
8.1 ArcGIS Engine自定义程序部署 251
8.2程序打包 252
InstallShield Express X介绍 253
安装包的制作过程 254
8.3小结 257