基于Linux的GIS服務(wù)器設(shè)計(jì)論文_第1頁(yè)
基于Linux的GIS服務(wù)器設(shè)計(jì)論文_第2頁(yè)
基于Linux的GIS服務(wù)器設(shè)計(jì)論文_第3頁(yè)
基于Linux的GIS服務(wù)器設(shè)計(jì)論文_第4頁(yè)
基于Linux的GIS服務(wù)器設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE 畢業(yè)設(shè)計(jì)(論文)第PAGEII頁(yè)P(yáng)AGE 畢業(yè)設(shè)計(jì)(論文)第PAGEI頁(yè)畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)論文題目:基于Linux的GIS服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名:學(xué)生學(xué)號(hào):專業(yè)班級(jí):學(xué)院名稱:指導(dǎo)老師:學(xué)院院長(zhǎng):4月15日基于Linux的GIS服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)摘要本文首先介紹了GIS的歷史,GIS當(dāng)今取得的成果,以及GIS后面的發(fā)展趨勢(shì),再說(shuō)明了一些基本概念(GIS的功能,組成,以及GIS的一些專用名詞)。接著重點(diǎn)介紹了GIS系統(tǒng)的設(shè)計(jì)架構(gòu)以及遵循的設(shè)計(jì)原則(面向?qū)ο螅?,OGC的規(guī)范中的幾何空間對(duì)象的WKT和WKB表現(xiàn)形式,WKB主要表現(xiàn)在BNF(巴科斯范式)的定義和組織結(jié)構(gòu),而WKB主要表現(xiàn)在OGC標(biāo)準(zhǔn)協(xié)會(huì)對(duì)于幾何對(duì)象在計(jì)算機(jī)的二進(jìn)制流中的組織形態(tài)。 第三章在第二章的基礎(chǔ)上詳細(xì)的介紹和分析了GIS服務(wù)器的各個(gè)模塊的設(shè)計(jì)(與數(shù)據(jù)庫(kù)的交互,GIS中的對(duì)象體系結(jié)構(gòu),繪圖模塊的設(shè)計(jì))。通過(guò)介紹類的結(jié)構(gòu)和一些示例代碼來(lái)把設(shè)計(jì)方法更加形象的展示出來(lái)。 第四章在分析了當(dāng)前的服務(wù)器的設(shè)計(jì)之上,找出當(dāng)前服務(wù)器的不足之處,提出需要改進(jìn)的部分和大概的解決方案。由于保證了系統(tǒng)結(jié)構(gòu)的可擴(kuò)展性,使得后續(xù)的改進(jìn)工作能夠很好的進(jìn)行。關(guān)鍵詞:GIS,OGC,WKB,WKT,設(shè)計(jì)和實(shí)現(xiàn)ThedesignandimplementationofGISserverAbstractAtthebeginningofthearticle,weintroducedthehistoryofGIS(GeographyInformationSystem),theachievementsofGIS.Andfinallysomebasicterminologyandconceptshavebeenintroduced.Atthesecondchapter,wegivearepresentationofthewholearchitectureandthedesignprinciples(Object-Oriented)wefollowing.ThewholeGISserverobeysthestandardsofSimpleFeaturesofOpenGISspecification:theWKTformandWKBformofspatialobjects.ThisisthecorecontentwhendesigningtheGISserver’sarchitecture.TheWKTformsemphasizeonmakingthegeometryobjecteasilytoreadbyhumanordeveloper.TheWKBformsaretryingtomakedatautilizationmaximum.Inthebaseofthepreviouschapter,thethirdchapterdescribesdetaildesignofeachmodulesmentionedinsecondchapter.Wecleartheprinciplesindetaildesignbylistsomepicturesandsourcecode.Atlast,weanalyzedthewholeGISserver’sarchitectureanddetaileddesign.Throughthat,weproposedsomeimprovementsintheGISserver,withwholeviewandthedetailview.Aswemadethesystemarchitectureeasilytoextent,ThefollowingimprovementsontheGISservercanexecutewithouttoomuchtrouble.KeyWords:GIS,OGC,WKB,WKT,Designandimplementation目錄1. 引言 01.1. GIS發(fā)展歷史 01.2. GIS國(guó)外發(fā)展現(xiàn)狀 11.3. GIS國(guó)內(nèi)發(fā)展現(xiàn)狀 32. GIS系統(tǒng)概述 42.1. GIS的組成 42.1.1 硬件 42.1.2 軟件 42.1.3 數(shù)據(jù) 52.2. GIS的主要功能 52.2.1 數(shù)據(jù)輸入 52.2.2 數(shù)據(jù)編輯 52.2.3 數(shù)據(jù)的存儲(chǔ)與管理 62.2.4 空間查詢與分析 62.2.5 可視化表達(dá)與輸出 62.3. GIS系統(tǒng)的一些基本概念 72.3.1 地理信息系統(tǒng)(GIS) 72.3.2 地理參照系統(tǒng)(SpatialReferenceSystem) 72.3.3 矢量和柵格模式(VectorandRasterModel) 72.3.4 空間數(shù)據(jù)庫(kù)(SpatialDatabase) 82.3.5 OpenGISConsortium(OGC,開(kāi)放空間協(xié)會(huì)) 82.4. 本文的結(jié)構(gòu) 93. MyGIS系統(tǒng)架構(gòu)設(shè)計(jì) 93.1. MyGIS系統(tǒng)選型 93.2. 空間對(duì)象的WKB和WKT標(biāo)準(zhǔn)表達(dá)方式 113.2.1 BNF(巴科斯范式) 113.2.2 WKT規(guī)范 133.2.3 WKB規(guī)范 153.3. MyGIS系統(tǒng)架構(gòu) 173.4. MyGIS主要組成部分 193. MyGIS詳細(xì)設(shè)計(jì) 223.1. MyGIS對(duì)象層次結(jié)構(gòu) 223.2. PostGIS的實(shí)現(xiàn) 243.3. MyGIS服務(wù)器與PostGIS的交互 243.4. GIS服務(wù)器繪圖模塊的設(shè)計(jì) 274. MyGIS工作總結(jié) 04.1. 需要進(jìn)行的工作 04.2. 當(dāng)前的解決方案 05. 結(jié)論 0致謝 0參考文獻(xiàn) 16. 附錄 27.1. 附錄ABNF表達(dá)式 27.2. 附錄B幾何對(duì)象的WKB表示 3引言地理信息系統(tǒng)(GIS,GeographicInformationSystem)是一種基于計(jì)算機(jī)的工具,它可以對(duì)在地球上存在的東西和發(fā)生的事件進(jìn)行成圖和分析[1]。GIS技術(shù)把地圖這種獨(dú)特的視覺(jué)化效果和地理分析功能與一般的數(shù)據(jù)庫(kù)操作(例如查詢和統(tǒng)計(jì)分析等)集成在一起。這種能力使GIS與其他信息系統(tǒng)相區(qū)別,從而使其在廣泛的公眾和個(gè)人企事業(yè)單位中解釋事件、預(yù)測(cè)結(jié)果、規(guī)劃戰(zhàn)略等中具有實(shí)用價(jià)值。今天,GIS已是一個(gè)全球擁有數(shù)十萬(wàn)的人員和數(shù)十億美元的產(chǎn)業(yè)。GIS已在全世界的中學(xué)、學(xué)院、大學(xué)里被講授。在每個(gè)領(lǐng)域里的專家不斷地意識(shí)到按地理的觀點(diǎn)來(lái)思考和工作所帶來(lái)的優(yōu)越性。本章先介紹GIS的組成,一些GIS系統(tǒng)中涉及的基本概念以及GIS應(yīng)具有的功能[2]。GIS發(fā)展歷史GIS系統(tǒng)起源于50年代。由于電子計(jì)算機(jī)科學(xué)的興起和它在測(cè)量學(xué)與地圖制圖學(xué)中的應(yīng)用,使人們開(kāi)始有可能用電子計(jì)算機(jī)來(lái)收集、存儲(chǔ)和處理各種與空間和地理分布有關(guān)的圖形和屬性數(shù)據(jù),并希望通過(guò)計(jì)算機(jī)對(duì)數(shù)據(jù)的分析來(lái)直接為管理和決策服務(wù)。1956年,奧地利測(cè)繪部門首先利用電子計(jì)算機(jī)建立了地籍?dāng)?shù)據(jù)庫(kù),隨后各國(guó)的土地測(cè)繪和管理部門都逐步發(fā)展土地信息系統(tǒng)(LIS)用于地籍管理。60年代為GIS開(kāi)拓期。1963年,加拿大測(cè)量學(xué)家R.F.Tomlinson首先提出地理信息系統(tǒng)這一術(shù)語(yǔ),并建立了世界上第一個(gè)GIS--加拿大地理信息系統(tǒng)(CGIS),用于自然資源的管理與規(guī)劃。本年代內(nèi),IBM公司和COLORADO公共服務(wù)公司開(kāi)始致力于用計(jì)算機(jī)工具管理公用事業(yè)的設(shè)施,也就是電力線、煤氣管道、閥門、儀表、土地等。緊接著的一個(gè)十年,其他人繼續(xù)挑戰(zhàn)"計(jì)算機(jī)化的設(shè)施管理"(FM),包括計(jì)算機(jī)制圖系統(tǒng),并且誕生了自動(dòng)制圖(AM)。FM、AM、計(jì)算機(jī)輔助設(shè)計(jì)(CAD)及數(shù)據(jù)庫(kù)管理(DatabaseManagement)等學(xué)科的發(fā)展為GIS技術(shù)的發(fā)展創(chuàng)造了條件。許多大學(xué)研制了GIS軟件包,如哈佛計(jì)算機(jī)圖形與空間分析實(shí)驗(yàn)室開(kāi)發(fā)了SYMAP系列軟件。早期的GIS發(fā)展的另一個(gè)顯著特點(diǎn)是許多與GIS有關(guān)的組織與機(jī)構(gòu)紛紛成立,對(duì)GIS知識(shí)傳播與技術(shù)發(fā)展起到重要的指導(dǎo)作用。進(jìn)入70年代,受計(jì)算機(jī)軟硬件技術(shù)飛速發(fā)展的促進(jìn),GIS技術(shù)朝實(shí)用化方向發(fā)展。一些發(fā)達(dá)國(guó)家先后建立了許多專業(yè)性的土地管理信息系統(tǒng)和地理信息系統(tǒng)。與此同時(shí),GIS軟件市場(chǎng)活躍。GIS技術(shù)受到政府部門、商業(yè)公司和大學(xué)的普遍重視,成為一個(gè)引人注目的領(lǐng)域。80年代是GIS普及和推廣應(yīng)用的階段。隨著圖形工作站和PC機(jī)性能價(jià)格比的大為提高,計(jì)算機(jī)和空間信息系統(tǒng)在許多部門被廣泛應(yīng)用。GIS軟硬件的發(fā)展使GIS應(yīng)用從空間數(shù)據(jù)管理向空間決策支持分析邁進(jìn)。GIS軟件研制和開(kāi)發(fā)也取得了很大成績(jī),涌現(xiàn)出一些有代表性的GIS軟件。進(jìn)入90年代,隨著地理信息產(chǎn)業(yè)的建立和數(shù)字化信息產(chǎn)品在全世界的普及,GIS深入到了各行各業(yè)乃至千家萬(wàn)戶,成為人們生產(chǎn)、生活、學(xué)習(xí)和工作中不可缺少的工具和助手。GIS國(guó)外發(fā)展現(xiàn)狀國(guó)外,尤其是西方地理信息系統(tǒng)的發(fā)展大致可以分為四個(gè)階段:模擬地理信息系統(tǒng)階段自19世紀(jì)以來(lái)就得到廣泛應(yīng)用的地圖(包括地形圖和專題圖)——模擬的圖形數(shù)據(jù)庫(kù)和描述地理的文獻(xiàn)著作——模擬的屬性數(shù)據(jù)庫(kù)相結(jié)合,構(gòu)成了地理信息系統(tǒng)的基本概念模型。但是,這種模擬式的、基于紙張的信息系統(tǒng)和信息過(guò)程,使得空間相關(guān)數(shù)據(jù)的存貯、管理、量算與分析、應(yīng)用極為不規(guī)范、不方便和效率低下。隨著計(jì)算機(jī)科學(xué)的興起,數(shù)字地理信息的管理與使用成為必然。學(xué)術(shù)探索階段50年代,由于電子技術(shù)的發(fā)展及其在測(cè)量與制圖學(xué)中的應(yīng)用,人們開(kāi)始有可能用電子計(jì)算機(jī)來(lái)收集、存貯和處理各種與空間和地理分布有關(guān)的圖形和屬性數(shù)據(jù)。1956年,奧地利測(cè)繪部門首先利用電子計(jì)算機(jī)建立了地籍?dāng)?shù)據(jù)庫(kù),隨后這一技術(shù)被各國(guó)廣泛應(yīng)用于土地測(cè)繪與地籍管理。1963年,加拿大測(cè)量學(xué)家自先提出地理信息系統(tǒng)這一術(shù)語(yǔ),并建立了世界上第一個(gè)地理信息系統(tǒng)——加拿大地理信息系統(tǒng)(CGIS),用于資源與環(huán)境的管理和規(guī)劃。稍后,北美和西歐成立了許多與GIS有關(guān)的組織與機(jī)構(gòu),如美國(guó)城市與區(qū)域信息系統(tǒng)協(xié)會(huì)(URISA),國(guó)際地理聯(lián)合會(huì)(IGU)地理數(shù)據(jù)收集和處理委員會(huì)(CGDPS),等等,極大地促進(jìn)了地理信息系統(tǒng)知識(shí)與技術(shù)的傳播和推廣應(yīng)用。飛速發(fā)展和推廣應(yīng)用階段70年代以后,由于計(jì)算機(jī)技術(shù)的工業(yè)化、標(biāo)準(zhǔn)化與實(shí)用化,以及大型商用數(shù)據(jù)庫(kù)系統(tǒng)的建立與使用,地理信息系統(tǒng)對(duì)地理空間數(shù)據(jù)的處理速度與能力取得突破性進(jìn)展。其結(jié)果是:一些發(fā)達(dá)國(guó)家先后建立了許多專業(yè)性的土地信息系統(tǒng)(LIS)和資源與環(huán)境信息系統(tǒng)(GIS),如1970年至1976年,美國(guó)地質(zhì)調(diào)查局先后建50多個(gè)信息系統(tǒng),其它國(guó)家也相繼發(fā)展自己的GIS;關(guān)于GIS軟件、硬件和項(xiàng)目開(kāi)發(fā)的商業(yè)公司篷勃發(fā)展。到1989年,國(guó)際市場(chǎng)上有報(bào)價(jià)的GIS軟件達(dá)70多個(gè),并出現(xiàn)一些有代表性的公司和產(chǎn)品,如美國(guó)環(huán)境系統(tǒng)研究所的ARC/INFO,Intergraph公司的MGE,及Genasys公司的Genamap等等。[3]數(shù)字地理信息的生產(chǎn)標(biāo)準(zhǔn)化、工業(yè)化和商品化。如美國(guó)地質(zhì)調(diào)查局(USGS)已經(jīng)建立起數(shù)字地圖生產(chǎn)技術(shù)體系,可定期向社會(huì)發(fā)布DLG、DEM等標(biāo)準(zhǔn)地理數(shù)據(jù)。各種通用和專用的地理空間分析模型得到深入研究和廣泛使用,GIS的空間分析能力顯著增強(qiáng)。有關(guān)GIS的具有技術(shù)權(quán)威和行政權(quán)威的行業(yè)機(jī)構(gòu)和研究部門在GIS的應(yīng)用發(fā)展中發(fā)揮引導(dǎo)和驅(qū)動(dòng)作用。如美國(guó)國(guó)家科學(xué)基金會(huì)支持的國(guó)家地理信息和分析中心(NCGIA)每年都要制定GIS技術(shù)優(yōu)先發(fā)展計(jì)劃,以促進(jìn)全國(guó)GIS事業(yè)發(fā)展。地理信息產(chǎn)業(yè)的形成和社會(huì)化地理信息系統(tǒng)(SocialGIS)的出現(xiàn)90年代以來(lái),隨著互聯(lián)網(wǎng)絡(luò)的發(fā)展及國(guó)民經(jīng)濟(jì)信息化的推進(jìn),地理信息系統(tǒng)作為大的地理信息中心,進(jìn)入日常辦公室和千家萬(wàn)戶之中,從面向?qū)I(yè)領(lǐng)域的項(xiàng)目開(kāi)發(fā)到綜合性城市與區(qū)域的可持續(xù)發(fā)展研究,從政府行為、學(xué)術(shù)行為發(fā)展到公民行為和信息民主,成為信息社會(huì)的重要技術(shù)基礎(chǔ)。GIS國(guó)內(nèi)發(fā)展現(xiàn)狀我國(guó)對(duì)GIS的研究起步較晚,但是近二十年來(lái),我國(guó)的地理信息系統(tǒng)事業(yè)突飛猛進(jìn),成績(jī)巨大。我國(guó)GIS的發(fā)展可以劃分為四個(gè)階段。起步階段(1978-1980年)主要行動(dòng)在于概念引入和知識(shí)傳播,以及關(guān)于遙感分析、制圖和數(shù)字地面模型的試驗(yàn)研究。準(zhǔn)備階段(1980-1985年)主要在理論體系的建立,軟、硬件的引進(jìn),相應(yīng)規(guī)范的研究,局部系統(tǒng)或試驗(yàn)系統(tǒng)的開(kāi)發(fā)上取得進(jìn)步,為GIS的全面發(fā)展奠定基礎(chǔ)。加速發(fā)展階段(1986-1995年)GIS作為一個(gè)全國(guó)性的研究與應(yīng)用領(lǐng)域,進(jìn)行了有計(jì)劃、有目標(biāo)、有組織的科學(xué)試驗(yàn)與工程建設(shè),取得一定的社會(huì)經(jīng)濟(jì)效益。主要表現(xiàn)在:GIS教育與知識(shí)傳播的熱浪此起彼伏,GIS成為空間相關(guān)領(lǐng)域的熱門話題;GIS建設(shè)引起各級(jí)政府高度重視,其發(fā)展機(jī)制由學(xué)術(shù)推動(dòng)演變?yōu)檎苿?dòng);部分城市和沿海地區(qū)GIS建設(shè)率先進(jìn)入實(shí)施階段,并取得階段性成果;出現(xiàn)商品化的國(guó)產(chǎn)GIS軟件、硬件品牌;出現(xiàn)專門的GIS的管理中心、研究機(jī)構(gòu)與公司;出現(xiàn)專門的GIS協(xié)會(huì),涌現(xiàn)一批GIS專門人才;出現(xiàn)專門的刊物與展示會(huì);初步形成全國(guó)性的GIS市場(chǎng)。在應(yīng)用模式、行業(yè)模式和管理方面作了有益的探索。地理信息產(chǎn)業(yè)化階段(1995-現(xiàn)在)目前,我國(guó)GIS的發(fā)展正處于向產(chǎn)業(yè)化階段過(guò)渡的轉(zhuǎn)折點(diǎn)。能否借助國(guó)際大氣候的東風(fēng),倚重國(guó)內(nèi)經(jīng)濟(jì)高速發(fā)展的大好形勢(shì),搭乘全球信息高速公路的快車,實(shí)現(xiàn)地理信息產(chǎn)業(yè)化和國(guó)民經(jīng)濟(jì)信息化,這是國(guó)內(nèi)地理信息界人士面臨的嚴(yán)重挑戰(zhàn)和千載難逢的機(jī)遇。而在這一過(guò)程中,一方面需要探索建立一套政府宏觀調(diào)控與市場(chǎng)機(jī)制相結(jié)合的地理信息產(chǎn)業(yè)模式,另一方面,則要充分總結(jié)和借鑒國(guó)內(nèi)外地理信息系統(tǒng)項(xiàng)目建設(shè)的經(jīng)驗(yàn)和教訓(xùn),建立起行之有效的地理信息系統(tǒng)工程學(xué)的理論、方法與管理模式,推動(dòng)地理信息系統(tǒng)在社會(huì)主義各項(xiàng)事業(yè)中更加深入和廣泛的應(yīng)用。GIS系統(tǒng)概述GIS的組成GIS由三個(gè)主要的元素所構(gòu)成:硬件、軟件、數(shù)據(jù)。硬件硬件是GIS所操作的計(jì)算機(jī)。今天,GIS軟件可以在很多類型的硬件上運(yùn)行。從中央計(jì)算機(jī)服務(wù)器到桌面計(jì)算機(jī),從單機(jī)到網(wǎng)絡(luò)環(huán)境。軟件GIS軟件提供所需的存儲(chǔ)、分析和顯示地理信息的功能和工具。主要的軟件部件有:輸入和處理地理信息的工具數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)支持地理查詢、分析和視覺(jué)化的工具容易使用這些工具的圖形化界面(GUI)數(shù)據(jù)一個(gè)GIS系統(tǒng)中最重要的部件就是數(shù)據(jù)。地理數(shù)據(jù)和相關(guān)的表格數(shù)據(jù)可以自己采集或者從商業(yè)數(shù)據(jù)提供者處購(gòu)買。GIS將把空間數(shù)據(jù)和其他數(shù)據(jù)源的數(shù)據(jù)集成在一起,而且可以使用那些被大多數(shù)公司用來(lái)組織和保存數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng),來(lái)管理空間數(shù)據(jù)。本系統(tǒng)中所使用的數(shù)據(jù)是由USGS(UnitedStatesGeologicalSurvey)提供的美國(guó)行政區(qū)的數(shù)據(jù)。GIS的主要功能一個(gè)GIS系統(tǒng)應(yīng)具備五項(xiàng)基本功能,即數(shù)據(jù)輸入、數(shù)據(jù)編輯、數(shù)據(jù)存貯與管理、空間查詢與空間分析、可視化表達(dá)與輸出。數(shù)據(jù)輸入數(shù)據(jù)輸入是建立地理數(shù)據(jù)庫(kù)必須的過(guò)程。數(shù)據(jù)輸入功能指將地圖數(shù)據(jù)、物化遙數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)和文字報(bào)告等輸入、轉(zhuǎn)換成計(jì)算機(jī)可處理的數(shù)字形式的各種功能。對(duì)多種形式、多種來(lái)源的信息,可實(shí)現(xiàn)多種方式的數(shù)據(jù)輸入,如圖形數(shù)據(jù)輸入、柵格數(shù)據(jù)輸入、GPS測(cè)量數(shù)據(jù)輸入、屬性數(shù)據(jù)輸入等。數(shù)據(jù)編輯數(shù)據(jù)編輯主要包括圖形編輯和屬性編輯。屬性編輯主要與數(shù)據(jù)庫(kù)管理結(jié)合在一起完成,圖形編輯主要包括拓?fù)潢P(guān)系建立、圖形編輯、圖形整飾、圖幅拼接、圖形變換、投影變換、誤差校正等功能。數(shù)據(jù)的存儲(chǔ)與管理數(shù)據(jù)的有效組織與管理,是GIS系統(tǒng)應(yīng)用成功與否的關(guān)鍵。主要提供空間與非空間數(shù)據(jù)的存儲(chǔ)、查詢檢索、修改和更新的能力。矢量數(shù)據(jù)結(jié)構(gòu)、光柵數(shù)據(jù)結(jié)構(gòu)、矢柵一體化數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)GIS的主要數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)的選擇在相當(dāng)程度上決定了系統(tǒng)所能執(zhí)行的功能。數(shù)據(jù)結(jié)構(gòu)確定后,在空間數(shù)據(jù)的存儲(chǔ)與管理中,關(guān)鍵是確定應(yīng)用系統(tǒng)空間與屬性數(shù)據(jù)庫(kù)的結(jié)構(gòu)以及空間與屬性數(shù)據(jù)的連接。目前廣泛使用的GIS軟件大多數(shù)采用空間分區(qū)、專題分層的數(shù)據(jù)組織方法,用GIS管理空間數(shù)據(jù),用關(guān)系數(shù)據(jù)庫(kù)管理屬性數(shù)據(jù)。空間查詢與分析空間查詢與分析是GIS的核心,是GIS最重要的和最具有魅力的功能,也是GIS有別于其他信息系統(tǒng)的本質(zhì)特征。地理信息系統(tǒng)的空間分析可分為三個(gè)層次的內(nèi)容:空間檢索:包括從空間位置檢索空間物體及其屬性、從屬性條件檢索空間物體空間拓?fù)浏B加分析:實(shí)現(xiàn)空間特征(點(diǎn)、線、面或圖像)的相交、相減、合并等,以及特征屬性在空間上的連接空間模型分析:如數(shù)字地形高程分析、BUFFER分析、網(wǎng)絡(luò)分析、圖像分析、三維模型分析、多要素綜合分析及面向?qū)I(yè)應(yīng)用的各種特殊模型分析等??梢暬磉_(dá)與輸出中間處理過(guò)程和最終結(jié)果的可視化表達(dá)是GIS的重要功能之一。通常以人機(jī)交互方式來(lái)選擇顯示的對(duì)象與形式,對(duì)于圖形數(shù)據(jù),根據(jù)要素的信息密集程度,可選擇放大或縮小顯示。GIS不僅可以輸出全要素地圖,也可以根據(jù)用戶需要,分層輸出各種專題圖、各類統(tǒng)計(jì)圖、圖表及數(shù)據(jù)等。GIS系統(tǒng)的一些基本概念地理信息系統(tǒng)(GIS)地理信息系統(tǒng)[4](GeographicInformationSystem,簡(jiǎn)稱GIS)是一種以采集、貯存、管理、分析和描述整個(gè)或部分地球表面與空間地理分布有關(guān)數(shù)據(jù)的空間信息系統(tǒng)。在現(xiàn)代信息社會(huì)里,GIS作為一種集地理空間特征和各種統(tǒng)計(jì)信息為一體的特殊信息系統(tǒng),是信息高速公路上的節(jié)點(diǎn)和基礎(chǔ)設(shè)施,受到全社會(huì)的廣泛關(guān)注,成為目前國(guó)內(nèi)外地學(xué)領(lǐng)域熱門的研究課題。GIS在人們的生活中占據(jù)著越來(lái)越重要的地位,在環(huán)境保護(hù)與管理,社會(huì)調(diào)查與統(tǒng)計(jì)分析,城市基礎(chǔ)設(shè)施管理,城市規(guī)劃、房地產(chǎn)開(kāi)發(fā)及物業(yè)管理、商業(yè)開(kāi)發(fā)與購(gòu)物中心設(shè)置、資源調(diào)查、災(zāi)害預(yù)報(bào)與災(zāi)后評(píng)估、金融機(jī)構(gòu)與投資分析、地質(zhì)普查、采礦等等方面,GIS都能夠發(fā)揮巨大的作用,提高人們的生產(chǎn)力。地理參照系統(tǒng)(SpatialReferenceSystem)地理信息包含有明確的地理參照系統(tǒng)[3],例如經(jīng)度和緯度坐標(biāo),或者是國(guó)家網(wǎng)格坐標(biāo)。也可以包含間接的地理參照系統(tǒng),例如地址、郵政編碼、人口普查區(qū)名、森林位置識(shí)別、路名等。一種叫做地理編碼的自動(dòng)處理系統(tǒng)用來(lái)從間接的參照系統(tǒng),如地址描述,轉(zhuǎn)變成明確的地理參照系統(tǒng),如多重定位。這些地理參考系統(tǒng)可以使你定位一些特征,例如商業(yè)活動(dòng)、森林位置,也可以定位一些事件,例如地震,用于做地表分析。本系統(tǒng)主要使用橫軸墨卡托投影,也稱高斯投影坐標(biāo)系。矢量和柵格模式(VectorandRasterModel)地理信息系統(tǒng)工作于兩種不同的基本地理模式——矢量模式和柵格模式。在矢量模式中,關(guān)于點(diǎn)、線和多邊形的信息被編碼并以x、y坐標(biāo)形式儲(chǔ)存。一個(gè)點(diǎn)特征的定位,例如一個(gè)鉆孔,可以被一個(gè)單一的x、y坐標(biāo)所描述。線特征,例如公路和河流,可以被存儲(chǔ)于一系列的點(diǎn)坐標(biāo)。多邊形特征,例如銷售地域或河流聚集區(qū)域,可以被存儲(chǔ)于一個(gè)閉合循環(huán)的坐標(biāo)系。矢量模式非常有利于描述一些離散特征,但對(duì)連續(xù)變化的特征,例如土壤類型或趕往醫(yī)院的開(kāi)銷等,就不太有用。柵格模式發(fā)展為連續(xù)特征的模式。柵格圖象包含有網(wǎng)格單元,有點(diǎn)像掃描的地圖或照片。不管是矢量模式還是柵格模式,用來(lái)存儲(chǔ)地理數(shù)據(jù),都有優(yōu)點(diǎn)和缺陷?,F(xiàn)代的GIS都可以處理這兩種模式。在本系統(tǒng),數(shù)據(jù)的主要表現(xiàn)模型為矢量格式,以方便以后系統(tǒng)的擴(kuò)展和對(duì)空間數(shù)據(jù)的分析,柵格數(shù)據(jù)主要用于提供地圖的美化,比如地形,植被信息。空間數(shù)據(jù)庫(kù)(SpatialDatabase)和以往的ORDBMS(Object-RelationDatabaseManagementSystem)不同,GIS系統(tǒng)所使用的數(shù)據(jù)具有空間特性,所以平常的數(shù)據(jù)庫(kù)并不能滿足它的需求,空間數(shù)據(jù)庫(kù)[2]就隨之產(chǎn)生了??臻g數(shù)據(jù)庫(kù)(SDB)能夠存儲(chǔ)海量的空間數(shù)據(jù),并且能夠?qū)λ鼈冞M(jìn)行良好的組織,同時(shí),空間數(shù)據(jù)庫(kù)提供了各種適合空間數(shù)據(jù)庫(kù)的索引方式(R-Tree等等)來(lái)提高對(duì)空間數(shù)據(jù)的操作速度,從而提高整體系統(tǒng)的性能。當(dāng)前主流的空間數(shù)據(jù)庫(kù)有OracleSpatialExtension,MySQLSpatialExtension,Postgresql的PostGIS。由于Postgresql能夠良好的支持OODBMS(Object-OrientedDatabaseManagementSystem),并且它是一個(gè)免費(fèi),開(kāi)源的產(chǎn)品,本系統(tǒng)采用的Postgresql的PostGIS來(lái)作為數(shù)據(jù)服務(wù)器。OpenGISConsortium(OGC,開(kāi)放空間協(xié)會(huì))1994年,一些GIS團(tuán)體共同發(fā)起了一個(gè)旨在發(fā)布地理信息系統(tǒng)標(biāo)準(zhǔn)的組織——“Open

