目前最流行的存儲空間數據的關係型數據庫是什麼?
Postgresql!關係型數據庫Mysql、postgresql都是支持空間數據的存儲的。在筆者之前的文章中也介紹過Elasticsearch對於空間數據的支持。本文中,筆者帶你入門postgis。postgis是什麼?postgis與postgresql的關係是什麼?
1 PostGIS是什麼?
PostGIS是在對象關係型數據庫PostgreSQL上增加了存儲管理空間數據的能力的開源GIS數據庫。
GIS數據庫,也叫空間數據庫(Spatial database),是負責存儲處理位置(空間)數據和非空間數據的數據庫。
PostGIS是一群國外GISer為PostgreSQL實現的插件,PostgreSQL是著名的開源關係型數據庫,功能齊全,業內對標的是oracle。開源後使用率年年上升,現壓mongodb穩穩全球排名第四,而且還在上升中。
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能做什麼
- 空間數據存儲
- 空間數據輸出
- 空間數據訪問
- 空間數據編輯
- 空間數據處理
- 空間數據關係判斷和測量
- 空間拓撲實現
5 查詢舉例
我們來看一張表
geom字段存儲的就是空間字段,不過此處是一個索引字符串。可以點擊藍色的眼睛看一下在地圖上的渲染效果:
如果想查看geom字段存儲的空間數據,可以採用以下命令:
select st_astext(geom) from jiagoushi_test limit 10;
可以看到該表中存儲的是MULTILINESTRING(多線)類型的數據。
好啦,今天的Postgis科普就先到這裡了,筆者在下一篇文章中會介紹如何使用Postgis正確計算距離和麵積。
歡迎關注筆者,每天分享架構乾貨。
關鍵字: PostgreSQL PostGIS Geometry