PYTHON与开源GIS:数据处理、空间分析与地图制图
作者:卜坤著
出版时间:2019年版
内容简介
《Python 与开源GIS ——数据处理、空间分析与地图制图》从应用开发角度,根据作者多年的工作经验,介绍Python语言在开源GIS中的应用。希望能够借此机会,使得开源GIS得到应用,并进一步推广开源GIS的理念与技术。《Python 与开源GIS ——数据处理、空间分析与地图制图》主要以空间数据的处理、分析以及地图制图为主线。在选择内容时,《Python 与开源GIS ——数据处理、空间分析与地图制图》以目前较为经典、常用的类库为主,目的是给初学者系统地讲解基本的概念。《Python 与开源GIS ——数据处理、空间分析与地图制图》用到一些数据,并有代码,这些资源都可以从网站上下载,并且网站上的内容也会有相应的更新。《Python 与开源GIS ——数据处理、空间分析与地图制图》代码经过了测试,可以在Linux操作系统中运行,大部分也可以在Windows操作系统中运行。
目录
目录
序
前言
第1章 引言 1
1.1 GIS与开源GIS的基本概念 1
1.1.1 GIS的概念 1
1.1.2 位置、距离、度量与比例尺 4
1.1.3 地图投影 7
1.1.4 空间分析的基本概念 11
1.1.5 开源GIS的概念 13
1.1.6 开源空间信息软件体系与技术概述 16
1.2 GIS中的数据结构与数据类型 17
1.2.1 空间数据模型与数据格式 17
1.2.2 GeoTIFF文件格式与颜色空间 19
1.2.3 常用矢量数据格式与文件格式介绍 20
1.3 软件安装与环境配置 22
1.3.1 本书介绍的开源GIS 23
1.3.2 Debian Linux的安装与配置 23
1.3.3 虚拟机的使用 25
1.3.4 编辑器与IDE 26
1.4 Python语言基本用法 27
1.4.1 Python基础用法 28
1.4.2 Python的基本语句代码结构与数据类型 30
1.4.3 流程控制 33
1.4.4 Python中的列表、元组与字典数据结构 36
1.5 本书的约定与注意事项 40
第2章 使用GDAL操作栅格数据 42
2.1 GDAL简介 42
2.1.1 GDAL库简介 43
2.1.2 GDAL数据模型 44
2.2 使用GDAL获取栅格数据集信息 48
2.2.1 开始使用GDAL 49
2.2.2 读取遥感影像的信息 51
2.2.3 使用GDAL获取栅格数据波段信息 54
2.3 访问栅格数据中的像元 55
2.3.1 GDAL中的栅格数据类型 55
2.3.2 访问数据集的数据 56
2.3.3 读取波段中的数据 58
2.4 创建与保存栅格数据集 59
2.4.1 使用CreateCopy方法创建影像 60
2.4.2 使用Create方法创建影像 61
2.4.3 创建多波段影像 62
2.4.4 GDAL写操作时的空间投影处理 63
2.4.5 建立影像金字塔 64
2.5 GDAL的其他问题 64
2.5.1 GDAL和Pillow的互操作 64
2.5.2 GDAL工具集介绍 67
2.5.3 访问索引图像中的数据 73
2.5.4 地图代计算 77
2.5.5 GDAL中使用仿射地理变换进行空间定位 78
第3章 使用OGR库操作矢量数据 81
3.1 OGR简介 81
3.1.1 OGR的命令行工具 82
3.1.2 在Python中的OGR基本类 83
3.2 使用OGR获取Shapefile信息 83
3.2.1 导入OGR库 83
3.2.2 读取矢量数据 84
3.2.3 获取图层信息 85
3.2.4 获取要素信息 87
3.2.5 矢量数据的空间参考 90
3.3 使用OGR创建矢量数据 91
3.3.1 使用OGR创建Shapefile 91
3.3.2 使用OGR创建要素几何形状 92
3.3.3 使用WKT创建数据集的几何形状 96
3.3.4 使用OGR复制方法创建新的Shapefile 99
3.3.5 OGR属性字段的定义与使用 100
3.3.6 OGR中投影的处理方法 102
3.4 根据条件选择数据 104
3.4.1 根据属性条件选择与生成要素 104
3.4.2 空间择舍器 106
3.4.3 在OGR中使用SQL语句进行查询 108
3.5 使用Fiona进行矢量数据读写与处理 109
3.5.1 Fiona简介 110
3.5.2 读取矢量数据 111
3.5.3 Fiona的数据模型 114
第4章 空间参考与坐标转换 118
4.1 空间参考与坐标转换原理 118
4.1.1 大地水准面、地球椭球体与基准面 118
4.1.2 PROJ.4、osgeo.osr模块及投影表示方法简介 120
4.1.3 在PROJ.4 中了解椭球体与基准面 121
4.2 PROJ.4 命令行工具的使用 124
4.2.1 proj命令的用法 124
4.2.2 地图投影设置 127
4.2.3 cs2cs程序的用法 130
4.2.4 geod程序的用法 131
4.3 在Python中使用PROJ.4的功能 133
4.3.1 Proj类 134
4.3.2 投影变换 136
4.3.3 Geod类的使用 137
4.4 osgeo.osr的使用方法 139
4.4.1 osr简介 139
4.4.2 定义空间参考系统 139
4.4.3 空间参考对象的使用 142
4.4.4 从文件中获取投影信息 143
4.4.5 不同坐标系统之间转换坐标 145
第5章 矢量数据的空间分析:使用Shapely 147
5.1 Shapely介绍 147
5.1.1 JTS、GEOS与Shapely 148
5.1.2 Shapely中的空间数据模型 148
5.1.3 Shapely的基本使用方法 150
5.2 Shapely中的几何对象 151
5.2.1 通用属性与方法 151
5.2.2 Shapely中的几何要素 152
5.2.3 Shapely中的几何集合 156
5.3 Shapely中谓词与关系 160
5.3.1 一元谓词 160
5.3.2 二元谓词 162
5.3.3 DE九交模型关系 164
5.4 使用Shapely空间分析方法构建新对象 165
5.4.1 基于集合论方法构建新的几何对象 166
5.4.2 构建新对象的方法 168
5.5 Shapely中其他操作 173
5.5.1 合并线状要素 173
5.5.2 级联合并 175
5.5.3 制备几何操作 175
5.6 Shapely互操作的接口与使用 176
5.6.1 WKT格式 176
5.6.2 NumPy与Python列表 177
5.6.3 geo-interface接口与Shapely中的实现 178
第6章 使用SpatiaLite空间数据库 181
6.1 开源空间数据库的概念 182
6.1.1 SQLite与SpatiaLite介绍 182
6.1.2 安装与基本使用 184
6.2 在命令行中使用SpatiaLiteShell 185
6.2.1 开始运行SpatiaLite命令行 185
6.2.2 SpatiaLite中的基本SQL数据库查询用法 188
6.2.3 导出GIS数据 190
6.2.4 创建SpatiaLite数据库 191
6.2.5 SpatiaLite中管理空间表 193
6.3 空间索引的概念与使用 196
6.3.1 空间索引的概念 196
6.3.2 空间索引:在SQLite中使用R-Tree 197
6.3.3 空间索引:使用MbrCache 201
6.4 在Python中使用SpatiaLite进行数据管理 203
6.4.1 在Python中使用SpatiaLite 203
6.4.2 导入Shapefile 206
6.4.3 在表中进行空间查询查找 207
6.5 SpatiaLite几何类型的定义与使用 208
6.5.1 熟悉Geometry 208
6.5.2 几何要素 210
6.5.3 最小外包矩形(MBR)214
6.5.4 创建与更新数据表 214
6.5.5 Python中SQLite的事务操作 217
6.5.6 管理坐标参考与坐标转换 218
6.6 使用虚拟表链接其他格式数据执行SQL语句 221
6.6.1 在CSV与带分隔符的TXT文件上进行SQL查询 221
6.6.2 在Shapefile上执行SQL查询 223
6.7 SpatiaLite中空间关系比较与空间运算 225
6.7.1 评价MBR关系 226
6.7.2 评价几何对象之间的关系 228
6.7.3 几何对象之间空间运算 231
第7章 GIS制图:使用Mapnik进行地图制图 232
7.1 Mapnik地图制图基本概念与技术框架 233
7.1.1 Mapnik简介 233
7.1.2 地图制图的背景知识 233
7.1.3 Mapnik制图的工作流程 235
7.1.4 使用XML渲染地图 239
7.2 Mapnik制图的技术细节 240
7.2.1 地图和图层 240
7.2.2 地图及图层对象的属性和方法 242
7.2.3 地图晕渲与保存 244
7.2.4 渲染结果输出 246
7.2.5 Mapnik制图中的地图投影 247
7.3 数据的读取与设置 248
7.3.1 数据源 248
7.3.2 常用数据格式的读取 248
7.3.3 使用GDAL/OGR包进行数据的读取 249
7.3.4 使用文本数据源 250
7.4 绘制不同的要素 251
7.4.1 绘制栅格影像 251
7.4.2 绘制线 252
7.4.3 绘制多边形 257
7.4.4 绘制标注 259
7.4.5 绘制点状要素 264
7.5 数据显示的规则 267
7.5.1 数据显示的规则 267
7.5.2 按比例尺显示要素 270
第8章 使用Basemap进行地图可视化 272
8.1 Basemap简介与基本使用方法 272
8.1.1 简介 272
8.1.2 Basemap使用简介 273
8.1.3 设置地图投影 275
8.1.4 绘制地图背景 279
8.1.5 控制制图中的数据细节 282
8.2 在Basemap中添加Matplotlib绘制功能 284
8.2.1 使用annotate方法绘制标注 284
8.2.2 使用plot函数绘图 286
8.2.3 使用text方法绘制文本 288
8.2.4 混合使用plot方法与text方法 289
8.3 在Basemap中使用GIS数据 291
8.3.1 使用Shapefile 291
8.3.2 在Basemap中绘制DEM数据等高线 292
8.3.3 在Basemap中使用颜色对渲染DEM数据 294
8.4 USGS地震数据可视化实例 297
8.4.1 全球地震数据集读取 297
8.4.2 绘制地震数据集 298
第9章 Python下面其他开源GIS库使用 302
9.1 使用PyShp读写Shapefile 302
9.1.1 PyShp的介绍与安装 302
9.1.2 读取Shapefile 303
9.1.3 创建Shapefile 309
9.2 使用geojson库处理GeoJSON数据 313
9.2.1 geojson模块的安装 313
9.2.2 geojson中的几何对象