第1章 Web GIS概述 1
1.1 GIS的发展 2
1.2 Web GIS及其发展 3
1.2.1 传统Web GIS的不足 3
1.2.2 从Web站点发展为Web服务 4
1.2.3 从SOAP发展为REST 5
1.2.4 从三层架构发展为多层架构 6
1.2.5 从Web GIS 1.0到2.0 7
1.3 Web服务 8
1.3.1 Web服务的重要性 8
1.3.2 REST及REST风格的Web服务 11
1.3.3 查看在线的Web服务 13
1.3.4 OGC的Web服务规范 15
1.4 自由及开源软件、开放规范与开放数据 16
1.4.1 自由及开源GIS软件 17
1.4.2 开放规范的使用 17
1.4.3 开放数据的作用 18
1.5 实践1:QGIS的安装与基本使用 19
1.6 习题 22
第2章 Web服务与Web GIS的设计 23
2.1 Web GIS的系统架构 24
2.2 Web地图的组成 26
2.2.1 基础底图 27
2.2.2 专题图层 28
2.2.3 交互小组件 29
2.3 实践2:GeoServer的安装与初步使用 29
2.4 习题 33
第3章 空间数据的存储与处理 34
3.1 空间数据常用的开放格式 35
3.1.1 基于文件的数据 35
3.1.2 基于空间数据库的数据 38
3.2 Web GIS中的数据层 39
3.2.1 服务器的选择 39
3.2.2 文件与数据库方式的选择 40
3.2.3 开放数据格式与专有格式的选择 40
3.3 处理空间数据的开源工具 40
3.3.1 QGIS 41
3.3.2 GDAL与OGR工具 42
3.4 实践3:使用QGIS裁剪与投影变换矢量数据 43
3.4.1 使用QGIS裁剪数据并转换投影 43
3.4.2 使用OGR命令行工具裁剪与投影变换数据 45
3.4.3 在批处理中运行OGR功能 47
3.4.4 数据整合 48
3.5 实践4:使用QGIS处理栅格数据 48
3.6 实践5:PostGIS的安装与初步使用 52
3.6.1 安装PostGIS 52
3.6.2 创建空间数据库 53
3.6.3 导入空间数据 54
3.7 习题 57
第4章 使用WMS在服务器端绘制与查询地图 58
4.1 动态绘制地图服务 59
4.1.1 动态绘制地图的优点 59
4.1.2 动态绘制地图的缺点 59
4.1.3 动态绘制地图的相关服务器软件 60
4.2 WMS规范基础 60
4.2.1 使用GetCapabilities操作请求服务元数据 61
4.2.2 使用GetMap操作请求地图 64
4.2.3 使用GetFeatureInfo操作请求地图要素信息 65
4.3 WMS的样式与符号 67
4.3.1 使用GetStyles操作请求样式 67
4.3.2 使用GetLegendGraphic操作请求图例 68
4.4 实践6:使用GeoServer发布WMS服务 69
4.4.1 使用默认样式发布一个图层 69
4.4.2 使用样式化图层描述符 72
4.4.3 在QGIS中访问WMS 77
4.5 实践7:高级符号与图层组 78
4.5.1 使用QGIS创建样式化图层描述符 78
4.5.2 将多图层发布为WMS服务 80
4.6 习题 82
第5章 切片地图 83
5.1 为什么使用切片地图 84
5.2 何时使用地图切片 86
5.2.1 是否有满足需求的切片地图 86
5.2.2 投影 87
5.2.3 比例尺 88
5.3 创建与提供切片地图服务的策略 89
5.3.1 创建切片地图的策略 90
5.3.2 使用开源软件创建切片 90
5.4 实践8:使用GeoWebCache创建切片 91
5.5 实践9:使用TileMill创建切片 93
5.5.1 使用TileMill设计地图 93
5.5.2 输出与提取地图切片 99
5.5.3 发布与测试切片 102
5.6 习题 104
第6章 使用Web地图API访问地图服务 105
6.1 Web地图API 106
6.1.1 Web地图API的选择 106
6.1.2 主要FOSS类型的Web地图API 107
6.1.3 主要的商业Web地图API 108
6.2 使用Web地图API的基本步骤 110
6.2.1 引用JavaScript与样式文件 110
6.2.2 地图div与对象 111
6.2.3 Layer对象 111
6.2.4 图层样式化机制 112
6.2.5 事件与交互元素 113
6.3 查看OpenLayers实例 115
6.3.1 切片地图实例 115
6.3.2 WMS实例 116
6.3.3 查询实例 116
6.4 实践10:使用OpenLayers实现在切片地图上叠加WMS 119
6.4.1 发布专题数据WMS服务 120
6.4.2 准备开发环境 121
6.4.3 页面设计与代码编写 122
6.5 习题 127
第7章 在客户端绘制矢量数据 128
7.1 在客户端绘制矢量数据的优势与挑战 129
7.1.1 客户端绘制矢量数据的优势 129
7.1.2 客户端绘制矢量数据的挑战 130
7.1.3 客户端如何绘制矢量数据 130
7.1.4 从服务器获取数据的方法 130
7.2 使用KML矢量数据 131
7.2.1 KML简介 131
7.2.2 在OpenLayers中使用KML 132
7.3 使用GeoJSON 133
7.3.1 GeoJSON简介 133
7.3.2 在OpenLayers中使用GeoJSON 134
7.4 在OpenLayers中符号化矢量图层 135
7.5 实践11:在OpenLayers使用GeoJSON图层 137
7.6 实践12:访问用户KML数据 142
7.6.1 页面设计 142
7.6.2 功能实现 143
7.7 习题 148
第8章 主流JavaScript框架的使用与专题制图 149
8.1 主流JavaScript框架 150
8.1.1 jQuery 150
8.1.2 Mootools 151
8.1.3 Ext JS 151
8.1.4 Dojo 152
8.2 OpenLayers的控件 154
8.3 基于属性值符号化图层 156
8.3.1 在OpenLayers中读取属性值 157
8.3.2 独立值专题图 158
8.3.3 等级符号专题图 159
8.3.4 范围专题图 160
8.3.5 根据属性限制要素的显示 163
8.4 实践13:使用OpenLayers与Dojo进行专题制图 165
8.4.1 页面布局 165
8.4.2 代码设计 168
8.5 习题 174
第9章 Web要素服务 176
9.1 WFS 177
9.1.1 WFS请求与响应的格式 177
9.1.2 WFS服务器与客户端 179
9.2 事务性WFS与基于Web的数据编辑 180
9.3 实践14:基于Web的空间数据编辑功能实现 181
9.3.1 发布服务 181
9.3.2 基于Web编辑功能开发 182
9.4 习题 190
第10章 WCS及多维数据 191
10.1 WCS及其操作 192
10.1.1 GetCapabilities操作 192
10.1.2 DescribeCoverage操作 193
10.1.3 GetCoverage操作 194
10.2 多维数据与图像镶嵌插件 195
10.2.1 多维数据 195
10.2.2 图像镶嵌插件 198
10.3 实践15:多维数据WCS的发布 198
10.3.1 发布时间序列栅格数据 198
10.3.2 发布时间序列与高程序列栅格数据 204
10.4 实践16:在OpenLayers中访问WCS 207
10.4.1 页面设计 207
10.4.2 代码设计 208
10.5 习题 211
第11章 Web处理服务 212
11.1 GeoServer中的WPS 213
11.1.1 WPS扩展的安装 213
11.1.2 GeoServer中WPS包含的类型 214
11.2 WPS的操作 215
11.2.1 GetCapabilities操作 215
11.2.2 DescribeProcess操作 216
11.2.3 Execute操作 217
11.3 实践17:使用WPS创建等高线地图 219
11.3.1 创建静态等高线地图 219
11.3.2 动态创建等高线 223
11.4 实践18:在OpenLayers中使用WPS 229
11.4.1 页面设计 230
11.4.2 代码实现 230
11.5 习题 233
第12章 开放数据获取与地图混搭应用 236
12.1 开放数据的方式 237
12.1.1 开放数据许可 237
12.1.2 商业软件与开放数据 238
12.2 VGI与众包项目 239
12.2.1 VGI 239
12.2.2 众包 240
12.3 OpenStreetMap及其开放数据的应用 240
12.3.1 OpenStreetMap数据模式 241
12.3.2 OpenStreetMap的使用 243
12.4 地图混搭应用 245
12.4.1 混搭应用的概念 245
12.4.2 网络资源 245
12.5 实践19:从OpenStreetMap获取源数据 249
12.5.1 使用QGIS下载数据 250
12.5.2 使用OpenStreetMap查询API下载数据 253
12.6 实践20:城市天气预报系统开发 256
12.6.1 服务准备与页面设计 256
12.6.2 代码实现 256
12.7 习题 261