Postgis是什麼?5分鐘帶你入門空間數據的存儲和使用

目前最流行的存儲空間數據的關係型數據庫是什麼?

Postgresql

關係型數據庫Mysql、postgresql都是支持空間數據的存儲的。在筆者之前的文章中也介紹過Elasticsearch對於空間數據的支持。本文中,筆者帶你入門postgis。postgis是什麼?postgis與postgresql的關係是什麼?

1 PostGIS是什麼?

PostGIS是在對象關係型數據庫PostgreSQL上增加了存儲管理空間數據的能力的開源GIS數據庫。

GIS數據庫,也叫空間數據庫(Spatial database),是負責存儲處理位置(空間)數據和非空間數據的數據庫。

PostGIS是一群國外GISer為PostgreSQL實現的插件,PostgreSQL是著名的開源關係型數據庫,功能齊全,業內對標的是oracle。開源後使用率年年上升,現壓mongodb穩穩全球排名第四,而且還在上升中。

Postgis是什麼?5分鐘帶你入門空間數據的存儲和使用

PostGIS強大的空間數據庫功能依託於PostgreSQL的兩個重要特性:Geometry對象、Gist索引。

2 Geometry對象

Geometry(幾何對象類型)是PG的一個基本存儲類型,PostGIS的空間數據都會以Geometry的形式存儲在PostgreSQL裡,本質是個二進制對象。

3 Gist索引

Gist(Generalized Search Tree),通用搜索樹,本身是一個索引框架,是一種平衡樹結構的訪問方法,用戶可以針對不同場景基於Gist定製自己的索引。Gist的索引建立依賴於聚合運算,適合多維數據類型和集合數據類型。PG針對Geometry對象已經寫好了一套Gist索引,用於空間檢索。

PostGIS是“踩在巨人肩膀上”實現的空間數據存儲與檢索,自身又基於OGC(Open Geospatial Consortium,開放地理協會)的規範實現了專業的功能和合理的類型擴展,加上最終的開源,讓他成為了目前最流行的空間數據庫。

4 PostGIS能做什麼

  1. 空間數據存儲
  2. 空間數據輸出
  3. 空間數據訪問
  4. 空間數據編輯
  5. 空間數據處理
  6. 空間數據關係判斷和測量
  7. 空間拓撲實現

5 查詢舉例

我們來看一張表

Postgis是什麼?5分鐘帶你入門空間數據的存儲和使用

geom字段存儲的就是空間字段,不過此處是一個索引字符串。可以點擊藍色的眼睛看一下在地圖上的渲染效果:

Postgis是什麼?5分鐘帶你入門空間數據的存儲和使用

如果想查看geom字段存儲的空間數據,可以採用以下命令:

select st_astext(geom) from jiagoushi_test limit 10;
Postgis是什麼?5分鐘帶你入門空間數據的存儲和使用

可以看到該表中存儲的是MULTILINESTRING(多線)類型的數據。

好啦,今天的Postgis科普就先到這裡了,筆者在下一篇文章中會介紹如何使用Postgis正確計算距離和麵積。

歡迎關注筆者,每天分享架構乾貨。


分享到:


相關文章: