《PostGIS實戰(第3版)》是一本清華大學出版社出版的圖書,作者是(美)里賈納 • 奧伯(Regina Obe) 、(美)利歐 • 許 (Leo Hsu),譯者是王亮、杜朋、波譯。
基本介紹
- 中文名:《PostGIS實戰(第3版)》
- 作者:(美)里賈納 • 奧伯(Regina Obe)
- 譯者:(美)利歐 • 許 (Leo Hsu)
- 出版時間:2023年5月
- 出版社:清華大學出版社
- 頁數:500 頁
- ISBN:9787302632863
- 定價:159 元
內容簡介,圖書目錄,作者簡介,
內容簡介
PostGIS是PostgreSQL的空間資料庫擴展。它可以為要處理的幾乎任何地理數據任務提供特性和支持。通過使用PostGIS,用戶只需要編寫幾行SQL代碼就能夠創建位置感知查詢,並輕鬆構建製圖、柵格分析或路由應用程式的後端。
《PostGIS實戰(第3版)》展示了如何解決現實世界的地理數據問題。你將超越基本的製圖,探索應用程式的自定義函式。這個最新版本引入了新的PostGIS特性,如PostGIS視窗函式、並行查詢,以及使用JSON和矢量切片函式為應用程式輸出數據。
●針對PostGIS 3.1和PostgreSQL 13進行了修訂
●最佳化查詢以獲得最大速度
●簡化幾何圖形以提高效率
●將PostGIS擴展到網路和桌面應用程式
《PostGIS實戰(第3版)》是一本很好的、介紹PostGIS的書, 作者Regina是PostGIS核心開發團隊和項目指導委員會的成員,擁有豐富的實踐經驗。本書的主要特點是示例豐富,讓讀者在例子中不斷嘗試並探索,從而掌握相關的知識。此外,本書內容較為全面,讀者可以根據自己的需要選擇特定章節進行學習。
本書由三部分組成:
第I部分介紹空間關係資料庫的基本概念,特別是PostGIS 與PostgreSQL。通過這部分的學習,你可以了解幾何、地理、柵格和拓撲等類型的基本概念,掌握每種類型可以解決的問題,並對空間參考系統和資料庫存儲選項有-一個基本的理解。最重要的是,學完本部分的內容後,你將掌握如何載入、查詢和查看啟用PostGIS的PostgreSQI資料庫中的空間數據。
第II部分的重點是使用PostGIS解決實際的空間問題,例如使用幾何和地理類型進行鄰近度分析,使用矢量運算最佳化數據,使用柵格處理和地圖代數計算統計信息,以及使用拓撲保證編輯的一致性,等等。
第III部分介紹一些常見的用於補充和增強PostGIS的開源伺服器端工具,如過程化語言PLR、PL/Python和PL/V8,以及創建網路路由應用程式的工具pgRouting,還介紹PostGIS在Web應用程式中的套用。
圖書目錄
第Ⅰ部分 PostGIS簡介
第1章 什麼是空間資料庫 3
1.1 空間思維 3
1.2 初步了解PostGIS 5
1.2.1 為什麼選擇PostGIS 6
1.2.2 適用標準 6
1.2.3 強大的PostGIS 7
1.2.4 建立在PostgreSQL之上 8
1.2.5 金錢上免費 8
1.2.6 使用上自由 8
1.2.7 PostGIS的替代選擇 9
1.3 安裝PostGIS 11
1.4 空間數據類型 13
1.4.1 幾何類型 14
1.4.2 地理類型 14
1.4.3 柵格類型 15
1.4.4 拓撲類型 15
1.5 你好,真實世界 16
1.5.1 理解問題 16
1.5.2 建模 17
1.5.3 載入數據 19
1.5.4 編寫查詢代碼 21
1.5.5 使用OpenJUMP查看空間數據 21
1.6 本章小結 23
第2章 空間數據類型 25
2.1 類型修飾符 26
2.1.1 子類型修飾符 26
2.1.2 空間參考標識符 27
2.2 幾何 27
2.2.1 點 28
2.2.2 線串 29
2.2.3 多邊形 30
2.2.4 幾何圖形集合 33
2.2.5 M坐標 37
2.2.6 Z坐標 38
2.2.7 多面體表面和TIN 40
2.2.8 生成TIN 41
2.2.9 曲線幾何圖形 42
2.2.10 幾何圖形的空間目錄 46
2.3 地理 49
2.3.1 geography和geometry的區別 49
2.3.2 geography空間目錄 51
2.4 柵格 51
2.4.1 柵格的屬性 51
2.4.2 創建柵格 53
2.4.3 柵格空間目錄 54
2.5 本章小結 55
第3章 空間參考系統 57
3.1 空間參考系統是什麼 57
3.1.1 大地水準面 58
3.1.2 橢球體 59
3.1.3 基準 61
3.1.4 坐標參考系統 61
3.1.5 空間參考系統要素 62
3.1.6 投影 62
3.2 選擇存儲數據的空間參考系統 64
3.2.1 使用EPSG:4326的利弊 65
3.2.2 EPSG:4326地理數據類型 66
3.2.3 僅用於演示的地圖 66
3.2.4 在涉及距離時覆蓋全球 69
3.3 確定源數據的空間參考系統 72
3.3.1 推測空間參考系統 72
3.3.2 當spatial_ref_sys表中缺少SRS時 76
3.4 PostGIS中PROJ支持的歷史 76
3.4.1 PROJ 4 77
3.4.2 PROJ 5 77
3.4.3 PROJ 6 77
3.4.4 PROJ 7 78
3.4.5 PROJ 8和更高版本 78
3.5 本章小結 78
第4章 處理真實數據 81
4.1 PostgreSQL內置工具 82
4.1.1 psql 82
4.1.2 pgAdmin 4 83
4.1.3 pg_dump和pg_restore 84
4.2 下載檔案 84
4.3 提取檔案 85
4.4 導入和導出形狀檔案 86
4.4.1 使用shp2pgsql導入 86
4.4.2 使用shp2pgsql-gui導入和導出 88
4.4.3 使用pgsql2shp導出 90
4.5 使用ogr2ogr導入和導出矢量數據 91
4.5.1 ogr2ogr的環境變數 92
4.5.2 ogrinfo 92
4.5.3 使用ogr2ogr導入 92
4.5.4 使用ogr2ogr導出 96
4.6 使用PostgreSQL外部數據封裝器查詢外部數據 99
4.6.1 file_fdw外部數據封裝器 100
4.6.2 ogr_fdw外部數據封裝器 102
4.6.3 將hstore標記轉換為jsonb 106
4.7 使用raster2pgsql導入柵格數據 107
4.7.1 raster2pgsql命令行開關 107
4.7.2 raster2pgsql支持的格式 108
4.7.3 使用raster2pgsql載入單個檔案 109
4.7.4 在shell腳本中載入多個檔案並進行切片 109
4.7.5 使用PostgreSQL函式輸出柵格數據 110
4.8 使用GDAL導出柵格數據 111
4.8.1 使用gdalinfo檢查柵格 112
4.8.2 gdal_translate和gdalwarp 113
4.9 本章小結 115
第5章 在桌面上使用PostGIS 117
5.1 桌面查看工具一瞥 117
5.1.1 OpenJUMP簡介 118
5.1.2 QGIS簡介 118
5.1.3 gvSIG簡介 119
5.1.4 Jupyter記事本和JupyterLab簡介 119
5.1.5 空間資料庫支持 120
5.1.6 格式支持 121
5.1.7 支持的Web服務 122
5.2 OpenJUMP 123
5.2.1 OpenJUMP特性總結 123
5.2.2 安裝OpenJUMP 123
5.2.3 易用性 124
5.2.4 OpenJUMP外掛程式 124
5.2.5 OpenJUMP腳本 124
5.2.6 OpenJUMP格式支持 124
5.2.7 PostGIS支持 124
5.2.8 註冊數據源 125
5.2.9 渲染PostGIS幾何圖形 126
5.2.10 導出數據 128
5.3 QGIS 128
5.3.1 安裝QGIS 129
5.3.2 將QGIS與PostGIS結合起來使用 129
5.4 gvSIG 134
5.4.1 gvSIG與PostGIS搭配使用 135
5.4.2 導出數據 137
5.5 JupyterLab和Jupyter記事本 137
5.5.1 安裝Jupyter 138
5.5.2 啟動Jupyter記事本 139
5.5.3 啟動JupyterLab 139
5.5.4 創建Python記事本檔案 140
5.5.5 魔術命令 140
5.5.6 使用Jupyter記事本執行原始查詢 141
5.5.7 使用GeoPandas、Shapely和Matplotlib處理空間數據 142
5.5.8 使用folium查看地圖上的數據 145
5.6 本章小結 147
第6章 幾何和地理函式 149
6.1 輸出函式 150
6.1.1 WKT和WKB 150
6.1.2 Keyhole標記語言 150
6.1.3 地理標記語言 151
6.1.4 幾何JavaScript對象表示法 151
6.1.5 可縮放矢量圖形 151
6.1.6 Mapbox矢量切片和協定緩衝區 152
6.1.7 Tiny WKB 153
6.1.8 可擴展3D圖形 153
6.1.9 輸出函式示例 153
6.1.10 Geohash 154
6.2 構造函式 155
6.2.1 使用文本和二進制格式創建幾何圖形 155
6.2.2 使用文本和二進制格式創建地理圖形 158
6.2.3 將文本或二進制表示用作函式參數 159
6.3 訪問器和設定器函式 159
6.3.1 空間參考標識符 160
6.3.2 將幾何圖形轉換為不同的空間參考 160
6.3.3 使用地理類型的轉換 161
6.3.4 幾何類型函式 162
6.3.5 幾何維度和坐標維度 163
6.3.6 檢索坐標 164
6.3.7 檢查幾何有效性 164
6.3.8 定義幾何圖形的點數 164
6.4 測量函式 166
6.4.1 幾何平面測量 166
6.4.2 大地測量 167
6.5 分解函式 168
6.5.1 幾何圖形的邊界框 168
6.5.2 生成邊界和將多邊形轉換為線串 170
6.5.3 形心、中間點和表面上的點 171
6.5.4 返回定義幾何圖形的點 173
6.5.5 分解多個幾何圖形和幾何圖形集合 173
6.6 合成函式 175
6.6.1 合成點 175
6.6.2 合成多邊形 176
6.6.3 將單個幾何圖形提升為幾何圖形集合 177
6.7 簡化函式 178
6.7.1 柵格捕捉和坐標捨入 178
6.7.2 簡化函式 178
6.8 本章小結 180
第7章 柵格函式 181
7.1 柵格術語 182
7.2 柵格構造函式 183
7.2.1 使用ST_AsRaster將幾何圖形轉換為柵格 184
7.2.2 使用raster2pgsql載入柵格 186
7.2.3 從頭開始構建柵格:
ST_MakeEmptyRaster和
ST_AddBand 187
7.2.4 設定像素:ST_SetValue和ST_SetValues 187
7.2.5 利用其他柵格創建柵格 189
7.2.6 使用ST_FromGDALRaster轉換其他柵格格式 191
7.3 柵格輸出函式 191
7.3.1 ST_AsPNG、ST_AsJPEG和ST_AsTiff 191
7.3.2 使用ST_AsGDALRaster進行輸出 192
7.3.3 使用psql導出柵格 194
7.4 柵格訪問器和設定器 196
7.4.1 基本柵格元數據屬性 196
7.4.2 像素統計 197
7.4.3 像素值訪問器 198
7.4.4 波段元數據設定器 200
7.5 地理配準函式 200
7.5.1 元數據設定器 201
7.5.2 處理函式 202
7.6 重分類函式 204
7.7 多邊形化函式 205
7.7.1 ST_ConvexHull 205
7.7.2 ST_Envelope 205
7.7.3 ST_Polygon 205
7.7.4 ST_MinConvexHull 206
7.8 本章小結 206
第8章 空間關係 207
8.1 邊界框和幾何比較器 208
8.1.1 邊界框 208
8.1.2 邊界框比較器 209
8.2 兩個幾何圖形的關係 210
8.2.1 幾何圖形的內部、外部和邊界 210
8.2.2 相交 211
8.2.3 房屋平面圖模型 215
8.2.4 包含和內部 216
8.2.5 覆蓋和被覆蓋 218
8.2.6 完全包含 218
8.2.7 幾何圖形重疊 219
8.2.8 接觸幾何圖形 220
8.2.9 相等的不同方面:幾何 222
8.2.10 關係函式的基礎 224
8.3 本章小結 227
第Ⅱ部分 將PostGIS投入工作
第9章 鄰近度分析 231
9.1 最近鄰搜尋 232
9.1.1 哪些位置在X距離之內 232
9.1.2 對N個最接近的結果使用ST_DWithin和ST_Distance函式 232
9.1.3 使用ST_DWithin函式和DISTINCT ON查找最近的位置 232
9.1.4 與公差相交 233
9.1.5 距離之間的條目 234
9.1.6 使用KNN距離運算符查找N個最近的位置 234
9.2 將KNN用於地理類型 237
9.3 地理標記 239
9.3.1 特定區域的標記數據 240
9.3.2 線性參照:線串的最近捕捉點 240
9.3.3 PostGIS聚類視窗函式 242
9.4 本章小結 244
第10章 PostGIS TIGER 地理編碼 245
10.1 安裝PostGIS TIGER地理編碼器 246
10.2 載入TIGER數據 246
10.2.1 配置表 247
10.2.2 載入國家/地區和州數據 248
10.3 標準化地址 250
10.3.1 使用normalize_address 250
10.3.2 使用PAGC地址標準化程式 252
10.4 地理編碼 254
10.4.1 使用地址文本進行地理編碼 254
10.4.2 使用標準化地址進行地理編碼 256
10.4.3 地理編碼交集 256
10.4.4 批處理地理編碼 257
10.5 反向地理編碼 259
10.6 本章小結 260
第11章 幾何與地理處理 261
11.1 利用空間聚合函式 261
11.1.1 利用多個多邊形集合記錄創建一個多邊形集合 261
11.1.2 將點連為線串 265
11.2 裁剪、拆分和嵌格 267
11.2.1 裁剪 267
11.2.2 拆分 268
11.2.3 嵌格 269
11.3 將線串分段 277
11.3.1 拆分線串 277
11.3.2 用多點線串創建兩點線串 278
11.3.3 在點連線處切斷線串 279
11.4 平移、縮放、旋轉幾何圖形 282
11.4.1 平移 282
11.4.2 縮放 283
11.4.3 旋轉 284
11.5 利用幾何函式操作和創建地理數據 285
11.5.1 cast-safe函式 286
11.5.2 transformation-recommended函式 286
11.6 本章小結 287
第12章 柵格處理 289
12.1 載入和準備柵格數據 289
12.2 利用空間聚合函式形成更大的柵格 291
12.2.1 重組切片檔案 291
12.2.2 利用裁剪和合併分割出感興趣的區域 292
12.2.3 使用ST_Union的特定表達式類型 292
12.3 與波段有關的處理 293
12.3.1 利用ST_AddBand將單波段柵格合併成多波段柵格 293
12.3.2 利用ST_Band處理波段的子集 294
12.4 生成柵格切片 294
12.5 柵格和幾何圖形的交集 296
12.5.1 像素統計 298
12.5.2 利用ST_Value函式和ST_SetZ
函式向二維線串添加Z坐標 298
12.5.3 將二維多邊形轉化為三維多面體 300
12.6 柵格統計 301
12.6.1 提取像素值 302
12.6.2 柵格統計函式 304
12.7 地圖代數 306
12.7.1 在表達式和回調函式之間做選擇 306
12.7.2 使用一個單波段地圖代數表達式 307
12.7.3 使用一個單波段地圖代數函式 308
12.7.4 鄰域地圖代數 309
12.8 本章小結 311
第13章 構建和使用拓撲 313
13.1 什麼是拓撲 314
13.2 使用拓撲 314
13.2.1 安裝拓撲擴展 315
13.2.2 創建拓撲 315
13.2.3 拓撲幾何圖形類型 320
13.2.4 對拓撲用法的簡要回顧 323
13.3 維多利亞市的拓撲 323
13.3.1 創建維多利亞的拓撲 323
13.3.2 向拓撲中添加原語 324
13.3.3 創建拓撲幾何圖形 326
13.4 通過編輯拓撲原語來修復拓撲幾何問題 330
13.4.1 通過刪除邊來移除面 332
13.4.2 檢查共享面 333
13.4.3 編輯拓撲幾何 334
13.5 插入和編輯大型數據集 334
13.6 拓撲的簡化 337
13.7 拓撲驗證和匯總函式 338
13.8 本章小結 339
第14章 組織空間數據 341
14.1 空間存儲方法 341
14.1.1 異構列 342
14.1.2 同構列 343
14.1.3 typmod與約束對比 344
14.1.4 表繼承 345
14.1.5 表分區 348
14.2 建模真實的城市 352
14.2.1 使用異構幾何列建模 353
14.2.2 使用同構幾何列建模 356
14.2.3 使用分區建模 358
14.3 創建可自動更新的視圖 363
14.4 使用觸發器和規則 364
14.4.1 觸發器 364
14.4.2 使用INSTEAD OF觸發器 365
14.4.3 使用其他觸發器 366
14.5 本章小結 368
第15章 查詢性能調優 369
15.1 查詢規劃器 369
15.1.1 不同類型的空間查詢 370
15.1.2 公用表表達式及其對規劃的影響 372
15.2 規劃器策略 373
15.3 使用解釋來診斷問題 374
15.3.1 文本解釋與pgAdmin圖形化解釋 375
15.3.2 無索引的規劃 376
15.4 規劃器與索引 380
15.4.1 具有空間索引的規劃 381
15.4.2 索引 383
15.5 常見SQL模式及其對規劃的影響 386
15.5.1 SELECT中的子查詢 386
15.5.2 FROM子查詢與基本公用表表達式 393
15.5.3 視窗函式與自連線 394
15.5.4 橫向連線 396
15.6 系統和函式設定 398
15.6.1 影響規劃策略的關鍵系統變數 399
15.6.2 函式專用設定 401
15.6.3 鼓勵並行規劃 403
15.7 最佳化空間數據 403
15.7.1 修復無效的幾何圖形 404
15.7.2 通過簡化來減少頂點數量 404
15.7.3 通過拆分幾何圖形來減少頂點數量 404
15.7.4 集群 404
15.8 本章小結 407
第Ⅲ部分 搭配其他工具使用PostGIS
第16章 使用pgRouting和過程化語言擴展PostGIS 411
16.1 使用pgRouting解決網路路由問題 412
16.2 使用PL擴展PostgreSQL 418
16.2.1 PL的基本安裝 418
16.2.2 你能用PL做什麼 418
16.3 PL/R 420
16.3.1 PL/R入門 420
16.3.2 你能用PL/R做什麼 421
16.3.3 在PL/R中使用R包 424
16.3.4 將幾何圖形轉換為R空間對象並繪製空間對象 426
16.3.5 將繪圖輸出為二進制檔案 427
16.4 PL/Python 428
16.4.1 安裝PL/Python 428
16.4.2 編寫一個PL/Python函式 429
16.4.3 使用Python包 430
16.4.4 地理編碼示例 432
16.5 PL/V8:資料庫中的JavaScript 433
16.5.1 安裝PL/V8 433
16.5.2 在資料庫中啟用PL/V8 434
16.5.3 在PL/V8中使用其他JavaScript庫和函式 434
16.5.4 使用PL/V8編寫地圖代數函式 437
16.6 本章小結 440
第17章 在Web應用程式中使用PostGIS 441
17.1 傳統Web技術的局限性 442
17.2 地圖伺服器 442
17.2.1 輕量級地圖伺服器 443
17.2.2 完整地圖伺服器 445
17.3 地圖客戶端 448
17.4 使用MapServer 450
17.4.1 安裝MapServer 450
17.4.2 安全性考慮 452
17.4.3 創建WMS和WFS服務 452
17.4.4 使用反向代理調用地圖服務 455
17.5 使用GeoServer 456
17.5.1 安裝GeoServer 456
17.5.2 設定PostGIS工作空間 456
17.5.3 通過GeoServer WMS/WFS訪問PostGIS圖層 458
17.6 OpenLayers和Leaflet基礎 459
17.6.1 OpenLayers入門 460
17.6.2 Leaflet入門 463
17.6.3 OpenLayers和Leaflet API總結 465
17.7 通過PostGIS查詢和Web腳本顯示數據 465
17.7.1 使用PostGIS和PostgreSQL幾何輸出函式 465
17.7.2 使用PostGIS的MVT輸出函式 470
17.8 本章小結 473
以下內容通過掃描封底二維碼獲取
附錄A 其他資源 475
附錄B 安裝、編譯和升級 479
附錄C SQL入門 489
作者簡介
Regina Obe和Leo Hsu是資料庫顧問和作者。Regina是PostGIS核心開發團隊和項目指導委員會的成員。