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