以数据为中心的应用模式是未来地理信息科学发展的重要趋势。具备空间数据库建设与应用的实践技能,势必成为地理科学、测绘工程及相关专业学生日后开展空间数据库相关工作的基本技能。
作为《空间数据库管理系统概论(第二版)》的配套实验教程,本书以“单机一C/S—B/S—云”的升级为主线,结合地层孢粉样本、蓝湖地区地图、黄河流域典型要素、北京市规划小区与出租车时空轨迹等各类数据,设计了系列跨领域、多尺度、具有地理特色的实验案例,通过实践,由浅入深地帮助读者掌握空间数据库的理论和难点、掌握GSQL的编写、掌握空间大数据的分布式存储与计算等技能。
更多科学出版社服务,请扫码获取。
1997.09-2001.07 中国农业大学 土壤学 农学博士
1993.09-1997.07 北京理工大学 计算机软件 工学学士
目录
序
前言
第1章 PostgreSQL的安装与使用 1
1.1 PGSQL简介与体系结构 1
1.2 PGSQL的下载与安装 2
1.2.1 PGSQL安装程序的下载 2
1.2.2 PGSQL的安装 2
1.3 寻找PGSQL的四个模块 4
1.4 用SQL Shell登录数据库管理系统 5
1.5 pgAdmin访问数据库 6
1.5.1 用pgAdmin登录数据库管理系统 6
1.5.2 采用GUI的方式操作数据库中的表 9
1.5.3 在 pgAdmin 中执行SQL 10
1.5.4 在pgAdmin设置用户、角色与访问控制 11
1.6 常见问题与解决方案 19
第2章 关系型孢粉数据库的构建与SQL 20
2.1 实验数据介绍 20
2.2 孢粉数据的关系规范化 20
2.3 Excel:从基表到视图的关系运算过程 24
2.4 PGSQL:孢粉数据库的SQL实现 27
2.5 常见问题与解决方案 32
2.6 作业 32
第3章 PostGIS与QGIS的安装与使用 33
3.1 PostGIS的下载与安装 33
3.1.1 通过Stackbuilder 安装 33
3.1.2 通过OSGeo 安装 35
3.1.3 寻找PostGIS安装的模块与建立的空间数据库 35
3.2 QGIS的下载与安装 36
3.3 矢量数据的导入导出 37
3.3.1 用PostGIS的工具导入导出 37
3.3.2 用 QGIS 的 DB Manager 导入导出 39
3.4 栅格数据的导入 41
3.5 导入数据的查看 43
3.5.1 在pgAdmin4中查看与查询 43
3.5.2 在QGIS中查看 44
3.6 常见问题与解决方案 46
3.6.1 安装过程中可能遇到的问题 46
3.6.2使用过程中可能遇到的问题 48
3.7 作业 50
第4章 蓝湖地区地图数据库的构建与查询 51
4.1 实验案例介绍 51
4.2 概念设计 52
4.2.1 空间扩展E-R图 52
4.2.2 应用实例的扩展E-R图 53
4.3 逻辑设计 54
4.4 物理实现 56
4.4.1 建表前的准备工作 57
4.4.2 建表的GSQL语句 57
4.4.3 建表后的系统表信息 58
4.4.4 空间数据的插入 59
4.4.5 蓝湖数据的查看 60
4.5 空间查询 61
4.5.1 单表空间查询 61
4.5.2 多表空间查询 63
4.6 作业 63
第5章 黄河流域数据库的空间查询与远程访问 64
5.1黄河流域数据库与GSQL 64
5.1.1 实验数据的介绍 64
5.1.2 SQL查询分析案例 65
5.1.3 GSQL查询分析案例:矢量 66
5.1.4 GSQL查询分析案例:栅格 67
5.1.5 GSQL查询分析案例:栅格与矢量混合 69
5.2 黄河流域数据库局域网环境的远程访问 69
5.2.1 搭建S机和C机的局域网络环境 70
5.2.2 S机服务器的设置与相关参数的获取 71
5.2.3 在C机上远程访问S机的黄河数据库 74
5.3 可能会遇到的问题 77
5.3.1 SQL执行过程遇到的问题 77
5.3.2 局域网远程访问遇到的问题 78
5.4 作业 78
第6章 黄河流域数据库Web共享与发布 79
6.1 实验框架介绍 79
6.2服务层的安装与配置 80
6.2.1 Open JDK下载与安装 80
6.2.2 Tomcat下载、安装与登录 82
6.3 GeoServer地图服务器与数据共享 85
6.3.1 GeoServer下载与安装 85
6.3.2 GeoServer登录 86
6.3.3 GeoServer连接 PGSQL 88
6.4 基于Mapbender的地图应用发布 100
6.4.1 Mapbender下载 100
6.4.2 Mapbender安装 101
6.4.3 Mapbender连接 GeoServer服务 106
6.4.4 Mapbender创建新应用 108
6.4.5 Mapbender添加应用控件 109
6.4.6 Mapbender远程访问 116
6.5 可能会遇到的问题 117
6.6 作业 117
第7章 矢量数据类型的高阶处理与分析 118
7.1 实验数据的介绍与导入 118
7.2 空间聚合函数 119
7.2.1 将多个Polygon聚合为一个MultiPolygon 119
7.2.2 将多个Point聚合为LineString 120
7.3 空间裁剪、分割、网格剖分函数 121
7.3.1 裁剪(Clip) 121
7.3.2 切割(Split) 123
7.3.3 网格剖分(Tessellate) 123
7.4 将LineString分割成更小段 129
7.4.1 分割LineString 129
7.4.2 将多点的LineString分割为若干仅有两点的LineString 130
7.4.3 根据指定的点截断LineString 132
7.5 平移、缩放和旋转几何图形 134
7.5.1 平移 134
7.5.2 缩放 135
7.5.3 旋转 136
7.6 Geography对象如何使用Geometry的函数 137
7.6.1 可以安全使用转换的函数 137
7.6.2 推荐使用ST_Transform的函数 138
7.7 小结 139
第8章 高程和气候等栅格数据的高阶处理与分析 140
8.1 实验数据介绍 140
8.2 实验数据的导入 140
8.3 使用空间聚合函数创建大型栅格数据 142
8.3.1 基于栅格瓦片的完整栅格数据重建 142
8.3.2 使用裁剪和合并函数提取兴趣区 142
8.3.3 ST_Union的聚合运算 143
8.4 栅格波段操作 143
8.4.1 使用ST_AddBand函数构建多波段栅格数据 143
8.4.2 使用ST_Band函数提取单波段数据 144
8.5 调整栅格瓦片大小 144
8.6 栅格与矢量数据的相交运算 146
8.6.1 像素统计 147
8.6.2 使用ST_Value和ST_SetZ为二维线段添加Z坐标 147
8.6.3 将二维多边形转换为三维多边形 149
8.7 栅格统计 150
8.7.1 像素值操作 150
8.7.2 栅格统计函数 152
8.8 地图代数 153
8.8.1 表达式与回调函数的选择 154
8.8.2 单波段的地图代数表达式 154
8.8.3 单波段的地图代数回调函数 155
8.8.4 地图代数中的邻域计算 156
8.9 小结 157
第9章 出租车订单的时空轨迹大数据处理与分析 158
9.1 实验数据与实验环境介绍 158
9.2 导入实验数据 159
9.2.1 出租车GPS打点数据的导入 159
9.2.2 交通小区数据导入 161
9.3 基于出租车打点数据的OD交通量的处理与查询 162
9.3.1 时间与空间字段的解译与生成 162
9.3.2 系统最大内存限制的修改及空间索引的创建 163
9.3.3 生成某出租车订单和空驶状态的OD流 163
9.3.4 所有出租车订单OD流的生成 166
9.3.5 交通小区间OD流列表的生成 168
9.3.6 交通小区间OD矩阵的生成 169
9.4 基于出租车打点数据的时空轨迹处理与查询 170
9.4.1 将打点数据表转换为轨迹表 170
9.4.2 检查生成的轨迹类型是否正确 172
9.4.3 查询轨迹基本信息 172
9.4.4 轨迹还原为点数据 172
9.4.5 计算行驶中的最近距离 173
9.4.6 计算行驶中达到最近距离时对应的时间 173
9.4.7 判断行驶中的最近距离是否小于指定阈值 174
9.5 作业 175
第10章 海量出租车订单OD流的分布式存储与计算 176
10.1 实验数据与实验环境介绍 177
10.2 分布式Docker集群的部署 177
10.2.1 集群规划 177
10.2.2 Docker虚拟机环境配置 178
10.3 分布式PGXL的安装与部署 183
10.3.1 PGXL的安装 183
10.3.2 PGXL环境配置 184
10.4 分布式PostGIS版本的安装 189
10.4.1 安装包下载 189
10.4.2 编译安装 189
10.5 出租车订单OD流的分布式存储与查询实验 192
10.5.1 数据库导入 192
10.5.2数据存储分布查询 193
10.5.3 数据查询效率比较 194
主要参考文献 197
参考标准 197
附录GeoServer与PostGIS中栅格数据表的连接 198