产品特色
编辑推荐
作者在遥感和GIS领域积累了丰富的研发和教学经验,本书的内容和代码示例将非常适合读者学习。通过详细的理论讲解,再结合丰富的代码示例,读者将能够细致地掌握使用Python进行地理任务的处理,同时参考代码示例的注释,了解每一段代码的真实含义。
内容简介
Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。作为ArcGIS的脚本语言,使用Python将大大提升地理数据处理的效率。
本书共13章,分别介绍了空间数据、Python基础、OGR库、矢量数据、过滤和选择数据、几何对象的操作细节、空间关系、空间参考系统、GDAL库、栅格数据、监督和非监督技术,以及Python的相关模块和库的使用。通过阅读本书,读者将详细了解Python语言在地理数据处理领域的具体应用。
本书讲解细致、示例丰富,适合任何想学习使用地理空间数据的读者阅读。地理空间分析领域的新读者也将从本书受益。
作者简介
Chris Garrard 是犹他州立大学的一名开发人员,她还教授一门使用Python 语言进行GIS编程的研究生课程。作者将其丰富的实践和教学经验融汇贯通于本书,为读者呈现了一本经典的实战类地理开发类的Python实战指南。
目录
第1章 引言 1
1.1 为什么使用Python和开源工具 2
1.2 空间数据的类型 3
1.3 地理数据处理 6
1.4 探究数据 8
1.5 小结 12
第2章 Python基础 13
2.1 编写和执行代码 14
2.2 一个脚本的基本结构 15
2.3 变量 16
2.4 数据类型 17
2.4.1 布尔型 18
2.4.2 数值型 18
2.4.3 字符串 19
2.4.4 列表和元组 21
2.4.5 集合 23
2.4.6 字典 24
2.5 控制流 24
2.5.1 if语句 25
2.5.2 while语句 26
2.5.3 for语句 26
2.5.4 break、continue和else 27
2.6 函数 29
2.7 类 30
2.8 小结 31
第3章 读写矢量数据 32
3.1 矢量数据介绍 32
3.2 OGR介绍 38
3.3 读取矢量数据 41
3.3.1 访问特定要素 44
3.3.2 查看数据 46
3.4 获取数据的元数据 48
3.5 矢量数据写入 51
3.5.1 创建新的数据源 55
3.5.2 新建属性字段 57
3.6 更新现有数据 58
3.6.1 改变图层定义 59
3.6.2 要素添加、更新和删除 60
3.7 小结 61
第4章 处理不同的矢量文件 63
4.1 矢量文件格式 63
4.1.1 基于文件的格式如shapefiles和GeoJSON 64
4.1.2 多用户数据库格式如PostGIS 66
4.2 处理更多的数据格式 67
4.2.1 SpatiaLite 67
4.2.2 PostGIS 69
4.2.3 文件夹作为数据源(shapefiles和CSV) 69
4.2.4 Esri文件地理数据库 70
4.2.5 网络要素服务 71
4.3 测试格式能力 79
4.4 小结 81
第5章 使用OGR过滤数据 83
5.1 属性过滤条件 84
5.2 空间过滤条件 87
5.3 使用SQL创建临时图层 91
5.4 充分利用过滤条件 95
5.5 小结 96
第6章 利用OGR处理几何要素 97
6.1 几何对象介绍 98
6.2 处理点集 99
6.2.1 创建和编辑单点 99
6.2.2 创建和编辑多点:多点作为一个几何类型 101
6.3 处理线要素 103
6.3.1 创建和编辑单条线 105
6.3.2 创建和编辑多线:多线作为一个几何类型 109
6.4 处理多边形 112
6.4.1 创建和编辑单多边形 113
6.4.2 创建和编辑multipolygons:复合多边形成为一个几何类型 115
6.4.3 编辑和创建带洞的多边形:甜甜圈 117
6.5 小结 120
第7章 使用GR进行矢量分析 121
7.1 叠加分析工具:什么在什么上面 122
7.2 邻近分析工具:要素之间有多远 128
7.3 实例:风力发电场选址 132
7.4 实例:动物跟踪数据 136
7.5 小结 144
第8章 使用空间参照系统参考系统 145
8.1 空间参考介绍 145
8.2 使用OSR空间参考 150
8.2.1 空间参考对象 150
8.2.2 创建控件参考对象 153
8.2.3 为数据分配SRS 155
8.2.4 几何对象重投影 155
8.2.5 重投影整个图层 159
8.3 使用pyproj空间参考 159
8.3.1 在不同空间参考系统中转换坐标 160
8.3.2 计算大圆距离 162
8.4 小结 163
第9章 读写栅格数据 164
9.1 栅格数据介绍 165
9.2 GDAL介绍 170
9.3 读取部分数据集 176
9.3.1 使用现实世界的坐标 181
9.3.2 数据重采样 185
9.4 字节序列 188
9.5 子数据集 191
9.6 网络地图服务 192
9.7 小结 195
第10章 处理栅格数据 196
10.1 地面控制点 197
10.2 将像素坐标转换为另一图像 200
10.3 颜色表 203
10.4 直方图 205
10.5 属性表 208
10.6 虚拟栅格格式 210
10.6.1 影像裁剪 212
10.6.2 创建问题格式 214
10.6.3 影像重投影 215
10.7 回调函数 216
10.8 异常和错误处理程序 219
10.9 小结 222
第11章 使用NumPy和SciPy做地图运算 223
11.1 NumPy介绍 224
11.2 地图代数 227
11.2.1 局部分析 228
11.2.2 焦点分析 232
11.2.3 区域分析 243
11.2.4 全局分析 247
11.3 数据重采样 252
11.4 小结 259
第12章 地图分类 260
12.1 非监督分类 261
12.2 监督分类 263
12.3 小结 269
第13章 数据可视化 270
13.1 Matplotlib 270
13.1.1 绘制矢量数据 271
13.1.2 绘制栅格数据 282
13.1.3 绘制三维数据 287
13.2 Mapnik 289
13.2.1 绘制矢量数据 290
13.2.2 使用XML存储信息 295
13.2.3 绘制栅格数据 297
13.3 小结 300
附录A 安装 301
附录B 参考文献 308
精彩书摘
《Python地理数据处理》:
有两个主要版本的Python2.x和Python3.x,它们之间有一些显著差异,所以不可完全互换。然而,很多代码都可在这两个版本上运行,所以我在写《Python地理数据处理》实例代码时就做了特殊处理,以便它们能在其中任一个版本中使用。2.x分支的最新版本是2.7,这个分支中没有更多的主要版本。3.x分支正在积极开发,如果没有特定的版本要求,建议选择稳定的2.7版本,因为如Python网站所说,它是“语言的现在和未来”。但如果需要使用未更新到Python 3.x版本的第三方模块,则可能会强制使用较旧版本的Python。
例如,我同时使用Python 2.7和3.3,但在工作中通常是2.7,因为ArcGIS软件在大学里广泛使用,它需要Python 2.7。因为我的同事和学生几乎总是安装ArcGIS,即使他们没有意识到,但他们也已经有了Python 2.7。帮助他们安装开源工具,以使用他们已经有的Python版本,这是有意义的。这样,如果我想在同一个脚本中利用GDAL和ArcGIS,就可以使用并教给他们这样做。
……
《Python地理数据处理》 探索与洞察:解锁地理数据的无限可能 在这个信息爆炸的时代,地理数据正以前所未有的速度增长,它们承载着关于我们所处世界的宝贵信息,从气候变化到城市规划,从自然资源管理到社会经济发展,无不与地理空间紧密相连。然而,海量的地理数据往往杂乱无章,其潜在的价值如同沉睡的巨人,亟待唤醒。本书《Python地理数据处理》便是你手中的钥匙,它将引导你掌握一套强大而灵活的工具——Python语言及其丰富的地理空间库,让你能够深入理解、高效处理、可视化呈现并从中挖掘出富有洞察力的结论。 本书并非简单罗列枯燥的代码,而是致力于搭建一座连接现实世界问题与数据解决方案的桥梁。我们相信,任何一项技术,最终的目的都是为了解决实际问题,创造实际价值。因此,本书在讲解Python地理数据处理的核心概念与技术的同时,始终围绕着如何运用这些技术来分析和理解我们周围的世界展开。你将学会如何从各种来源获取地理数据,包括但不限于矢量数据(如点、线、面)、栅格数据(如遥感影像、高程模型)、网络数据(如道路、河流)以及各种传感器数据。你将深入理解不同地理数据格式的特性,例如Shapefile、GeoJSON、NetCDF、GeoTIFF等,并掌握在Python环境中高效读写这些数据的技巧。 本书将循序渐进地引导你掌握Python在地理空间分析领域的核心能力。我们将从基础的坐标系统转换、投影变换入手,这是理解和处理地理数据的第一步,也是至关重要的一步。你将学习如何准确地对不同坐标系下的数据进行统一,避免因投影误差而导致的分析失真。接着,我们将深入到矢量空间分析的范畴,例如空间查询(查找特定区域内或特定距离内的要素)、空间叠置(例如缓冲区分析、叠加分析、裁剪分析),以及网络分析(例如最短路径、服务区域分析)。这些操作将帮助你回答诸如“某个区域有多少个加油站?”“从A点到B点最快的路线是什么?”“哪些区域受到洪水影响?”等一系列实际问题。 对于栅格数据的处理,本书也将为你提供全面的指导。你将学习如何进行栅格数据的读取、编辑、重采样、重投影,以及运用诸如地形分析(坡度、坡向、汇流分析)、影像分类、植被指数计算等方法,从遥感影像中提取有价值的信息。例如,你将能够分析土地覆盖变化,监测作物生长状况,评估城市热岛效应,或者识别潜在的自然灾害风险区。 更重要的是,本书将引导你掌握地理数据可视化的艺术。数据可视化是传播分析结果、揭示数据模式、引发直观理解的强大手段。你将学习如何使用Python强大的绘图库,如Matplotlib、Seaborn,并结合专门的地理空间绘图库,如GeoPandas、Folium、Plotly,创建出精美、信息丰富且交互性强的地理地图。从静态的区域分布图,到动态的要素轨迹展示,再到交互式的Web地图应用,你将能够以最直观、最吸引人的方式呈现你的分析成果,让非专业人士也能轻松理解地理数据的价值。 除了核心的数据处理和分析技术,本书还将触及地理信息系统(GIS)的一些关键概念,让你理解Python在现代GIS工作流程中的地位和作用。我们将介绍如何利用Python脚本自动化重复性的GIS任务,如何与其他GIS软件(如QGIS、ArcGIS)进行集成,以及如何利用Python构建自定义的地理空间分析工具。 本书的学习过程将以丰富的实际案例贯穿始终。你将有机会亲手实践如何分析人口密度分布来优化城市资源配置;如何运用遥感数据监测森林砍伐情况,为环境保护提供科学依据;如何通过分析交通网络数据来改善城市交通拥堵;如何结合历史气象数据和地理信息来预测未来气候变化的潜在影响。这些案例不仅仅是为了演示技术,更是为了激发你的思考,让你看到地理数据在解决现实世界挑战中的巨大潜力,并鼓励你将所学知识应用于自己感兴趣的领域。 本书的目标读者是所有对地理数据感兴趣,并希望利用Python来深入探索其奥秘的开发者、数据科学家、GIS从业者、研究人员以及任何希望提升地理空间分析能力的人。无论你是一名刚刚接触地理信息学的初学者,还是已经具备一定GIS基础但希望拥抱Python强大的编程能力,亦或是希望将Python技能拓展到地理数据领域的开发者,本书都将为你提供一条清晰的学习路径。 掌握Python地理数据处理,意味着你将拥有解读地球语言的能力。你将能够从看似杂乱的地理信息中发现隐藏的规律,识别潜在的风险,预测未来的趋势,并为更明智的决策提供坚实的数据支持。你将不再是被动接收地理信息,而是能够主动地操纵、分析和创造地理信息的生产者。 本书的编写风格力求清晰、简洁、易于理解。我们将在介绍理论知识的同时,提供充足的代码示例,并对代码进行详细的解释,确保你能理解每一行代码的含义及其背后的逻辑。我们鼓励你在学习过程中积极动手实践,不断尝试和探索,将理论知识转化为实际能力。 在这个日益互联互通的世界,地理信息无处不在,其重要性也日益凸显。掌握Python地理数据处理,将为你开启一个全新的视角,让你能够更深刻地理解我们所生活的这个星球,并有机会为解决它面临的挑战贡献自己的力量。准备好踏上这段激动人心的探索之旅了吗?让我们一起用Python解锁地理数据的无限可能。