PostgreSQL 是一種對象-關系型數(shù)據(jù)庫管理系(ORDBMS),也是目前功能最強大、特性最豐富和最復雜的自由軟件數(shù)據(jù)庫系統(tǒng)。它起源于伯克利(BSD)的數(shù)據(jù)庫研究計劃,目前是最重要的開源數(shù)據(jù)庫產(chǎn)品開發(fā)項目之一, 有著非常廣泛的用戶。PostGIS在對象關系型數(shù)據(jù)庫PostgreSQL上增加了存儲管理空間數(shù)據(jù)的能力,相當于Oracle的spatial部分。PostGIS最大的特點是符合并且實現(xiàn)了OpenGIS的一些規(guī)范,是最著名的開源GIS數(shù)據(jù)庫。
1986年,加州大學伯克利分校的Michael Stonebraker教授領導了Postgres的項目,它是PostgreSQL的前身。隨后出現(xiàn)了PostGIS,PostGIS是對象-關系型數(shù)據(jù)庫系統(tǒng)PostgreSQL的一個擴展,它的出現(xiàn)讓人們開始重視基于數(shù)據(jù)庫管理系統(tǒng)的空間擴展方式,而且使PostGIS有望成為今后管理空間數(shù)據(jù)的主流技術。
由于空間數(shù)據(jù)具有空間位置、非結(jié)構(gòu)化、空間關系、分類編碼、海量數(shù)據(jù)等特征,一般的商用數(shù)據(jù)庫管理系統(tǒng)難以滿足要求。
為了提高數(shù)據(jù)庫管理系統(tǒng)(DBMS)對空間數(shù)據(jù)的管理能力,國內(nèi)外先后出現(xiàn)過:文件與關系數(shù)據(jù)庫混合管理系統(tǒng)、全關系型空間數(shù)據(jù)庫管理系統(tǒng)、關系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎、擴展對象關系型數(shù)據(jù)庫管理系統(tǒng),以及面向?qū)ο罂臻g數(shù)據(jù)庫管理系統(tǒng)等多種解決方案。目前,國內(nèi)外較為流行的主要集中在“關系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎”、“擴展對象關系型數(shù)據(jù)庫”兩方面。
“關系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎”通常是近年來由GIS廠商研發(fā)的一種中間件解決方案。用戶將自己的空間數(shù)據(jù)交給獨立于數(shù)據(jù)庫之外的空間數(shù)據(jù)引擎,有空間數(shù)據(jù)引擎來組織空間數(shù)據(jù)在關系型數(shù)據(jù)庫中的存儲;當用戶需要訪問數(shù)據(jù)的時候,再通知空間數(shù)據(jù)引擎,由引擎從關系型數(shù)據(jù)庫中取出數(shù)據(jù),并轉(zhuǎn)化為客戶可以使用的方式。
因此,關系型數(shù)據(jù)庫僅僅是存放空間數(shù)據(jù)的容器,而空間數(shù)據(jù)引擎則是空間數(shù)據(jù)進出該容器的轉(zhuǎn)換通道。這類系統(tǒng)的典型代表有ESRI的ArcSDE和MapInfo的SpatialWare。其優(yōu)點是,訪問速度快,支持通用的關系數(shù)據(jù)庫管理系統(tǒng),空間數(shù)據(jù)按BLOB存取,可跨數(shù)據(jù)庫平臺,與特定GIS平臺結(jié)合緊密,應用靈活。其缺點主要表現(xiàn)為,空間操作和處理無法在數(shù)據(jù)庫內(nèi)核中實現(xiàn),數(shù)據(jù)模型較為復雜,擴展SQL比較困難,不易實現(xiàn)數(shù)據(jù)共享與互操作。
擴展對象關系型數(shù)據(jù)庫管理系統(tǒng)是由數(shù)據(jù)庫廠商研發(fā)的管理空間數(shù)據(jù)一種解決方案。由于關系型數(shù)據(jù)庫難以管理非結(jié)構(gòu)化數(shù)據(jù)(也包括空間數(shù)據(jù)),數(shù)據(jù)庫廠商借鑒面向?qū)ο蠹夹g,發(fā)展了對象關系型數(shù)據(jù)庫管理系統(tǒng)。
此系統(tǒng)支持抽象的數(shù)據(jù)類型(ADT)及其相關操作的定義;用戶利用這種能力可以增加空間數(shù)據(jù)類型及相關函數(shù),從而將空間數(shù)據(jù)類型與函數(shù)就從中間件(空間數(shù)據(jù)引擎)轉(zhuǎn)移到了數(shù)據(jù)庫管理系統(tǒng)中,客戶也不必采用空間數(shù)據(jù)引擎的專用接口進行編程,而是使用增加了的空間數(shù)據(jù)類型和函數(shù)的標準擴展型SQL語言來操作空間數(shù)據(jù)。
這類支持空間擴展的產(chǎn)品有Oracle的Oracle Spatial, IBM的DB2 Spatial Extender, Informix 的Spatial DataBlade。其優(yōu)點是,空間數(shù)據(jù)的管理與通用數(shù)據(jù)庫系統(tǒng)融為一體,空間數(shù)據(jù)按對象存取,可在數(shù)據(jù)庫內(nèi)核中實現(xiàn)空間操作和處理,擴展SQL比較方便,較易實現(xiàn)數(shù)據(jù)共享與互操作。其缺點主要表現(xiàn)為,實現(xiàn)難度大,壓縮數(shù)據(jù)比較困難,目前的功能和性能與第一類系統(tǒng)尚存在差距。
目前開源空間信息軟件領域最性能優(yōu)秀的數(shù)據(jù)庫軟件當屬PostgreSQL數(shù)據(jù)庫,而構(gòu)建在其上的空間對象擴展模塊PostGIS則使得其成為一個真正的大型空間數(shù)據(jù)庫。
緣起PostgrSQL
1986年,加州大學伯克利分校的Michael Stonebraker教授領導了Postgres的項目,它是PostgreSQL的前身。這個項目的成果非常顯著,在現(xiàn)代數(shù)據(jù)庫的許多方面都作出了大量的貢獻,如在面向?qū)ο蟮臄?shù)據(jù)庫、部分索引技術、規(guī)則、過程和數(shù)據(jù)庫擴展方面都取得了顯著的成果。同時,Stonebraker將PostgreSQL納入到BSD版權(quán)體系中,使得PostgreSQL在各種科研機構(gòu)和一些公共服務組織得到了廣泛的應用。
在PostgreSQL中已經(jīng)定義了一些基本的集合實體類型,這些類型包括:點(POINT)、線(LINE)、線段(LSEG)、方形(BOX)、多邊形(POLYGON)和圓(CIRCLE)等;另外,PostgreSQL定義了一系列的函數(shù)和操作符來實現(xiàn)幾何類型的操作和運算;同時,PostgreSQL引入空間數(shù)據(jù)索引R-tree。
盡管在PostgreSQL提供了上述幾項支持空間數(shù)據(jù)的特性,但其提供的空間特性很難達到GIS的要求,主要表現(xiàn)在:缺乏復雜的空間類型;沒有提供空間分析;沒有提供投影變換功能。為了使得PostgreSQL更好的提供空間信息服務,PostGIS應運而生。
PostGIS簡介
PostGIS是對象關系型數(shù)據(jù)庫系統(tǒng)PostgreSQL的一個擴展,PostGIS提供如下空間信息服務功能:空間對象、空間索引、空間操作函數(shù)和空間操作符。同時,PostGIS遵OpenGIS的規(guī)范。
PostGIS的版權(quán)被納入到GNU的GPL中,也就是說任何人可以自由得到PostGIS的源碼并對其做研究和改進。正是由于這一點,PostGIS得到了迅速的發(fā)展,越來越多的愛好者和研究機構(gòu)參與到PostGIS的應用開發(fā)和完善當中。
PostGIS發(fā)展歷程
PostGIS是由Refractions Research Inc開發(fā)的,Refractions是一家GIS和數(shù)據(jù)庫咨詢公司,Refraction公司最初是在PostgreSQL的基礎上研究空間數(shù)據(jù)庫的實現(xiàn),由于PostgreSQL所提供的空間數(shù)據(jù)類型和功能遠遠不能滿足GIS的需求,研究工作經(jīng)常陷入到進退維谷的境地,最終的結(jié)果往往是耗費了大量的人力物力,而產(chǎn)品卻極其復雜并且性能低下。這些原因直接或間接促成PostGIS項目的實施。
PostGIS的實施也不是一帆風順,直到PostgreSQL 7.1發(fā)布之后,PostGIS的實現(xiàn)才變?yōu)榭赡?,主要原因?.1版本之前PostgreSQL支持的記錄大小最大為8Kb,從7.1之后,PostgreSQL將這一限制擯棄。即使采用二進制方式存儲,空間數(shù)據(jù)對象也往往會經(jīng)常超過8Kb,如果這個限制存在的話,空間數(shù)據(jù)的存儲就無從談起.
伴隨著這一限制的消除,PostGIS的研究和開發(fā)也隨即在2001年的4月展開,并于2001年的5月發(fā)布了PostGIS的第一版(PostGIS V0.1)。在PostGIS的第一版中,主要包括空間數(shù)據(jù)庫、采用標準表示方式的空間數(shù)據(jù)對象、支持快速查詢的空間索引和一些簡單的分析函數(shù)(如area和length等)。PostGIS V0.1中支持的空間數(shù)據(jù)對象類型包括:點、線、多邊形、幾何對象類型,以及多點、多線、多多邊形的幾何對象類型。
2001年5月發(fā)布的PostGIS V0.2增加了對于Windows平臺下二進制表示的支持,同時為新用戶提供幫助文檔。不過,用戶反饋PostGIS的函數(shù)命名沒有遵循OpenGIS規(guī)范。
2001年7月PostGIS V0.5發(fā)布,PostGIS增加了OpenGIS現(xiàn)有的所有功能性函數(shù)并在函數(shù)的命名上與其保持一致。增加了24個OpenGIS存取函數(shù),同時刪除了與這些函數(shù)功能等價的不標準的原有函數(shù)。
伴隨著來自不列顛哥倫比亞省政府的資金支持,對于在球體表面的長度運算支持也加入到0.5版中。同期,Refractions公司將British Columbia省的數(shù)字道路地圖集移植到PostGIS中,同時使用數(shù)據(jù)庫的模式和數(shù)據(jù)轉(zhuǎn)換功能為地圖集客戶提供支持(急救車派遣、緊急事物響應,以及其他市政事物等)。
PostGIS V0.5之所以重要,還有一個原因就是Minnesota大學的Mapserver的發(fā)布。Minnesota大學的Mapserver是一個開源的互聯(lián)網(wǎng)地圖發(fā)布引擎,就像ESRI公司的ArcIMS系統(tǒng),Mapserver同時增加了對于PostGIS的支持。
在Mapserver中,提供了一個Web驅(qū)動的接口,這個接口用于檢查數(shù)據(jù)庫中數(shù)據(jù)的空間特征。在PostGIS中,PostGIS為了使得Mapserver能夠更好的提供服務,提供了一個易于讀寫的數(shù)據(jù)源,這個數(shù)據(jù)源將會在網(wǎng)絡事務繁忙的時候發(fā)揮其效用。比如,如果用標準的GIS文件作為數(shù)據(jù)源,如果有兩個用戶并發(fā)的對同一文件進行寫入操作,這樣將會不可避免的導致操作沖突,而利用PostGIS就能夠很好的解決這個缺陷,同時確保數(shù)據(jù)的完整性。
2001年9月,PostGIS V0.6發(fā)布,PostGIS V0.6提供了完整的OpenGIS支持,加入了標準的元數(shù)據(jù)表,并且提供了對于空間參照系統(tǒng)標識的支持。另外還加入了OpenGIS支持的12個功能函數(shù),同時對于Mapserver的支持得到了進一步的增強。
2002年2月,PostgreSQL V7.2發(fā)布,在7.2版中,GIST索引的API函數(shù)作了一點改進。由于這些API函數(shù)同樣應用于PostGIS中,這給PostGIS V0.6的應用帶來了麻煩,促使PostGIS必須作出改進適應PostgreSQL的變化。2002年PostGIS V0.7發(fā)布,在0.7版中,提供了新的對于GIST的API函數(shù)支持,同時在這一版中,提供了對于坐標變換的支持。
從2002年到現(xiàn)在,PostGIS又陸續(xù)發(fā)布了一系列的新版本,這些PostGIS產(chǎn)品在繼承PostGIS產(chǎn)品原有優(yōu)點的同時,又針對PostGIS本身存在的問題和不足進行了進一步的改進。到現(xiàn)在為止,PostGIS的最新版本是PostGIS V1.1.4。PostGIS V1.1.4主要改進的地方包括:⑴提供了對于將要發(fā)布的PostgreSQL V8.2的支持;⑵修復了函數(shù)collect中存在的bug;⑶在MakeBox2d和MakeBox3d中增加了對SRID的匹配檢查;⑷提高了pgsql2shp的運行并發(fā)性;⑸進一步改進了對于Java的支持。
PostGIS特性
PostGIS還提供以下功能:
柵格數(shù)據(jù)類型 PostGIS通過一種新的數(shù)據(jù)類型片,提供對于大的柵格數(shù)據(jù)對象的存儲。片由以下幾個部分組成:包裹矩形框、SRID、類型和一個字節(jié)序列。通過將片的大小控制在數(shù)據(jù)庫頁值(32×32)以下,使得快速的隨即訪問變成可能。一般大的圖片也是通過將其切成32×32像素的片然后再存儲在數(shù)據(jù)庫中的。
PostGIS發(fā)展展望
目前,由于“關系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎”的技術方案訪問迅速、與GIS聯(lián)系緊密的優(yōu)點,在應用中占有一定的優(yōu)勢,但空間數(shù)據(jù)引擎獨立于數(shù)據(jù)庫內(nèi)核,難以充分利用關系型數(shù)據(jù)庫中各種成熟的數(shù)據(jù)管理、訪問技術,成為進一步發(fā)展的致命弱點。另外,難以支持擴展SQL,不易實現(xiàn)數(shù)據(jù)共享與互操作等問題也逐漸暴露出來。
盡管面向?qū)ο罂臻g數(shù)據(jù)庫管理系統(tǒng)最適應于空間數(shù)據(jù)的表達和管理,不僅支持變長記錄,而且支持對象的嵌套、信息的繼承與聚集。有關面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)的研究已有十多年了,由于缺乏良好的數(shù)據(jù)基礎,在訪問速度尚未有重大突破,難以發(fā)展成熟,據(jù)估計在較長一段時間內(nèi)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)都不會替代對象關系型數(shù)據(jù)庫管理系統(tǒng)。
擴展對象關系型數(shù)據(jù)庫管理系統(tǒng)無疑將成為以后的發(fā)展方向。盡管目前PostGIS/PostgreSQL和Spatial Oracle的性能與ArcSDE仍有一定的差距,但是隨著數(shù)據(jù)庫廠商對空間數(shù)據(jù)管理市場的不斷重視、結(jié)構(gòu)化數(shù)據(jù)管理方式與空間數(shù)據(jù)管理方式的進一步融合、數(shù)據(jù)壓縮傳輸技術的不斷提高,基于數(shù)據(jù)庫管理系統(tǒng)的空間擴展方式將會不斷的完善,成為今后管理空間數(shù)據(jù)的主流技術。而多數(shù)GIS廠商則應將精力集中到空間分析、空間模型等方面,從而形成較好的社會分工結(jié)構(gòu)。
目前,軟件開源已經(jīng)成為IT界的一種發(fā)展趨勢,越來越多的軟件加入到開源系統(tǒng)中。PostGIS不論在功能還是擴展性方面都不落后于商業(yè)GIS平臺的空間數(shù)據(jù)庫,而且由于其源代碼的公開性,更加容易吸引廣大愛好者參與到PostGIS的開發(fā)中,不斷完善現(xiàn)有的功能同時進一步擴展新的特性,相信PostGIS的發(fā)展前景將會非常美好。
更多建議: