産品特色
編輯推薦
作者在遙感和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解鎖地理數據的無限可能。