GIS

Consortium

GIS(OGC[14])”。在這之前由于缺乏統(tǒng)一的標(biāo)準(zhǔn),在組織內(nèi)部的GIS技術(shù)很難與其它信息系統(tǒng)相集成,在系統(tǒng)與系統(tǒng)間,系統(tǒng)與用戶間以及用戶與用戶間共享GIS數(shù)據(jù)需要花費(fèi)相當(dāng)大的時(shí)間和精力?,F(xiàn)在OGC有超過(guò)200個(gè)會(huì)員單位,OGC希望能夠完整地將GIS數(shù)據(jù)和技術(shù)集成進(jìn)主流的計(jì)算機(jī)技術(shù)中,能夠在信息基礎(chǔ)設(shè)施建設(shè)中推廣符合標(biāo)準(zhǔn)技術(shù)的GIS軟件,并將其貫穿系統(tǒng)的始終。OGC的成員包括世界領(lǐng)先技術(shù)的軟件公司,通訊公司,計(jì)算機(jī)制造廠商,系統(tǒng)集成商等。本文的結(jié)構(gòu)本文的其他章節(jié)如下:第二章講述了整個(gè)GIS系統(tǒng)的設(shè)計(jì)目的以及系統(tǒng)的整體架構(gòu)。第三章講述了系統(tǒng)中幾個(gè)核心組成部分的設(shè)計(jì)和實(shí)現(xiàn)方法。第四章講述了MyGIS系統(tǒng)以后可以進(jìn)行的工作以及需要改進(jìn)的部分。最后,進(jìn)行全文的總結(jié),并附上一些示例的源代碼。MyGIS系統(tǒng)架構(gòu)設(shè)計(jì)MyGIS系統(tǒng)選型目前的GIS產(chǎn)品越來(lái)越豐富。根據(jù)當(dāng)前GIS系統(tǒng)的架構(gòu)和應(yīng)用特點(diǎn),現(xiàn)在主要有這樣幾種類型:組件(Components)GIS:ComponentsGIS是一種新的GIS開(kāi)發(fā)思想,它是將GIS功能分散制作成ActiveXControl和Automation,這些標(biāo)準(zhǔn)的ActiveXControl和Automation可以被任何支持它們的開(kāi)發(fā)環(huán)境調(diào)用,以便在原有的或新開(kāi)發(fā)的信息系統(tǒng)中加入GIS功能。目前國(guó)際上比較流行的ComponentsGIS軟件有ESRI的MapObjects,MapInfo公司的MapX等。WebGIS:信息高速公路的建立極大地方便了世界各地用戶間信息交換與信息查詢。由于GIS能提供豐富的空間查詢、空間分析及屬性管理功能,因此GIS正在成為Internet(國(guó)際互聯(lián)網(wǎng))或Intranet(企業(yè)局域網(wǎng))的一個(gè)主要內(nèi)容。建立InternetGIS的主要目的在于以下幾個(gè)方面:遠(yuǎn)距離空間數(shù)據(jù)共享與信息查詢和交換;為公眾提供GIS服務(wù);建立大規(guī)模甚至超大規(guī)模的空間網(wǎng)絡(luò)信息系統(tǒng);為其它學(xué)科的研究提供基礎(chǔ)信息資料。 當(dāng)前國(guó)內(nèi)流行的WebGIS有GoogleMap,BaiduMap,丁丁地圖等等。DataWarehousing(數(shù)據(jù)倉(cāng)庫(kù)):DataWarehousing的字面意思是建立數(shù)據(jù)倉(cāng)庫(kù)。由于空間數(shù)據(jù)量非常大,這些數(shù)據(jù)大都分散在政府和私人機(jī)構(gòu)及公司的各個(gè)部門,數(shù)據(jù)的管理與使用變得非常的復(fù)雜。但同時(shí)由于這些空間數(shù)據(jù)具有極大的科學(xué)和經(jīng)濟(jì)價(jià)值,因此大多數(shù)發(fā)達(dá)國(guó)家都比較重視空間數(shù)據(jù)庫(kù)的建庫(kù)工作,在這些國(guó)家一般都有許多研究機(jī)構(gòu)和政府部門參與到空間數(shù)據(jù)庫(kù)建立的研究工作中。目前在北美、歐洲、澳大利亞等國(guó)提出了SDI或NSDI的概念。SDI的全稱是SpatialDataInfrastructure,NSDI的含義是NationalSpatialDataInfrastructure,其字面意思是(國(guó)家)空間數(shù)據(jù)基礎(chǔ)設(shè)施。98年6月份在加拿大首都渥太華召開(kāi)的第十屆國(guó)際地理信息工程學(xué)術(shù)會(huì)議更把SDI作為本次會(huì)議的主題,可見(jiàn)國(guó)際上對(duì)地理空間數(shù)據(jù)基礎(chǔ)設(shè)施建設(shè)的重視。3DGIS:地球以及各種物體都是以三維空間的形式存在的,因此目前二維GIS技術(shù)或二維半(平面X,Y坐標(biāo)加高程)GIS對(duì)于完整的描述地球上的對(duì)象是有一定限制的。需要用三維空間來(lái)描述的應(yīng)用領(lǐng)域有如下幾個(gè)方面:氣象學(xué)、地質(zhì)學(xué)、采礦學(xué)、石油勘探與開(kāi)發(fā)、計(jì)算機(jī)輔助設(shè)計(jì)與制造(CAD/CAM)、醫(yī)學(xué)影像和機(jī)器人學(xué)等。一個(gè)三維GIS空間信息系統(tǒng)應(yīng)該能夠模擬、表示、管理、分析與三維實(shí)體相關(guān)的信息,并提供決策支持。時(shí)態(tài)GIS(TemporalGIS):時(shí)空GIS采集、存儲(chǔ)、管理、分析與顯示地理實(shí)體隨時(shí)間變化信息(或時(shí)空信息)。它不僅包含傳統(tǒng)地理信息系統(tǒng)的空間特性,而且涵蓋時(shí)間特性;它不僅反映事物和現(xiàn)象的存在狀態(tài),而且表達(dá)其發(fā)展變化過(guò)程及規(guī)律。時(shí)態(tài)GIS的操作對(duì)象是時(shí)空信息,其特點(diǎn)是在系統(tǒng)中增加對(duì)時(shí)間維的分析表達(dá)能力,提供歷史分析與趨勢(shì)分析的功能。本系統(tǒng)(以下稱MyGIS)旨在建立一個(gè)通用的GIS后臺(tái)服務(wù)器,與前端的GIS客戶端(組件GIS,WebGIS等)進(jìn)行交互,解析客戶端的請(qǐng)求,向后端的GIS數(shù)據(jù)源(GIS數(shù)據(jù)倉(cāng)庫(kù))提取數(shù)據(jù)(二維,三維的地理信息),分析數(shù)據(jù)并返回相應(yīng)的結(jié)果,通過(guò)提高系統(tǒng)的可擴(kuò)展性,能夠支持二維,三維,以致未來(lái)的更新的GIS應(yīng)用(時(shí)態(tài)GIS)。空間對(duì)象的WKB和WKT標(biāo)準(zhǔn)表達(dá)方式WKB(theWell-KnownBinary),WKT(theWell-KnownText)是OGC定義的表述空間對(duì)象的標(biāo)準(zhǔn)方式。BNF(巴科斯范式)BNF定義和內(nèi)容BNF(巴科斯范式)是“BackusNaurForm”的縮寫。JohnBackus和PeterNaur首次引入的一種形式化符號(hào)來(lái)描述給定語(yǔ)言的語(yǔ)法。BNF包括下面幾點(diǎn)內(nèi)容在雙引號(hào)中的字("word")代表著這些字符本身。而double_quote用來(lái)代表雙引號(hào)。在雙引號(hào)外的字(有可能有下劃線)代表著語(yǔ)法部分。尖括號(hào)(<>)內(nèi)包含的為必選項(xiàng)。方括號(hào)([])內(nèi)包含的為可選項(xiàng)。大括號(hào)({})內(nèi)包含的為可重復(fù)0至無(wú)數(shù)次的項(xiàng)。豎線(|)表示在其左右兩邊任選一項(xiàng),相當(dāng)于"OR"的意思。::=是“被定義為”的意思。WKT中BNF的定義WKT對(duì)大小寫敏感,并且下面的表達(dá)式定義了空間對(duì)象的WKB表達(dá)式中可能用到的符號(hào)或者關(guān)鍵字:<x>::=<有符號(hào)數(shù)字><y>::=<有符號(hào)數(shù)字><z>::=<有符號(hào)數(shù)字><m>::=<有符號(hào)數(shù)字><“名稱”>::=<雙引號(hào)><name><雙引號(hào)><名稱>::=<字符><字符>::=(<字符>)*<字符>::=<英文字母>|<數(shù)字>|<特殊符號(hào)><英文字母>::=<英文大寫字母>|<英文小寫字母><有符號(hào)的數(shù)字>::={<符號(hào)>}<無(wú)符號(hào)數(shù)字><無(wú)符號(hào)數(shù)字>::=<準(zhǔn)確數(shù)值>|<近似數(shù)值><近似數(shù)值>::=<尾數(shù)>E<指數(shù)><尾數(shù)>::=<準(zhǔn)確數(shù)值><指數(shù)>::=<有符號(hào)的整數(shù)><準(zhǔn)確數(shù)值>::=<無(wú)符號(hào)的整數(shù)>{<小數(shù)點(diǎn)>{<無(wú)符號(hào)的整數(shù)>}}|<小數(shù)點(diǎn)><無(wú)符號(hào)的整數(shù)><有符號(hào)整數(shù)>::={<符號(hào)>}<無(wú)符號(hào)的整數(shù)><無(wú)符號(hào)的整數(shù)>::=(<數(shù)字>)*<左分隔符>::=<左小括號(hào)>|<左中括號(hào)><右分隔符>::=<右小括號(hào)>|<右中括號(hào)><特殊字符>::=<右小括號(hào)>|<左小括號(hào)>|<負(fù)號(hào)>|<下劃線>|<句號(hào)>|<引號(hào)>|<空格><符號(hào)>::=<加號(hào)>|<負(fù)號(hào)><小數(shù)點(diǎn)>::=<句號(hào)>|<逗號(hào)><空>::=EMPTY<負(fù)號(hào)>::=-<左小括號(hào)>::=(<右小括號(hào)>::=)<左中括號(hào)>::=[<右中括號(hào)>::=]<句號(hào)>::=.<加號(hào)>::=+<雙引號(hào)>::="<引號(hào)>::='<逗號(hào)>::=,<下劃線>::=_<數(shù)字>::=0|1|2|3|4|5|6|7|8|9<英文小寫字母>::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z<英文大寫字母>::=A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z<空格>=""WKT規(guī)范每一個(gè)空間對(duì)象類型都有一種相應(yīng)的WKT(Well-knownTextRepresentation)表現(xiàn)形式,用來(lái)構(gòu)建一個(gè)新的類型對(duì)象實(shí)例以及把一個(gè)空間對(duì)象轉(zhuǎn)換成文字表述形式??臻g對(duì)象的WKT形式是由BNF(Backus-NaurForm,巴科斯范式)來(lái)定義的。二維空間對(duì)象的WKT表示:附錄A中的BNF表達(dá)式定義了在二維坐標(biāo)系中的空間對(duì)象(多面體的表面除外)示例下表給出了一些使用WKT來(lái)表示幾何對(duì)象的例子。坐標(biāo)點(diǎn)是以整數(shù)為單位表2.1使用WKT來(lái)表示幾何對(duì)象幾何對(duì)象類型WKT表示注釋PointPoint(1010)一個(gè)點(diǎn)LineStringLineString(1010,2020,3040)一個(gè)帶有三個(gè)點(diǎn)的線PolygonPolygon((1010,1020,2020,2015,1010))一個(gè)有一個(gè)外環(huán)和零個(gè)內(nèi)環(huán)的多邊形MultipointMultiPoint((1010),(2020))一個(gè)有兩個(gè)點(diǎn)的多點(diǎn)MultiLineStringMultiLineString((1010,2020),(1515,3015))一個(gè)有兩條線的多線MultiPolygonMultiPolygon(((1010,1020,2020,2015,1010)),((6060,7070,8060,6060)))一個(gè)有兩個(gè)多邊形的多多邊形GeomCollectionGeometryCollection(POINT(1010),POINT(3030),LINESTRING(1515,2020))一個(gè)有兩個(gè)點(diǎn)和一條線的幾何對(duì)象集合PolyhedralSurfacePolyhedralSurfaceZ(((000,001,011,010,000)),((000,010,110,100,000)),((000,100,101,001,000)),((110,111,101,100,110)),((010,011,111,110,010)),((001,101,111,011.001)))一個(gè)原點(diǎn)在(0,0,0),相反點(diǎn)在(1,1,1)的多面體TinTinZ(((000,001,010,000)),((000,010,100,000)),((000,100,001,000)),((100,010,001,100)),)一個(gè)在原點(diǎn)(0,0,0),大小為1的四面體PolyhedralSurfacePolyhedralSurfaceZ(((000,001,011,010,000)),((000,010,110,100,000)),((000,100,101,001,000)),((110,111,101,100,110)),((010,011,111,110,010)),((001,101,111,011.001)))一個(gè)原點(diǎn)在(0,0,0),相反點(diǎn)在(1,1,1)的多面體TinTinZ(((000,001,010,000)),((000,010,100,000)),((000,100,001,000)),((100,010,001,100)),)一個(gè)在原點(diǎn)(0,0,0),大小為1的四面體WKB規(guī)范幾何對(duì)象的WKB(Well-knownBinaryRepresentation)表述方法提供了一個(gè)可移植的將幾何對(duì)象表述為連續(xù)的字節(jié)流的方法。它允許幾何對(duì)象在SQL客戶端和SQL服務(wù)器之間以二進(jìn)制的形式傳輸。介紹幾何對(duì)象的WKB形式是通過(guò)先將幾何對(duì)象序列化成一個(gè)數(shù)字序列(無(wú)符號(hào)整型,浮點(diǎn)型),然后再將它們序列化成為一個(gè)字節(jié)的序列來(lái)實(shí)現(xiàn)的。這些字符的序列使用兩種編碼方式中的一種進(jìn)行編碼(NDR,XDR)。這兩種編碼方式的唯一區(qū)別就是字節(jié)順序,XDR是BigEndian順序,NDR是LittleEndian順序。數(shù)值類型定義一個(gè)無(wú)符號(hào)的整型是一個(gè)32位(4個(gè)字節(jié))的數(shù)據(jù)類型,它表示在0到4394967295之間的一個(gè)非負(fù)數(shù)。一個(gè)浮點(diǎn)型(Double)是一個(gè)64位(8個(gè)字節(jié))的雙精度數(shù)據(jù)類型,他使用IEEE754雙精度格式來(lái)表示一個(gè)雙精度數(shù)值。以上的定義對(duì)XDR和NDR是相同的。幾何類型的編碼表圖2.1是對(duì)GIS中所有幾何類型的編碼表,代碼用整數(shù)表示,并且其中灰色的代碼表示為以后所預(yù)留的代碼。 圖2.1幾何對(duì)象的編碼表對(duì)于數(shù)字類型的XDR編碼和NDR編碼一個(gè)無(wú)符號(hào)整型的XDR編碼是BigEndian形式。 一個(gè)浮點(diǎn)型的XDR編碼是BigEndian形式。一個(gè)無(wú)符號(hào)整型的NDR編碼是LittleEndian形式。一個(gè)浮點(diǎn)型的NDR編碼是LittleEndian形式。幾何對(duì)象的WKB表示方法的描述幾何對(duì)象的WKB表示方法見(jiàn)附錄B。其中的基本單位是包括兩個(gè)浮點(diǎn)型的點(diǎn)。其他幾何對(duì)象的表示方法都是基于點(diǎn)來(lái)描述的。圖2.2是一個(gè)帶有兩條線的多邊形的例子1:多邊形對(duì)象 B:字節(jié)順序2:第一條線對(duì)象 T:對(duì)象類型編碼3:第二條線對(duì)象 NR:線的條數(shù) NP:點(diǎn)的個(gè)數(shù)圖2.2一個(gè)使用WKB表示的幾何對(duì)象的例子MyGIS系統(tǒng)架構(gòu)MyGIS服務(wù)器從系統(tǒng)的應(yīng)用層次結(jié)構(gòu)上來(lái)說(shuō),屬于GIS應(yīng)用服務(wù)器[9](ApplicationServer),處在整個(gè)系統(tǒng)的中間部分,能夠接受上層的請(qǐng)求(WebRequest,富客戶端的API調(diào)用或者其他GIS服務(wù)器的請(qǐng)求)并解析,將請(qǐng)求分配到相應(yīng)的下層系統(tǒng)(空間數(shù)據(jù)庫(kù),其他的GIS服務(wù)器)獲取數(shù)據(jù)并分析數(shù)據(jù),得到相應(yīng)的結(jié)果并返回。整個(gè)系統(tǒng)架構(gòu)如圖2.2:圖2.2GIS服務(wù)器的整體體系結(jié)構(gòu)在圖2.2中,客戶端(Web,PC,GISServer)能夠發(fā)送的請(qǐng)求包括:地圖請(qǐng)求:這是最通用的功能,請(qǐng)求一個(gè)區(qū)域的地圖數(shù)據(jù)(一個(gè)帶有比例尺經(jīng)緯度的矩形區(qū)域),并且希望服務(wù)器返回客戶端所希望形式的響應(yīng)(一段帶有地圖圖片的二進(jìn)制流,或者生成好的地圖圖片文件,或者一個(gè)包含了所請(qǐng)求數(shù)據(jù)的數(shù)據(jù)集)空間分析請(qǐng)求:客戶端通過(guò)發(fā)送一個(gè)空間分析請(qǐng)求(比如:A道路與B道路是否空間相接,在A城市里面有幾個(gè)醫(yī)院等等),由MyGIS服務(wù)器分析,并且返回相應(yīng)的回復(fù)??臻g計(jì)算請(qǐng)求:計(jì)算從A地點(diǎn)到B地點(diǎn)的最近路線,或者搭乘公交車的最近路線等等??臻g數(shù)據(jù)更新請(qǐng)求:隨著時(shí)間的變化,MyGIS服務(wù)器的數(shù)據(jù)可能不能真實(shí)的表達(dá)當(dāng)前真實(shí)世界的情況。客戶端可以通過(guò)發(fā)送一個(gè)請(qǐng)求,修改MyGIS服務(wù)器中的一段數(shù)據(jù),MyGIS服務(wù)器進(jìn)行數(shù)據(jù)驗(yàn)證之后,提交修改請(qǐng)求來(lái)保持GIS數(shù)據(jù)的更新程度。而服務(wù)器通過(guò)解析數(shù)據(jù),計(jì)算數(shù)據(jù),以客戶端希望的形式返回相應(yīng)的結(jié)果(二進(jìn)制流,XML文件,圖片等等)同時(shí),在部署方面,如果一個(gè)系統(tǒng)由于客戶端數(shù)量增加,服務(wù)器的壓力過(guò)大,可以通過(guò)部署多個(gè)MyGIS服務(wù)器來(lái)進(jìn)行負(fù)載均衡,因?yàn)镸yGIS服務(wù)器同時(shí)也是一個(gè)客戶端,可以向其他兼容OGC標(biāo)準(zhǔn)的GIS服務(wù)器發(fā)送請(qǐng)求,這樣就能夠在自己負(fù)載過(guò)重的情況下,把請(qǐng)求分配到其他兼容OGC標(biāo)準(zhǔn)的GIS服務(wù)器上去,減少系統(tǒng)響應(yīng)時(shí)間,提高系統(tǒng)的整體速度??偠灾@樣的系統(tǒng)總體架構(gòu)能夠得到良好的可擴(kuò)展性,并且使得現(xiàn)有的GIS資源能夠得到最大效率的利用,在系統(tǒng)負(fù)載增加的情況下,可以通過(guò)增加MyGISServer來(lái)得到性能的提高,并且也能夠使得整個(gè)系統(tǒng)的負(fù)載得到均衡,不至于出現(xiàn)系統(tǒng)瓶頸。MyGIS主要組成部分現(xiàn)在的MyGIS服務(wù)器主要由以下幾個(gè)部分組成:MyGIS對(duì)象層次結(jié)構(gòu)在GIS內(nèi)部,為了系統(tǒng)的可擴(kuò)展性和可維護(hù)性,實(shí)現(xiàn)了一個(gè)MyGISObjectHierarchy,它把GIS數(shù)據(jù)封裝到相應(yīng)的類的對(duì)象里面,并且提供相應(yīng)的接口,通過(guò)遵循面向?qū)ο蟮拈_(kāi)發(fā)思想,使得對(duì)于GIS對(duì)象的一些操作都能過(guò)在這個(gè)部分里面得到實(shí)現(xiàn)。數(shù)據(jù)庫(kù)擴(kuò)展和數(shù)據(jù)庫(kù)接口(PostGIS[12])PostGIS簡(jiǎn)介PostGIS是對(duì)象關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)PostgreSQL[15]的一個(gè)擴(kuò)展,PostGIS提供如下空間信息服務(wù)功能:空間對(duì)象、空間索引、空間操作函數(shù)和空間操作符。同時(shí),PostGIS遵循OpenGIS的規(guī)范。PostGIS的版權(quán)被納入到GNU的GPL中,也就是說(shuō)任何人可以自由得到PostGIS的源碼并對(duì)其做研究和改進(jìn)。正是由于這一點(diǎn),PostGIS得到了迅速的發(fā)展,越來(lái)越多的愛(ài)好者和研究機(jī)構(gòu)參與到PostGIS的應(yīng)用開(kāi)發(fā)和完善當(dāng)中。PostGIS特性PostGIS支持所有的空間數(shù)據(jù)類型,這些類型包括:點(diǎn)(POINT)、線(LINESTRING)、多邊形(POLYGON)、多點(diǎn)(MULTIPOINT)、多線(MULTILINESTRING)、多多邊形(MULTIPOLYGON)和集合對(duì)象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的對(duì)象表達(dá)方法,比如WKT和WKB。PostGIS支持所有的數(shù)據(jù)存取和構(gòu)造方法,如GeomFromText()、AsBinary(),以及GeometryN()等。PostGIS提供簡(jiǎn)單的空間分析函數(shù)(如Area和Length)同時(shí)也提供其他一些具有復(fù)雜分析功能的函數(shù),比如Distance。PostGIS提供了對(duì)于元數(shù)據(jù)的支持,如GEOMETRY_COLUMNS和SPATIAL_REF_SYS,同時(shí),PostGIS也提供了相應(yīng)的支持函數(shù),如AddGeometryColumn和DropGeometryColumn。PostGIS提供了一系列的二元謂詞(如Contains、Within、Overlaps和Touches)用于檢測(cè)空間對(duì)象之間的空間關(guān)系,同時(shí)返回布爾值來(lái)表征對(duì)象之間符合這個(gè)關(guān)系。PostGIS提供了空間操作符(如Union和Difference)用于空間數(shù)據(jù)操作。比如,Union操作符融合多邊形之間的邊界。兩個(gè)交迭的多邊形通過(guò)Union運(yùn)算就會(huì)形成一個(gè)新的多邊形,這個(gè)新的多邊形的邊界為兩個(gè)多邊形中最大邊界。數(shù)據(jù)庫(kù)坐標(biāo)變換數(shù)據(jù)庫(kù)中的幾何類型可以通過(guò)Transform函數(shù)從一種投影系變換到另一種投影系中。在OpenGIS中的幾何類型都將SRID作為自身結(jié)構(gòu)的一部分,但不知什么原因,在OpenGIS的SFSQL規(guī)范中,并沒(méi)有引入Transform。球體長(zhǎng)度運(yùn)算存儲(chǔ)在普通地理坐標(biāo)系中的集合類型如果不進(jìn)行坐標(biāo)變換是無(wú)法進(jìn)行程度運(yùn)算的,OpenGIS所提供的坐標(biāo)變換使得積累類型的程度計(jì)算變成可能。三維的幾何類型SFSQL規(guī)范只是針對(duì)二維集合類型。OpenGIS提供了對(duì)三維集合類型的支持,具體是利用輸入的集合類型維數(shù)來(lái)決定輸出的表現(xiàn)方式。例如,即便所有幾何對(duì)象內(nèi)部都以三維形式存儲(chǔ),純粹的二維交叉點(diǎn)通常還是以二維的形式返回。此外,還提供幾何對(duì)象在不同維度間轉(zhuǎn)換的功能??臻g聚集函數(shù)在數(shù)據(jù)庫(kù)中,聚集函數(shù)是一個(gè)執(zhí)行某一屬性列所有數(shù)據(jù)操作的函數(shù)。比如Sum和Average,Sum是求某一關(guān)系屬性列的數(shù)據(jù)總和,Average則是求取某一關(guān)系屬性列的數(shù)據(jù)平均值。與此對(duì)應(yīng),空間聚集函數(shù)也是執(zhí)行相同的操作,不過(guò)操作的對(duì)象是空間數(shù)據(jù)。例如聚集函數(shù)Extent返回一系列要素中的最大的包裹矩形框,如“SELECTEXTENT(GEOM)FROMROADS”這條SQL語(yǔ)句的執(zhí)行結(jié)果是返回ROADS這個(gè)數(shù)據(jù)表中所有的包裹矩形框。柵格數(shù)據(jù)類型PostGIS通過(guò)一種新的數(shù)據(jù)類型片,提供對(duì)于大的柵格數(shù)據(jù)對(duì)象的存儲(chǔ)。片由以下幾個(gè)部分組成:包裹矩形框、SRID、類型和一個(gè)字節(jié)序列。通過(guò)將片的大小控制在數(shù)據(jù)庫(kù)頁(yè)值(32×32)以下,使得快速的隨即訪問(wèn)變成可能。一般大的圖片也是通過(guò)將其切成32×32像素的片然后再存儲(chǔ)在數(shù)據(jù)庫(kù)中的。圖形處理模塊由于需要生成圖片,GIS服務(wù)器也提供了圖形處理和生成模塊。它采用了開(kāi)源的GD庫(kù)來(lái)生成圖像,GD庫(kù)提供了一系列用來(lái)處理圖片的API,使用GD庫(kù)可以處理圖片,或者生成圖片。每個(gè)幾何對(duì)象的類都包含一個(gè)公用的Paint函數(shù),來(lái)繪出這個(gè)類所包含的圖像。MyGIS詳細(xì)設(shè)計(jì)MyGIS對(duì)象層次結(jié)構(gòu)在MyGIS服務(wù)器中,MyGIS對(duì)象層次結(jié)構(gòu)是這個(gè)服務(wù)器的核心結(jié)構(gòu),它將幾何對(duì)象進(jìn)行了封裝,并且提供了操作了這些對(duì)象的接口,同時(shí),這個(gè)體系結(jié)構(gòu)也是容易擴(kuò)展的,它定義了一些通用的接口,當(dāng)新的對(duì)象加入的時(shí)候,只需要根據(jù)對(duì)象的類型繼承相應(yīng)的接口并實(shí)現(xiàn),就能使MyGIS服務(wù)器支持更多的特性。同時(shí),MyGIS的對(duì)象層次結(jié)構(gòu)盡量和OGC的簡(jiǎn)單要素標(biāo)準(zhǔn)保持一致,使得能夠最大限度的兼容OGC標(biāo)準(zhǔn),從而提高系統(tǒng)與外部實(shí)現(xiàn)了OGC標(biāo)準(zhǔn)的系統(tǒng)實(shí)現(xiàn)更好的交互。現(xiàn)有的對(duì)象結(jié)構(gòu)為圖3.1。圖3.1GIS服務(wù)器的整體體系結(jié)構(gòu)BaseObject是MyGIS對(duì)象層次結(jié)構(gòu)中所有類的基類,基類里面添加了Paint()這個(gè)接口,滿足所有的對(duì)象都需要繪圖的要求。Base由GeoObject和NonGeoObject繼承。GeoObject繼承自BaseObject,同時(shí)也定義了所有的空間對(duì)象的一致接口SRSString(),得到當(dāng)前對(duì)象的空間參考系統(tǒng)的字符串,使得能夠在生成圖片的時(shí)候不至于出現(xiàn)誤差。繼承自GeoObject的類有兩個(gè):Geometry和GeometryCollection,分別代表單個(gè)空間對(duì)象和空間對(duì)象的集合。Geometry類也定義了自己的一個(gè)接口:Boundary(),獲得當(dāng)前單個(gè)空間對(duì)象的最小定界矩形(MBR)。實(shí)現(xiàn)這樣的接口將有助于系統(tǒng)大大提高查詢空間對(duì)象的速度。GeometryCollection類所定義的接口:GeometryN()和NumGeometries()提高了在一個(gè)空間對(duì)象集合里面查詢并獲得單個(gè)空間對(duì)象的API。它返回的對(duì)象是一個(gè)指向Geometry的指針,實(shí)際的空間對(duì)象類型可以通過(guò)指針的getType()來(lái)得到,再進(jìn)行相應(yīng)的操作。Point類表示在空間中0維的對(duì)象,比如世界地圖中北京的位置等。它具有X,Y坐標(biāo)的屬性來(lái)標(biāo)識(shí)Point類的特點(diǎn)。在取得一個(gè)點(diǎn)的坐標(biāo)之后,還需要對(duì)這個(gè)點(diǎn)進(jìn)行投影變換,才能得到正確的坐標(biāo)。Curve表示在空間中1維的對(duì)象。它是由一些點(diǎn)的集合來(lái)組成。比如城市的道路。同時(shí)Curve也提供了Length()這個(gè)函數(shù)來(lái)查詢當(dāng)前對(duì)象的長(zhǎng)度。一維的線段的類型可以分為這樣集中:簡(jiǎn)單非閉合曲線,簡(jiǎn)單閉合曲線,復(fù)雜閉合曲線,復(fù)雜非閉合曲線。這里給出閉合曲線和復(fù)雜曲線的定義。當(dāng)一條線的首尾兩個(gè)點(diǎn)空間相等的時(shí)候,那么這條線就是閉合曲線。當(dāng)一條線經(jīng)過(guò)了同一個(gè)點(diǎn)兩次或兩次以上,那么這條線就是復(fù)雜曲線。Polygon表示在空間中2維的對(duì)象,比如平面,在3維的空間坐標(biāo)系中,Polygon還可以表示一個(gè)3維幾何對(duì)象的表面。它是由一系列線的集合來(lái)組成。Polygon提供了Area()這個(gè)接口來(lái)實(shí)現(xiàn)求這個(gè)對(duì)象的面積的操作。MultiPoint,MultiCurve,MultiPolygon分別代表了多個(gè)點(diǎn),多條線,多個(gè)多邊形的集合。他們擁有共同的GeometryCollection的接口,并且存儲(chǔ)相應(yīng)的單個(gè)空間對(duì)象。PostGIS的實(shí)現(xiàn)PostGIS是現(xiàn)在開(kāi)源的數(shù)據(jù)庫(kù)Postgresql的空間擴(kuò)展引擎,從而使得Postgresql這個(gè)數(shù)據(jù)庫(kù)添加了空間查詢和空間操作的功能。PostGIS通過(guò)將自定義的類型和函數(shù)導(dǎo)入到Postgresql中來(lái)實(shí)現(xiàn)對(duì)Postgresql的空間擴(kuò)展。PostGIS的空間查詢函數(shù)都是使用純C實(shí)現(xiàn),保證了函數(shù)運(yùn)行時(shí)的效率,通過(guò)遵循Postgresql的自定義函數(shù)接口,實(shí)現(xiàn)了PostGIS和數(shù)據(jù)庫(kù)的無(wú)縫集成。在PostGIS中,新添加了一個(gè)類型字段geometry,它使用OGC的WKB來(lái)表示空間數(shù)據(jù)的組織形式。并且可以通過(guò)asText()這個(gè)SQL函數(shù)使得geometry這個(gè)字段轉(zhuǎn)換成OGC的WKT形式,從而對(duì)用戶友好。PostGIS還實(shí)現(xiàn)了OGC的空間對(duì)象操作標(biāo)準(zhǔn)中的接口,比如intersects,equal等等,提高了它的可使用性。MyGIS服務(wù)器與PostGIS的交互由于Postgresql定義了自己獨(dú)有的二進(jìn)制數(shù)據(jù)的存儲(chǔ)方式(bytea),使得不能通過(guò)普通的方法來(lái)得到二進(jìn)制數(shù)據(jù)。GIS服務(wù)器的數(shù)據(jù)訪問(wèn)模塊需要調(diào)用Postgresql特殊的API來(lái)得到二進(jìn)制數(shù)據(jù),下面是一段示例代碼片段:PGresult*DBHelper::execQuery(conststring&str){ if(PQstatus(conn)!=CONNECTION_OK) { fprintf(stderr,"Connectiontodatabasefailed:%s", PQerrorMessage(conn)); PQfinish(conn); returnNULL; } PGresult*ret=PQexecParams(conn,str.c_str(), 0,NULL,NULL,NULL,NULL,1); if(PQresultStatus(ret)!=PGRES_TUPLES_OK){ fprintf(stderr,"ExecQueryFauled!\\n"); PQclear(ret); returnNULL; } returnret;}Postgresql的API:PQexecParams中最后一個(gè)參數(shù)為1,表示客戶端需要原始的二進(jìn)制流,而不是Postgresql特有的bytea流。在得到數(shù)據(jù)庫(kù)中幾何對(duì)象的WKB數(shù)據(jù)之后,MyGIS服務(wù)器需要根據(jù)OGC的幾何對(duì)象格式定義標(biāo)準(zhǔn)(見(jiàn)附錄B)解析這段數(shù)據(jù),由于之前的MyGIS對(duì)象體系結(jié)構(gòu)實(shí)現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)。在這里可以也可以利用面向?qū)ο蟮姆庋b特性來(lái)對(duì)數(shù)據(jù)解析這部分實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì)。Point.CPPPoint::Point(constUCHAR*uc){ //復(fù)制點(diǎn)對(duì)象的數(shù)據(jù) memcpy(&_x,uc,8); memcpy(&_y,uc+8,8);}Curve.CPPvoidCurve::init(constUCHAR*uc)const{ UINTnumber=0; UINTindex=0; doublex=0; doubley=0; //得到線里面點(diǎn)的個(gè)數(shù) memcpy(&number,uc,sizeof(UINT)); index+=sizeof(UINT); for(UINTi=0;i<number;i++) { //構(gòu)造一個(gè)新的點(diǎn),并加入到線的集合里面。 Point*p=newPoint(uc+index); arPoints.push_back(p); //增加偏移量使得指針能夠指向正確的位置 index+=16; }}Polygon.CPPvoidPolygon::init(constUCHAR*uc)const{ if(uc==NULL) return; intindex=sizeof(UCHAR)+sizeof(UINT); intnumRings=0; intnumPoints=0; //得到多邊形里面線的數(shù)目 memcpy(&numRings,uc+index,sizeof(int)); index+=sizeof(int); for(inti=0;i<numRings;i++) { //得到多邊形里面每條線中點(diǎn)的個(gè)數(shù) memcpy(&numPoints,uc+index,sizeof(int)); //構(gòu)造一條線并且加入到這個(gè)多邊形 Curve*c=newCurve(uc+index); arRings.push_back(c); //增加偏移量使得指針指向正確的位置 index+=sizeof(int); index+=(numPoints)*sizeof(double)*2; } }由上面的代碼可以看出,在幾何對(duì)象的構(gòu)造過(guò)程中,體現(xiàn)了面向?qū)ο蟮姆庋b和包含的特點(diǎn),同時(shí)也使得代碼不堆積在一個(gè)解析函數(shù)里面,使得每個(gè)函數(shù)的分工明確,短小精悍。GIS服務(wù)器繪圖模塊的設(shè)計(jì)由于輸出數(shù)據(jù)是MyGIS服務(wù)器最常用的一個(gè)功能,并且根據(jù)數(shù)據(jù)生成相應(yīng)的數(shù)據(jù)更是最常用的功能之一。在這里,同樣也是使用面向?qū)ο蟮姆椒▉?lái)對(duì)繪圖模塊進(jìn)行設(shè)計(jì),同時(shí),使用了面向?qū)ο笞钪匾囊粋€(gè)特性:多態(tài)(polymorphism)在繪圖的類中,擁有這樣一個(gè)BaseObject接口的指針的數(shù)組,它們分別指向不同子類的對(duì)象,Point,Curve,Polygon等等。由于Paint方法是BaseObject公開(kāi)的一個(gè)接口,同時(shí)它也是一個(gè)虛函數(shù),C++程序可以在運(yùn)行時(shí)找到BaseObject指針指向的子類對(duì)象的類型,并且調(diào)用相應(yīng)的真正的Paint函數(shù)。使得在設(shè)計(jì)上,整個(gè)系統(tǒng)架構(gòu)比較均衡,同時(shí)也很容易擴(kuò)展:只要添加一個(gè)新的類,找到它在類繼承層次中的正確位置,再實(shí)現(xiàn)相應(yīng)的需要實(shí)現(xiàn)的接口即可,不需要改動(dòng)原有的代碼。在實(shí)現(xiàn)真正的繪圖功能時(shí),為了使系統(tǒng)更好的移植,在各個(gè)系統(tǒng)上運(yùn)行,GIS服務(wù)器使用了一個(gè)開(kāi)源的圖形處理庫(kù):GD庫(kù)[11]。它將與系統(tǒng)真正繪圖的API(如GDI+)與程序隔離開(kāi)來(lái),在不同結(jié)構(gòu)的系統(tǒng)下面,只需要使用相對(duì)應(yīng)版本的GD庫(kù)即可。下面是Point,Curve,Polygon的Paint函數(shù)實(shí)現(xiàn)。Point.CPPBOOLPoint::Paint(gdImagePtrim){ if(im==NULL) { returnFALSE; } projectMe(); gdImageSetPixel(im,_x,_y,getColor()); returnTRUE;}Curve.CPPBOOLCurve::Paint(gdImagePtrim){ if(im==NULL||arPoints.size()<2) returnFALSE; doublex1,y1,x2,y2; double_x1,_y1,_x2,_y2; vector<Point*>::iteratorit=arPoints.begin(); for(x1=(*it)->getX(), y1=(*it)->getY(); it!=arPoints.end()-1;) { it++; (*it)->projectME(); x2=(*it)->getX(); y2=(*it)->getY(); gdImageLine(im,_x1,_y1,_x2,_y2,getColor()); x1=x2; y1=y2; } returnTRUE;}Polygon.CPPBOOLPolygon::Paint(gdImagePtrim){ if(im==NULL||arRings.size()<1) returnFALSE; vector<Curve*>::iteratorit; for(it=arRings.begin();it!=arRings.end();it++) if((*it)->Paint(im)==FALSE) returnFALSE; returnTRUE;}MyGIS工作總結(jié)需要進(jìn)行的工作由于時(shí)間關(guān)系,MyGIS服務(wù)器的設(shè)計(jì)并不完善,當(dāng)前存在著這樣幾個(gè)缺點(diǎn)。與外部進(jìn)行交互的接口不統(tǒng)一MyGIS由于在設(shè)計(jì)初期就被定位成可以和各種類型的外部系統(tǒng)交互,包括客戶端和后臺(tái)數(shù)據(jù)源,但是由于沒(méi)有一個(gè)通用的訪問(wèn)接口(API),使得MyGIS在和客戶端和服務(wù)器交互的時(shí)候不夠靈活,需要進(jìn)行大量的工作,同時(shí)也降低了系統(tǒng)的工作效率和以后的可維護(hù)性不能承受高負(fù)載的應(yīng)用隨著時(shí)間的推移,在實(shí)際應(yīng)用中整個(gè)系統(tǒng)存儲(chǔ)的空間數(shù)據(jù)越來(lái)愈大,客戶端的數(shù)量和種類也會(huì)越來(lái)越多,整個(gè)系統(tǒng)結(jié)構(gòu)和邏輯愈趨復(fù)雜,并且每一次空間分析或數(shù)據(jù)請(qǐng)求可能需要檢索和分析海量的數(shù)據(jù),這樣單獨(dú)提高單個(gè)服務(wù)器的性能是遠(yuǎn)遠(yuǎn)不夠的。而MyGIS在應(yīng)對(duì)這種海量請(qǐng)求和海量數(shù)據(jù)時(shí),性能會(huì)大幅度的下降。系統(tǒng)配置不夠靈活當(dāng)前的MyGIS服務(wù)器的一些配置都是直接硬編碼在程序中,實(shí)際應(yīng)用中遇到的情況各不相同,使用者的要求也不一樣,整個(gè)服務(wù)器需要一個(gè)靈活的配置管理工具,來(lái)滿足各種情況。系統(tǒng)在面對(duì)突發(fā)情況或者錯(cuò)誤時(shí)不能很好的應(yīng)對(duì)。當(dāng)前的GIS服務(wù)器不能很好的應(yīng)對(duì)突發(fā)性的錯(cuò)誤(比如內(nèi)存不夠,所需要的資源沖突等等)。服務(wù)器在出現(xiàn)錯(cuò)誤時(shí),只能在終端輸出一條簡(jiǎn)單的錯(cuò)誤信息,甚至操作系統(tǒng)強(qiáng)行終止服務(wù)器進(jìn)程,關(guān)閉整個(gè)應(yīng)用。用戶也不能得知出錯(cuò)的原因和對(duì)整個(gè)系統(tǒng)產(chǎn)生的影響。當(dāng)前的解決方案根據(jù)以上發(fā)現(xiàn)的缺點(diǎn),現(xiàn)提出幾個(gè)針對(duì)這些缺點(diǎn)的改進(jìn)方案統(tǒng)一外部系統(tǒng)與MyGIS交互的接口為了更好的實(shí)現(xiàn)系統(tǒng)的松耦合以及可擴(kuò)展性,可以對(duì)GIS服務(wù)器與外部(客戶端,其他GIS服務(wù)器,數(shù)據(jù)庫(kù))交互的接口進(jìn)行提取,封裝,設(shè)計(jì),從而更加優(yōu)化整個(gè)系統(tǒng)的設(shè)計(jì),提高系統(tǒng)的可維護(hù)性和開(kāi)發(fā)周期以及降低后續(xù)開(kāi)發(fā)的成本。例如,對(duì)于與數(shù)據(jù)庫(kù)的交互,可以實(shí)現(xiàn)一個(gè)通用的provider接口,對(duì)不同數(shù)據(jù)源的讀取模塊,只要實(shí)現(xiàn)這個(gè)接口,就能夠與GIS服務(wù)器進(jìn)行良好的交互。為MyGIS添加負(fù)載平衡模塊以適應(yīng)高負(fù)載的工作在圖2.2描述的系統(tǒng)結(jié)構(gòu)中,GIS服務(wù)器并沒(méi)有專門的負(fù)載平衡機(jī)制,只是簡(jiǎn)單將請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)。在以后的工作中,可以實(shí)現(xiàn)一個(gè)專門為服務(wù)器集群的情況下使用的ServiceDispatcher,判斷當(dāng)前整個(gè)服務(wù)器集群的運(yùn)行情況,從而選擇最優(yōu)的節(jié)點(diǎn)來(lái)轉(zhuǎn)發(fā)請(qǐng)求,達(dá)到真正的動(dòng)態(tài)負(fù)載平衡。實(shí)現(xiàn)配置文件管理實(shí)現(xiàn)一個(gè)服務(wù)器的配置類。用戶通過(guò)修改相應(yīng)的配置文件,而MyGIS服務(wù)器在啟動(dòng)的時(shí)候讀取對(duì)當(dāng)前服務(wù)器的配置文件,從而對(duì)服務(wù)器進(jìn)行調(diào)整來(lái)適應(yīng)各種情況,更加靈活的面對(duì)不同的需求。實(shí)現(xiàn)日志記錄和錯(cuò)誤處理通過(guò)在出錯(cuò)時(shí)顯示用戶友好的出錯(cuò)信息和錯(cuò)誤處理提示,以及相應(yīng)的在日志中記錄一些關(guān)鍵信息,不僅能得到很好的用戶體驗(yàn),也能使得管理員及時(shí)發(fā)現(xiàn)錯(cuò)誤的原因,使問(wèn)題得到迅速解決。對(duì)系統(tǒng)使用多線程編程以更好的利用硬件資源。當(dāng)前的GIS服務(wù)器只是針對(duì)單線程的情況設(shè)計(jì),并沒(méi)有對(duì)關(guān)鍵資源進(jìn)行訪問(wèn)控制,在面對(duì)多客戶端并發(fā)訪問(wèn)的時(shí)候,很有可能產(chǎn)生嚴(yán)重錯(cuò)誤,同時(shí)現(xiàn)在的服務(wù)器硬件都是多CPU型服務(wù)器,可以對(duì)整個(gè)系統(tǒng)進(jìn)行改造,支持多線程,提高系統(tǒng)健壯性和更大效率的利用資源。結(jié)論本文通過(guò)研究GIS系統(tǒng)的類型,結(jié)構(gòu)和特點(diǎn),提出了自己的GIS系統(tǒng)解決方案,通過(guò)引進(jìn)開(kāi)源軟件作為系統(tǒng)的一個(gè)組成部分,不僅提高了整個(gè)系統(tǒng)的開(kāi)發(fā)效率(數(shù)據(jù)庫(kù),圖像),而且通過(guò)引進(jìn)開(kāi)源軟件,可以通過(guò)系統(tǒng)需求靈活的定制系統(tǒng)的每一個(gè)部分,以達(dá)到整個(gè)系統(tǒng)對(duì)資源最高的利用率。系統(tǒng)完全按照OGC(開(kāi)放空間協(xié)會(huì))制定的標(biāo)準(zhǔn)實(shí)現(xiàn),使得整個(gè)系統(tǒng)能夠很好的與其他異構(gòu)的GIS系統(tǒng)進(jìn)行交互。整個(gè)GIS資源對(duì)用戶開(kāi)放,提高了GIS資源的利用率。本文主要介紹了MyGIS系統(tǒng)的結(jié)構(gòu),它的主要組成部分,以及這些組成部分的詳細(xì)實(shí)現(xiàn)細(xì)節(jié)。同時(shí)提出了自己的設(shè)計(jì)思想以及創(chuàng)新之處。但是整個(gè)系統(tǒng)的實(shí)現(xiàn)還不完善,需要做的工作還有很多,并且隨著開(kāi)發(fā)和維護(hù)的進(jìn)一步深入,相信會(huì)遇到更多的困難和問(wèn)題。致謝首先,我要感謝我的導(dǎo)師,不論在生活還是學(xué)習(xí)上給我的幫助和鼓勵(lì)。同時(shí)五班的同學(xué)們也在我遇到困難的時(shí)候給與我很大的幫助,由于我是在企業(yè)做的畢業(yè)設(shè)計(jì),難免要占用一點(diǎn)工作的時(shí)間,對(duì)此我向我在企業(yè)的領(lǐng)導(dǎo)對(duì)我的寬容表示誠(chéng)摯的謝意,在工作中,同事也在我遇到困難的時(shí)候給我鼓勵(lì),給予我?guī)椭?,感謝你們對(duì)我的支持!參考文獻(xiàn)[1]鄔倫,劉瑜,張晶等地理信息系統(tǒng)——原理、方法和應(yīng)用[M]北京:科學(xué)出版社,2001.[2]陳述彭地理信息系統(tǒng)導(dǎo)論[M]科學(xué)出版社,1999[3]M.F.WroboysGISAComputingPerspective[M]Taylor&Frarncis,1995[4]李德仁,關(guān)澤群空間信息系統(tǒng)的集成與實(shí)現(xiàn)[M]武漢:武漢測(cè)繪科技大學(xué)出版社,2000[5]ShashiShekhar,SanjayChawlaSpatialDatabases:ATour[M]PrenticeHall/Pearson,2004[6]孫家廣等計(jì)算機(jī)圖形學(xué)[M]北京:清華大學(xué)出版社,1995[7]梁?jiǎn)⒄翯IS和計(jì)算機(jī)制圖[M]北京:科學(xué)出版社,1995[8]承繼成等國(guó)家空間信息基礎(chǔ)設(shè)施與數(shù)字地球[M]清華大學(xué)出版社,1999[9]StewartFotheringham,PrterRogersonSpatialAnalysisandGIS[M]Taylor&Francis,1994[10]薩師煊,王珊數(shù)據(jù)庫(kù)系統(tǒng)概論[M]高等教育出版社,1983[11]GD[OL][12]PostGIS.[OL][13]ESRI[OL][14]OGC[OL][15]Postgresql[OL]附錄附錄ABNF表達(dá)式<點(diǎn)>::=<x><y><幾何對(duì)象注記文字>::=<點(diǎn)注記文字>|<線注記文字>|<多邊形注記文字> |<三角形注記文字>|<多面體的表面注記文字>|<三角形不規(guī)則網(wǎng)絡(luò)注記文字>|<多點(diǎn)注記文字>|<多線注記文字>|<多多邊形注記文字>|<空間對(duì)象集合注記文字><點(diǎn)注記文字>::=點(diǎn)<點(diǎn)文字><線注記文字>::=線<線文字><多邊形注記文字>::=多邊形<多邊形文字><多面體的表面注記文字>::=多面體的表面<多面體的表面文字><三角形注記文字>::=三角形<三角形文字><三角形不規(guī)則網(wǎng)絡(luò)注記文字>::=三角形不規(guī)則網(wǎng)絡(luò)<多面體的表面文字><多點(diǎn)注記文字>::=多點(diǎn)<多點(diǎn)文字><多線注記文字>::=多線<多線文字><多多邊形注記文字>::=多多邊形<多多邊形文字><幾何對(duì)象集合注記文字>::=幾何對(duì)象集合<幾何對(duì)象集合文字><點(diǎn)文字>::=<空集>|<左小括號(hào)><點(diǎn)><右小括號(hào)><線文字>::=<空集>|<左小括號(hào)><點(diǎn)>{<逗號(hào)><點(diǎn)>}*<右小括號(hào)><多邊形文字>::=<空集>|<左小括號(hào)><線文字>{<逗號(hào)><線文字>}*<右小括號(hào)><多面體的表面文字>::=<空集>|<左小括號(hào)><多邊形文字>{<逗號(hào)><多邊形文字>}*<右小括號(hào)><多點(diǎn)文字>::=<空集>|<左小括號(hào)><點(diǎn)文字>{<逗號(hào)><點(diǎn)文字>}*<右小括號(hào)><多線文字>::=<空集>|<左小括號(hào)><線文字>{<逗號(hào)><線文字>}*<右小括號(hào)><多多邊形文字>::=<空集>|<左小括號(hào)><多邊形文字>{<逗號(hào)><多邊形文字>}*<右小括號(hào)><空間對(duì)象集合文字>::=<空集>|<左小括號(hào)><幾何對(duì)象注記文字>{<逗號(hào)><幾何對(duì)象注記文字>}*<右小括號(hào)>附錄B幾何對(duì)象的WKB表示//基本類型定義//byte:一個(gè)字節(jié)//uint32:無(wú)符號(hào)32位整型(4字節(jié))//double:雙精度數(shù)字(8字節(jié))Point{doublex;doubley}PointZ{doublex;doubley;doublez}PointM{doublex;doubley;doublem}PointZM{doublex;doubley;doublez;doublem}LinearRing{uint32numPoints;Pointpoints[numPoints]}LinearRingZ{uint32numPoints;PointZpoints[numPoints]}LinearRingM{uint32numPoints;PointMpoints[numPoints]}LinearRingZM{uint32numPoints;PointZMpoints[numPoints]}enumWKBByteOrder{wkbXDR=0,//BigEndianwkbNDR=1//LittleEndian}enumWKBGeometryType{wkbPoint=1,wkbLineString=2,wkbPolygon=3,wkbTriangle=17wkbMultiPoint=4,wkbMultiLineString=5,wkbMultiPolygon=6,wkbGeometryCollection=7,wkbPolyhedralSurface=15,wkbTIN=16wkbPointZ=1001,wkbLineStringZ=1002,wkbPolygonZ=1003,wkbTrianglez=1017wkbMultiPointZ=1004,wkbMultiLineStringZ=1005,wkbMultiPolygonZ=1006,wkbGeometryCollectionZ=1007,wkbPolyhedralSurfaceZ=1015,wkbTINZ=1016wkbPointM=2001,wkbLineStringM=2002,wkbPolygonM=2003,wkbTriangleM=2017wkbMultiPointM=2004,wkbMultiLineStringM=2005,wkbMultiPolygonM=2006,wkbGeometryCollectionM=2007,wkbPolyhedralSurfaceM=2015,wkbTINM=2016wkbPointZM=3001,wkbLineStringZM=3002,wkbPolygonZM=3003,wkbTriangleZM=3017wkbMultiPointZM=3004,wkbMultiLineStringZM=3005,wkbMultiPolygonZM=3006,wkbGeometryCollectionZM=3007,wkbPolyhedralSurfaceZM=3015,wkbTinZM=3016,}WKBPoint{bytebyteOrder;staticuint32wkbType=1;Pointpoint}WKBPointZ{bytebyteOrder;staticuint32wkbType=1001;PointZpoint}WKBPointM{bytebyteOrder;staticuint32wkbType=2001;PointM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論