這篇東西算是複習,瞭解 PostGIS 的基本構成與官方定義
1. 介紹
是什麼
PostGIS 是 PostgreSQL 數據庫的一個擴展插件,它是開源的,使用 GPLv2 協議。
有什麼用
在數據表中增加了地理對象的類型支持,還添加了大量操作這些空間對象的函數、運算符和索引系統。
有什麼功能
PostGIS 提供:
- 對矢量數據和柵格數據均提供了處理、分析的 SQL 函數,支持拼接、切割、形變、重分類、聚合等操作;
- 柵格圖像的處理方法;
- 能通過 SQL 調用的柵格、矢量數據座標重投影函數;
- GUI 程序或命令行程序來導入、導出 shp 矢量數據,並且通過第三方工具以支持更多格式;
- 命令行程序來導入多種標準的柵格數據:GeoTiff、NetCDF、PNG、JPG 等
- 能通過 SQL 調用的,能渲染、導入 KML、GML、GeoJSON、GeoHash、WKT 等標準文本類型的矢量數據的函數
- 能通過 SQL 語句將柵格渲染至各種格式(GeoTiff、PNG、JPG、NetCDF 等)
- 矢量或柵格操作函數,包括按區域伸縮柵格像元值、局域統計、按矢量圖形裁剪柵格、矢量化柵格等
- 3D 對象支持,包括空間索引等函數
- 網絡拓撲支持
- 其它
由何而來
PostGIS 是用 C 語言寫的,所以它可以用一些 C/C++ 的庫。它依賴於:
- GEOS 庫,提供幾何圖形處理算法
- Proj.4 庫,提供座標重投影函數
- GDAL 庫,提供柵格數據格式支持和處理手段
- LibXML2 庫,用於 XML 文檔的解析
- JSON-C 庫,用於 JSON 的解析
- SFCGAL 庫,提供額外的 3D 圖形地理處理算法
它遵循 OGC 的 《簡單要素關於SQL的規範》來實現。
附帶了什麼工具
使用空間數據庫,或者說任何數據庫,有幾個關鍵的操作:數據的導入導出。下面有幾個工具要介紹:
- 命令行工具,shp2pgsql、pgsql2shp、raster2pgsql
- GUI 工具,shp2pgsql-gui,有些分發版本並沒有,Windows 版本一般都有
- GDAL 有關工具和庫,它是處理空間數據的利器,比較難啃,但是值得挑戰
2. 與 PostGIS 類似、相關的 PostgreSQL 擴展
主要有:
- pgRouting,要配合 PostGIS 一起用,擴充了網絡分析功能,例如最短路徑分析等
- ogrfdw,基於 GDAL/OGR 的外部數據包裝器,意思就是允許 pg 讀取其它數據源爲數據表;其中矢量數據將轉換爲 PostGIS 的幾何類型
- pgpointcloud,用於在 PostgreSQL 中存儲點雲數據,附有點雲類型與 PostGIS 幾何類型之間相互轉換的功能