本书深入探讨了Python编程在地理信息系统(GIS)和遥感(RS)领域的应用,重点关注空间数据处理的核心技术。本书内容分为三个层次:初级篇介绍Python科学计算基础及GDAL空间数据处理基础;进阶篇深入剖析GDAL空间数据处理细节及常见空间数据处理相关库的使用;高级篇涵盖QGIS二次开发、遥感定量反演、地物分类以及机器学习在遥感中的应用。通过系统学习,读者将构建完整的空间数据处理知识体系,显著提升科研创新能力和工程实践水平。 本书适合地理环境、测绘遥感及相关领域的本科生、研究生及从业人员使用,特别是希望掌握Python空间数据处理技能的读者。本书内容基于开源软件,支持多种操作系统和平台,便于读者深入学习。除了理论讲解,本书还通过丰富的案例帮助读者积累解决实际问题的经验,提升其实践能力。在空间信息产业向智能化转型的背景下,本书将为读者提供关键的技术储备,助力其在科研创新和行业应用中建立竞争优势。
谭振宇,西北大学副教授,2023年获地理信息科技进步奖一等奖。
第一部分初级篇1
第1 章Python 语言入门3
1.1 Python 语言概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 基本数据类型及运算符. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 字符串及输入输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 序列与字典. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 流程控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6 函数与模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.7 文件操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.8 面向对象编程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.9 函数式编程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.10 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.11 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
第2 章Python 科学计算47
2.1 多维数组. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 二维表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.3 Matplotlib 绘图库. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.4 SciPy 科学计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.5 Scikit-learn 机器学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
2.6 Scikit-image 图像处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.7 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
2.8 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
第3 章GIS 与空间数据基础95
3.1 地理信息系统. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.2 遥感技术. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.3 空间数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.4 空间参考. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.5 地图投影. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.6 空间数据库. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.7 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.8 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
第4 章GDAL 入门基础113
4.1 GDAL 简介及安装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.2 空间矢量数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.3 空间栅格数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.4 GDAL 命令行工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.5 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4.6 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
第二部分进阶篇145
第5 章矢量数据处理进阶147
5.1 数据生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.2 属性操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.3 空间查询. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.4 常用处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.5 空间分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.6 空间数据库. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.7 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.8 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
第6 章栅格数据处理进阶177
6.1 波段叠加. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
6.2 影像拼接. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
6.3 影像裁剪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6.4 波段运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6.5 投影转换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6.6 格式转换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6.7 栅格数据插值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
6.8 栅格数据与多维数组. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
6.9 基于NumPy 的栅格计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
6.10 再谈拼接、裁剪和重投影. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
6.11 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
6.12 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
第7 章其他开源库的使用195
7.1 Fiona 矢量数据处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.2 Rasterio 栅格数据处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
7.3 GeoPandas 矢量数据处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
7.4 空间多维数据处理工具包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
7.5 CartoPy 地图绘制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
7.6 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
7.7 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
第三部分高级篇217
第8 章GIS 系统二次开发219
8.1 PyQGIS 入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
8.2 Qt GUI 入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.3 基于QGIS 的二次开发. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.4 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
8.5 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
第9 章遥感影像处理与应用243
9.1 遥感影像反演―经验模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
9.2 遥感影像反演―机器学习模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.3 遥感影像分类―非监督学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
9.4 遥感影像分类―监督学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
9.5 本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.6 牛刀小试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
附录A Python 开发环境与调试259
A.1 几个重要概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
A.2 Python 开发环境搭建. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
A.3 程序调试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
A.4 Python 代码规范. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .