2009-06-21 25 views
28

PostgreSQL支持多種geometric types開箱即用,以及大量幾何operatorsGiST indexes,它們似乎提供數據的空間索引。PostgreSQL中的空間數據

然後還有PostGIS,這是PG的擴展。

PG和PostGIS中的內置空間支持有什麼區別?

如果我的應用程序需要存儲地理座標(點,區域,多邊形),然後有效地執行查詢(如多邊形中的點,多邊形相交),我需要PostGIS還是可以使用(可以說)更多方便和簡單的內置數據類型/語法?

回答

31

首先我想澄清一下GiST索引:GiST實際上是一個爲新數據類型創建索引的框架,而不是任何特定的索引方案本身。這個框架恰好用於Postgres附帶的幾何類型,但它也用於標準文本列上的三元組匹配文本相似度索引,當然也可用於許多外部包的索引方案,其中我們可以數量PostGIS。

標準幾何數據類型是否適合您或您需要PostGIS完全取決於您的應用程序。

PostGIS將幾何數據存儲在「幾何」類型的列中;在這裏你可以存儲更多或更少的任意數據(點,圓,多邊形,你有什麼)。索引是快速和相當複雜的:它可以做一些事情,比如使用複雜形狀的邊界框進行有損索引,否則就不能以任何合理的方式進行索引。支持不同的空間參考系統,並自動轉換查詢結果。 PostGIS還支持行業標準的OpenGIS格式,可以幫助與其他系統共享數據。

相比之下,內部幾何類型及其索引的集合不太複雜。沒有真正的「通用」幾何類型;相反,你必須選擇讓一個列的類型爲點,線,圓,多邊形或你有什麼;對於組合,您可能必須使用多個列。索引不太好;沒有很多不同類型的形狀可以被索引(儘管您可以通過爲它們使用單​​獨的列並手動生成邊界框來添加邊界框支持),並且在某些情況下索引可能不會那麼快。另一方面,如果內部幾何類型滿足您的需求,您將獲得這樣的優勢:您的應用程序可以更輕鬆地移植到其他安裝了Postgres但未安裝PostGIS的系統。

我的建議是玩弄內部的幾何類型,看看你的效果如何;如果您開始遇到問題,請嘗試使用PostGIS。

+0

謝謝。嘿,你介意看看這個:http://stackoverflow.com/questions/1012504/sql-query-for-point-in-polygon-using-postgres – 2009-06-21 06:12:24

相關問題