PostGIS 實戰, 3/e Postgis in Action, 3/e

[美] 里賈納·奧伯(Regina Obe),利歐·許(Leo Hsu)著 王亮 杜朋 但波 譯

  • PostGIS 實戰, 3/e-preview-1
  • PostGIS 實戰, 3/e-preview-2
PostGIS 實戰, 3/e-preview-1

買這商品的人也買了...

商品描述

《PostGIS實戰(第3版)》是一本介紹如何使用PostGIS進行地理數據處理的書籍。它展示了如何使用PostGIS擴展解決現實世界的地理數據問題。本書提供了一些特性和支持,使用戶能夠輕鬆處理地理數據任務,並創建位置感知查詢、制圖、柵格分析和路由應用程序的後端。

《PostGIS實戰(第3版)》的主要內容包括:

  • 學習基本的制圖技巧,以展示地理數據
  • 探索如何使用自定義函數進一步擴展應用程序的功能
  • 引入新的PostGIS特性,如PostGIS窗口函數、並行查詢和矢量切片函數
  • 針對PostGIS 3.1和PostgreSQL 13進行修訂和優化
  • 簡化幾何圖形以提高處理效率
  • 將PostGIS應用擴展到網絡和桌面應用程序

這本書的目標是幫助讀者更好地理解和應用PostGIS,並通過優化查詢和提高效率來改善地理數據處理的速度。它適用於對地理數據處理感興趣的專業人士和開發人員。

目錄大綱

目    錄

 

第Ⅰ部分 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