遠(yuǎn)俊紅,王小麗
(1.云南林業(yè)職業(yè)技術(shù)學(xué)院,云南 昆明 650224;2.云南開(kāi)放大學(xué),云南 昆明 650224)
空間數(shù)據(jù)庫(kù)是指在地球表面某一范圍內(nèi)與空間地理相關(guān)、反映某一主題信息的數(shù)據(jù)集合,是一類(lèi)以空間目標(biāo)作為存儲(chǔ)對(duì)象的專(zhuān)業(yè)數(shù)據(jù)庫(kù),是地理信息系統(tǒng)的核心和基礎(chǔ)。以地球表面空間位置為參照的自然、社會(huì)和人文經(jīng)濟(jì)景觀(guān)數(shù)據(jù),被稱(chēng)為空間數(shù)據(jù)[1]。
2013年8月,國(guó)家林業(yè)局出臺(tái)了《中國(guó)智慧林業(yè)發(fā)展指導(dǎo)意見(jiàn)》,標(biāo)志著我國(guó)林業(yè)信息化由“數(shù)字林業(yè)”步入“智慧林業(yè)”的發(fā)展新階段。支撐智慧林業(yè)大廈的五大技術(shù)——云計(jì)算、物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、智慧城市[2]也在不斷發(fā)展,而數(shù)據(jù)庫(kù)技術(shù)正是這五大技術(shù)的基礎(chǔ)??臻g數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)學(xué)科的一個(gè)分支,經(jīng)歷了從文件系統(tǒng)、文件+關(guān)系數(shù)據(jù)庫(kù)、空間數(shù)據(jù)庫(kù)引擎+關(guān)系數(shù)據(jù)庫(kù)到空間數(shù)據(jù)庫(kù)管理的演變過(guò)程[1]。
國(guó)內(nèi)針對(duì)地理信息系統(tǒng)方面的研究,基本上集中在空間數(shù)據(jù)庫(kù)的商業(yè)產(chǎn)品應(yīng)用。信永波等采用ArcGIS Diagrammer工具建立UML模型,完成了泥石流數(shù)據(jù)庫(kù)的設(shè)計(jì)[3]。周英基于A(yíng)rcEngine組件技術(shù)、Access數(shù)據(jù)庫(kù)引擎、.net技術(shù)和C#面向?qū)ο蟮某绦蛘Z(yǔ)言,開(kāi)發(fā)了雅安地震災(zāi)區(qū)環(huán)境信息空間數(shù)據(jù)庫(kù)管理系統(tǒng)[4]。郭雪采用C/S體系結(jié)構(gòu),以C#為開(kāi)發(fā)語(yǔ)言,Oracle數(shù)據(jù)庫(kù)、ArcGIS Engine為嵌入式組件,開(kāi)發(fā)了農(nóng)村土地確權(quán)管理系統(tǒng)[5]。胡莉燁設(shè)計(jì)了基于A(yíng)rcGIS的海洋生態(tài)環(huán)境監(jiān)測(cè)系統(tǒng),實(shí)現(xiàn)了用ArcGIS Engine對(duì)海洋生態(tài)環(huán)境的監(jiān)測(cè)要求[6]。謝軒等以Internet為系統(tǒng)平臺(tái),運(yùn)用WebGIS技術(shù)、ASP網(wǎng)絡(luò)編程技術(shù)、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)以及人工智能技術(shù)等現(xiàn)代化信息系統(tǒng)開(kāi)發(fā)手段,設(shè)計(jì)了基于WebGIS的水稻病蟲(chóng)害預(yù)警信息系統(tǒng)[7]。目前,基于空間數(shù)據(jù)庫(kù)開(kāi)發(fā)的應(yīng)用大多采用商用空間數(shù)據(jù)庫(kù)或空間數(shù)據(jù)庫(kù)引擎,對(duì)于開(kāi)源空間數(shù)據(jù)庫(kù)的研究較少。例如,王洪斌等將PostgreSQL空間數(shù)據(jù)庫(kù)和SharpMap控件應(yīng)用于遙感影像管理[8];趙仁輝等以PostgreSQL/PostGIS為空間數(shù)據(jù)庫(kù)、MapServer為GIS引擎、OpenLayers為客戶(hù)端搭建系統(tǒng)平臺(tái),對(duì)多級(jí)地圖緩存和基于WebService的模型庫(kù)等關(guān)鍵技術(shù)進(jìn)行了分析與描述[9]。當(dāng)前,基于全開(kāi)源軟件的空間數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)平臺(tái)更少。國(guó)外關(guān)于開(kāi)源空間數(shù)據(jù)庫(kù)方面的研究主要集中在查詢(xún)優(yōu)化[10]、數(shù)據(jù)庫(kù)拓?fù)潢P(guān)系驗(yàn)證[11]等方面,對(duì)于開(kāi)源空間數(shù)據(jù)庫(kù)在行業(yè)里的應(yīng)用也比較少。
隨著開(kāi)源組織的成立、開(kāi)源成熟產(chǎn)品的推出,目前開(kāi)源已經(jīng)成為一種主流趨勢(shì),從操作系統(tǒng)(Linux對(duì)Windows)、數(shù)據(jù)庫(kù)系統(tǒng)(PostgreSQL、SQLite等對(duì)ORACLE、SQL Server等)、編程語(yǔ)言Python、Java對(duì).Net到.Net開(kāi)源內(nèi)核代碼,都說(shuō)明開(kāi)源勢(shì)在必行。
基于空間數(shù)據(jù)庫(kù)的研究背景和發(fā)展趨勢(shì),針對(duì)開(kāi)源空間數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā),筆者總結(jié)出以下特點(diǎn):
(1)開(kāi)源軟件優(yōu)勢(shì)在于成本低、完整的源代碼開(kāi)放、高度支持OGC等標(biāo)準(zhǔn)和高度可擴(kuò)展;
(2)通過(guò)現(xiàn)有空間數(shù)據(jù)庫(kù)產(chǎn)品在數(shù)據(jù)類(lèi)型、遵循的規(guī)范、存儲(chǔ)模式、空間索引、空間操作以及地圖投影等方面的對(duì)比[1],作為開(kāi)源空間數(shù)據(jù)庫(kù)的代表,PostgreSQL在支持?jǐn)?shù)據(jù)類(lèi)型、空間索引和空間操作方面具有相當(dāng)突出的優(yōu)勢(shì);
(3)Linux相對(duì)于Windows而言,作為服務(wù)器部署更安全、更簡(jiǎn)單,所需要的配置個(gè)人電腦很容易達(dá)到;
(4)在開(kāi)源操作系統(tǒng)Linux上,PostgreSQL和SQLite的性能比在Windows上要好;
(5)Python語(yǔ)言作為開(kāi)源的典型代表,支持空間數(shù)據(jù)處理的庫(kù)比較多;
(6)“智慧林業(yè)”建設(shè)和林業(yè)信息化的需要。
筆者在開(kāi)源操作系統(tǒng)Linux或Unix上,搭建了一個(gè)基于PostgreSQL或SQLite的開(kāi)源空間數(shù)據(jù)庫(kù)以及對(duì)應(yīng)的空間數(shù)據(jù)模型擴(kuò)展PostGIS或SpatiaLite,通過(guò)桌面應(yīng)用平臺(tái)Quantun GIS與OpenJUMP,利用開(kāi)源編程語(yǔ)言Python或Java進(jìn)行數(shù)據(jù)分析與數(shù)據(jù)挖掘,為中小型空間數(shù)據(jù)分析項(xiàng)目提供了一種基于全開(kāi)源架構(gòu)的解決方案,為智慧林業(yè)建設(shè)提供了技術(shù)支持。
課題以空間數(shù)據(jù)庫(kù)理論為基礎(chǔ),充分利用開(kāi)源軟件成本較低、自由、可擴(kuò)展性的特性,以開(kāi)源軟件為主要視角,分析從操作系統(tǒng)到桌面應(yīng)用和編程語(yǔ)言的空間數(shù)據(jù)庫(kù)方面的應(yīng)用,探尋一種基于開(kāi)源軟件的空間數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)平臺(tái),如圖1所示。
圖1 基于開(kāi)源軟件的空間數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)平臺(tái)
重點(diǎn)解決的問(wèn)題:開(kāi)源軟件支持標(biāo)準(zhǔn)的種類(lèi)和支持的數(shù)據(jù)類(lèi)型;開(kāi)源軟件對(duì)于空間數(shù)據(jù)的采集、存儲(chǔ)檢索、查詢(xún)分析、輸出與表示以及空間分析函數(shù)轉(zhuǎn)化;程序設(shè)計(jì)語(yǔ)言操縱、分析空間數(shù)據(jù)的模塊調(diào)用。
應(yīng)用、特色和作用:(1)為智慧林業(yè)建設(shè)提供技術(shù)平臺(tái)支持;(2)開(kāi)源軟件,自由不涉及版權(quán)紛爭(zhēng),更好地遵從標(biāo)準(zhǔn),技術(shù)更新快、功能強(qiáng);(3)為學(xué)校在開(kāi)展空間數(shù)據(jù)庫(kù)教學(xué)科研提供了一種開(kāi)源平臺(tái)。
平臺(tái)的搭建需要操作系統(tǒng)的安裝和配置、數(shù)據(jù)庫(kù)管理系統(tǒng)的安裝和配置以及桌面應(yīng)用軟件的安裝[12-13]。
2.1.1 第一步:安裝開(kāi)源操作系統(tǒng)
考慮到學(xué)習(xí)的方便性和平臺(tái)的實(shí)用性,采用在Win10操作系統(tǒng)中以虛擬機(jī)的方式安裝類(lèi)Linux操作系統(tǒng)(Xubuntu)。Xubuntu是一個(gè)優(yōu)雅且易于使用的操作系統(tǒng),附帶Xfce,是一個(gè)穩(wěn)定、輕便且可配置的桌面環(huán)境。因?yàn)閄ubuntu安裝完成后需要進(jìn)行更新,默認(rèn)更新網(wǎng)站都是國(guó)外網(wǎng)站,因此需要設(shè)置更新數(shù)據(jù)源為國(guó)內(nèi)鏡像,如清華大學(xué)、中國(guó)科技大學(xué)或者阿里云。
2.1.2 第二步:安裝PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)及其空間擴(kuò)展PostGis
底層操作系統(tǒng)安裝完成后,需安裝PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。由于在Xubuntu下PostgreSQL沒(méi)有圖形界面的安裝程序,所以需要打開(kāi)Xubuntu的終端,利用命令行完成安裝過(guò)程。需要注意,安裝需要連接網(wǎng)絡(luò)。注意事項(xiàng)包括:修改快一點(diǎn)的數(shù)據(jù)源,如阿里云;使用sudo apt-get install postgresql-version,如postgresql-9或postgresql-10;利用sudo apt-get install postgis安裝PostGis;必須在創(chuàng)建的每個(gè)數(shù)據(jù)庫(kù)中啟用PostGis,該數(shù)據(jù)庫(kù)才具備管理空間數(shù)據(jù)的能力。
2.1.3 第三步:安裝桌面應(yīng)用QGIS
選擇QGIS 3.4 LTR版本,利用圖2的命令進(jìn)行安裝。安裝完成后,雙擊QGIS圖標(biāo)即可打開(kāi)應(yīng)用程序。
圖2 安裝桌面應(yīng)用QGIS的命令
至此,基于開(kāi)源軟件的空間數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)平臺(tái)已經(jīng)搭建完成?;诖似脚_(tái)做了兩個(gè)方面的嘗試:一是對(duì)于矢量數(shù)據(jù)(shp)的處理,二是將OSM地圖數(shù)據(jù)存入PostGis數(shù)據(jù)庫(kù),并進(jìn)行渲染和處理。
研究結(jié)果顯示,本平臺(tái)的特色或創(chuàng)新如下:
(1)本課題所研究和搭建的平臺(tái)從操作系統(tǒng)、數(shù)據(jù)庫(kù)、桌面應(yīng)用和程序語(yǔ)言全部采用開(kāi)源軟件,使得該平臺(tái)為全開(kāi)源架構(gòu),不同于應(yīng)用商業(yè)產(chǎn)品的開(kāi)發(fā)平臺(tái);
(2)開(kāi)源軟件意味著不需要付費(fèi),在成本控制方面具有低成本特性。因?yàn)殚_(kāi)源軟件都是社區(qū)人士在維護(hù),造就了開(kāi)源軟件的高擴(kuò)展性,為本開(kāi)發(fā)平臺(tái)的高擴(kuò)展性奠定了基礎(chǔ)。