编辑推荐
用非常流行的Python语言做地理空间分析;学习高效、易学的地理空间分析指南;书中含有典型且非常实用的开发案例,帮助读者快速掌握相关技能;图文结合,将学习效率大大提高。
内容简介
Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。本书以地理空间分析为背景,介绍了Python在地理信息处理方面的应用技巧。全书共分为10章,分别介绍了Python与地理空间分析、地理空间数据、地理空间技术、Python的地理空间分析工具、Python与地理信息系统、Python与遥感、Python与高程数据、Python与地理空间高级建模、实时数据、综合应用等内容。本书内容结构清晰,示例完整,适合希望了解测绘数字化和分析的读者,也适合想使用Python进行空间地理分析、建模和GIS分析的开发人员及研究人员参考阅读。
作者简介
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)的主要开发人员。他的技术博客是http://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与地理空间分析 1
- 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 ZUI佳路径分析 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