Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。
本书以地理空间分析为背景,介绍了Python在地理信息处理方面的应用技巧。全书共分为10章,分别介绍了Python与地理空间分析、地理空间数据、地理空间技术、Python的地理空间分析工具、Python与地理信息系统、Python与遥感、Python与高程数据、Python与地理空间高级建模、实时数据、综合应用等内容。
本书内容结构清晰,示例完整,适合希望了解测绘数字化和分析的读者,也适合想使用Python进行空间地理分析、建模和GIS分析的开发人员及研究人员参考阅读。
用非常流行的Python语言做地理空间分析;
学习高效、易学的地理空间分析指南;
书中含有典型且非常实用的开发案例,帮助读者快速掌握相关技能;
图文结合,将学习效率大大提高。
Joel Lawhead 目前是NVision公司的CIO,该公司是业内屡获殊荣的地理信息集成和传感工程服务提供商。他还获得了管理专业人员资格认证(Project Management Professional,PMP),地理信息专业资格认证(certified GIS Professional ,GISP)。
Joel于1997年开始使用Python,从2000年开始使用它进行地理空间软件的开发,也是Learning Geospatial Analysis with Python(第1版)和QGIS Python Programming Cookbook的作者,并且这两本书都是Packt出版的。他撰写的Python Cookbook系列图书由O'Reilly Media出版,其不同版本更是各具特色。除此之外,他还是广受赞誉的开源软件PyShp(Python Shapefile Library)的主要开发人员。他的技术博客是geospatialpython.com/,Twitter昵称是@SpatialPython,通过上述方式,用户可以和他讨论地理空间分析中与Python编程相关的话题。
2011年,Joel通过逆向工程处理了Shapefile文件的空间索引格式,帮助地理空间Python工程师Marc Pfister实现了上述索引算法,这一做法有利于世界各地的开发者开发出更易于集成、更健壮的地理空间应用。
Joel作为架构师、项目经理和地理空间应用合作开发者,多次为美国政府机构提供服务,其中包括NASA、FEMA、NOAA、美国海军,以及其他商业和非营利性机构。2002年,由于其领导开发的实时应急响应协作工具(the Real-Time Emergency Action Coordination Tool,REACT)表现杰出,他获得了Esri公司颁发的国际GIS特别成就奖。该软件的主要用途是使用地理空间分析技术进行应急管理。
第1章 Python与地理空间分析t1
1.1 地理空间分析与我们的生活 1
1.2 地理空间分析的历史 3
1.3 地理信息系统 6
1.4 遥感 7
1.5 高程数据 12
1.6 计算机辅助制图 13
1.7 地理空间分析和计算机编程 14
1.8 地理空间分析的重要性 15
1.9 地理信息系统基本概念 16
1.9.1 专题地图 16
1.9.2 空间数据库 17
1.9.3 空间索引 17
1.9.4 元数据 17
1.9.5 地图投影 18
1.9.6 渲染 19
1.9.7 影像数据 20
1.9.8 遥感和颜色 20
1.10 GIS中矢量数据的基本概念 21
1.10.1 数据结构 21
1.10.2 缓冲区 22
1.10.3 融合 22
1.10.4 简化 23
1.10.5 叠置 24
1.10.6 合并 24
1.10.7 点包容性 25
1.10.8 联合 25
1.10.9 连接 26
1.10.10 地理空间中的多边形
规则 26
1.11 栅格数据的基本概念 27
1.11.1 波段运算 27
1.11.2 变化监测 27
1.11.3 柱状图 28
1.11.4 特征提取 28
1.11.5 监督分类 29
1.11.6 非监督分类 29
1.12 牛刀小试 29
1.12.1 Python简介 30
1.12.2 构建SimpleGIS 31
1.13 小结 38
第2章 地理空间数据 39
2.1 数据格式概览 39
2.2 数据结构 41
2.3 空间索引 42
2.3.1 索引算法 43
2.3.2 网格 44
2.4 概要化 45
2.5 元数据 46
2.6 文件结构 46
2.7 矢量数据 48
2.7.1 Shapefile文件 48
2.7.2 CAD文件 51
2.7.3 标签和标记格式 51
2.7.4 GeoJSON 53
2.8 影像数据 54
2.8.1 TIFF文件 55
2.8.2 JPEG、GIF、BMP和
PNG文件 56
2.8.3 压缩格式 56
2.8.4 ASCII网格 56
2.8.5 全球文件 57
2.9 点云数据 59
2.10 Web服务 61
2.11 小结 62
第3章 地理空间技术概览 63
3.1 数据访问 65
3.1.1 GDAL 65
3.1.2 OGR 67
3.2 计算几何 68
3.2.1 PROJ.4投影库 68
3.2.2 CGAL 69
3.2.3 JTS 71
3.2.4 GEOS 72
3.2.5 PostGIS 73
3.2.6 其他支持空间分析的
数据库 76
3.2.7 SpatiaLite 80
3.2.8 路径分析 80
3.3 桌面工具(包括可视化) 82
3.3.1 Quantum GIS 82
3.3.2 OpenEV 83
3.3.3 GRASS GIS 84
3.3.4 uDig 85
3.3.5 gvSIG 86
3.3.6 OpenJUMP 87
3.3.7 谷歌地球 87
3.3.8 NASA World Wind 89
3.3.9 ArcGIS 91
3.4 元数据管理 92
3.4.1 GeoNetwork 92
3.4.2 CatMDEdit 92
3.5 小结 93
第4章 Python的地理空间分析工具 95
4.1 安装Python的第三方模块 96
4.2 Python的网络库 100
4.2.1 Python的urllib模块 101
4.2.2 FTP 103
4.2.3 ZIP和TAR文件 104
4.3 Python的标记、标签解析器 107
4.3.1 minidom模块 107
4.3.2 元素树 109
4.3.3 WKT文本 115
4.4 Python的JSON库 117
4.4.1 json模块 118
4.4.2 geojson模块 119
4.5 OGR 119
4.6 PyShp 120
4.7 dbfpy3 121
4.8 Shapely 122
4.9 Fiona 123
4.10 GDAL 125
4.11 NumPy 125
4.12 PIL 127
4.13 PNGCanvas 129
4.14 GeoPandas 130
4.15 PyMySQL 132
4.16 PyFPDF 133
4.17 Spectral Python 134
4.18 小结 134
第5章 Python与地理信息系统 135
5.1 距离测量 135
5.1.1 勾股定理 138
5.1.2 半正矢公式 140
5.1.3 Vincenty公式 141
5.2 方位计算 144
5.3 坐标转换 144
5.4 重投影 146
5.5 Shapefile文件编辑 148
5.5.1 Shapefile文件访问 150
5.5.2 Shapefile文件属性读取 151
5.5.3 Shapefile文件几何
图形读取 154
5.5.4 Shapefile文件修改 155
5.5.5 Shapefile文件合并 157
5.5.6 Shapefile文件分割 160
5.6 查询优化 161
5.6.1 点包容性公式 161
5.6.2 边框查询 163
5.7 空间信息可视化 166
5.7.1 点密度计算 166
5.7.2 等值区域图 169
5.8 使用电子表格 171
5.9 使用GPS数据 173
5.10 地理化编码 174
5.11 小结 176
第6章 Python与遥感 177
6.1 图像波段变换 178
6.2 创建直方图 180
6.3 图像剪裁 187
6.4 图像分类 191
6.5 图像特征提取 195
6.6 变化监测 200
6.7 小结 205
第7章 Python与高程数据 206
7.1 ASCII网格文件 206
7.1.1 读取grids 207
7.1.2 写入grids 208
7.2 创建地形阴影 210
7.3 创建等高线 215
7.4 使用LIDAR 219
7.4.1 使用LIDAR创建网格 220
7.4.2 使用PIL让LIDAR支
持可视化 226
7.4.3 创建不规则三角
网络(TIN) 230
7.5 小结 234
第8章 Python与地理空间高级建模 235
8.1 归一化植被指数(NDVI)应用 235
8.1.1 建立框架 237
8.1.2 载入数据 239
8.1.3 栅格化Shapefile文件 239
8.1.4 波段剪裁 241
8.1.5 使用NDVI公式 241
8.1.6 NDVI分类 243
8.2 创建洪水淹没模型 246
8.2.1 洪水填充功能 248
8.2.2 创建洪水 250
8.3 创建彩色晕渲地形 253
8.4 路径分析 255
8.4.1 建立测试网格 256
8.4.2 A算法简介 257
8.4.3 生成测试路径 258
8.4.4 查看测试结果 259
8.4.5 实际应用 260
8.5 街道路网规划 267
8.6 照片地理定位 271
8.7 小结 273
第9章 实时数据 274
9.1 实时路况监测 275
9.1.1 NextBus列表 276
9.1.2 NextBus路径列表 277
9.1.3 NextBus设备地址 277
9.1.4 NextBus地址映射 279
9.2 气象跟踪 283
9.3 区域报告 291
9.4 小结 292
第10章 综合应用 294
10.1 GPS报告示例 294
10.2 使用GPX-Reporter.py 295
10.3 程序概要 296
10.4 初始化 297
10.5 功能函数调用 298
10.6 解析GPX 302
10.7 获取边框 303
10.8 下载地图和高程影像 304
10.9 创建地形 306
10.10 创建地图 307
10.11 高程测量 310
10.12 距离测量 311
10.13 获取气象数据 313
10.14 小结 317