IDL在分布式GIS系統(tǒng)中的應(yīng)用研究_第1頁(yè)
IDL在分布式GIS系統(tǒng)中的應(yīng)用研究_第2頁(yè)
IDL在分布式GIS系統(tǒng)中的應(yīng)用研究_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、IDL在分布式GIS系統(tǒng)中的應(yīng)用研究                        摘要:以新型的面向圖形對(duì)象、基于矩陣的交互式數(shù)據(jù)處理語(yǔ)言(IDL),與空間數(shù)據(jù)引擎(SDE)結(jié)合來(lái)構(gòu)建分布式GIS應(yīng)用,既發(fā)揮了IDL在空間數(shù)據(jù)處理、三維顯示方面的長(zhǎng)處,又利用了SDE在空間數(shù)據(jù)管理方面良好的性能及安全性,同時(shí)避免了在購(gòu)買(mǎi)專(zhuān)業(yè)GIS開(kāi)發(fā)組件許可證上的巨額投入,

2、在性能和開(kāi)發(fā)成本之間做到了合適的平衡,是一種經(jīng)濟(jì)可行的應(yīng)用方案。 關(guān)鍵詞:地理信息系統(tǒng);交互式數(shù)據(jù)處理語(yǔ)言;空間數(shù)據(jù)引擎;C#;分布式應(yīng)用 0引言 進(jìn)行GIS應(yīng)用開(kāi)發(fā),若直接從底層做起則開(kāi)發(fā)周期長(zhǎng)、成本高。目前應(yīng)用最為廣泛的模式是集成二次開(kāi)發(fā)1,就是以當(dāng)前成熟的商業(yè)GIS平臺(tái)為基礎(chǔ),以高級(jí)開(kāi)發(fā)語(yǔ)言為支持來(lái)進(jìn)行應(yīng)用開(kāi)發(fā)。然而目前的商業(yè)GIS平臺(tái)價(jià)格昂貴,并且由于提供廠商在知識(shí)產(chǎn)權(quán)保護(hù)方面的考慮和限制,有些還不能用來(lái)開(kāi)發(fā)完全獨(dú)立(Standalone)的應(yīng)用系統(tǒng)。 業(yè)界應(yīng)用最廣的ESRI2公司產(chǎn)品系列中提供了功能強(qiáng)大的基于COM技術(shù)的ArcObjects組件作為GIS二次開(kāi)發(fā)工具,開(kāi)發(fā)者可以借助其

3、成熟的空間分析技術(shù)以及其與ArcSDE空間數(shù)據(jù)庫(kù)之間良好的協(xié)作特性,快速地實(shí)現(xiàn)GIS應(yīng)用系統(tǒng)的開(kāi)發(fā)。然而在ArcGIS 9.0之前的版本中,ArcObjects不是獨(dú)立的軟件開(kāi)發(fā)工具包(Software Development Kit,SDK),無(wú)法脫離ArcGIS環(huán)境開(kāi)發(fā)獨(dú)立的應(yīng)用系統(tǒng)2;即便在新發(fā)布的ArcGIS 9.0開(kāi)始支持獨(dú)立開(kāi)發(fā)的情形下,昂貴的發(fā)布許可費(fèi)用仍然使得目標(biāo)系統(tǒng)的應(yīng)用成本非常高。這對(duì)科研應(yīng)用目的而言,不但開(kāi)發(fā)成本太高,而且靈活性很差。因而嘗試在系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)中,選擇基于矩陣運(yùn)算的交互式數(shù)據(jù)處理語(yǔ)言(Interactive Data Language,IDL),以及商業(yè)化的

4、空間數(shù)據(jù)管理引擎ArcSDE的集成開(kāi)發(fā)模式,以期在性能和開(kāi)發(fā)成本之間達(dá)成一個(gè)合理的平衡。 1開(kāi)發(fā)環(huán)境 IDL是一種新型的面向圖形對(duì)象、基于矩陣的數(shù)據(jù)處理語(yǔ)言,自帶強(qiáng)大的數(shù)學(xué)庫(kù)支持,在數(shù)據(jù)運(yùn)算、分析和空間表現(xiàn)方面有出色的性能3。ArcSDE是非常成熟的空間數(shù)據(jù)庫(kù)引擎。通過(guò)結(jié)合MS SQL Server或Oracle大型關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),可以建立具有良好性能的空間數(shù)據(jù)庫(kù)2;并且通過(guò)利用ArcSDE提供的Client APIs(Application Programming Interfaces,應(yīng)用編程接口)接口進(jìn)行開(kāi)發(fā),系統(tǒng)的自主性較強(qiáng)。 經(jīng)過(guò)對(duì)多種開(kāi)發(fā)環(huán)境和編程語(yǔ)言的比較,系統(tǒng)決定采用.NET作

5、為實(shí)現(xiàn)平臺(tái)。C#是一種新的編程語(yǔ)言,它是專(zhuān)為生成運(yùn)行在.NET框架上的企業(yè)級(jí)應(yīng)用程序而設(shè)計(jì)的,同時(shí)具備C/C+的強(qiáng)大功能及Visual Basic的快速開(kāi)發(fā)能力,是面向下一代操作系統(tǒng)的開(kāi)發(fā)語(yǔ)言4。 2系統(tǒng)開(kāi)發(fā)方案 21系統(tǒng)體系結(jié)構(gòu) 系統(tǒng)采用多層邏輯結(jié)構(gòu)的胖客戶端/瘦服務(wù)器端模式。服務(wù)器端由ArcSDE來(lái)實(shí)現(xiàn)空間數(shù)據(jù)的管理,結(jié)合服務(wù)器上的SQL Server構(gòu)成空間數(shù)據(jù)庫(kù)。客戶端由C#構(gòu)建,利用其在應(yīng)用程序開(kāi)發(fā)方面的性能、快捷性及交互界面開(kāi)發(fā)方面的出色能力,以彌補(bǔ)IDL在此方面的不足。IDL在系統(tǒng)中主要負(fù)責(zé)實(shí)現(xiàn)空間數(shù)據(jù)(含二維和三維)的本地訪問(wèn)管理和表現(xiàn),如空間數(shù)據(jù)的加載、本地管理、地圖渲染、三

6、維顯示等;系統(tǒng)還可借助IDL強(qiáng)大的數(shù)據(jù)處理能力實(shí)現(xiàn)基于矩陣運(yùn)算的各種分析功能。IDL部分經(jīng)過(guò)良好的封裝被嵌入在客戶端的C# Shell中。 22客戶端程序框架 客戶端交互界面由C#和經(jīng)過(guò).NET封裝的IDL DrawWidget開(kāi)發(fā)控件構(gòu)建。由于IDL并沒(méi)有像其他專(zhuān)業(yè)GIS開(kāi)發(fā)組件(如ESRI的MapObjects或ArcObjects)一樣直接提供對(duì)GIS應(yīng)用開(kāi)發(fā)的支持,因而基本的GIS功能需要利用IDL自行實(shí)現(xiàn)。圖層控件用標(biāo)準(zhǔn)的Windows基本控件組合開(kāi)發(fā);鷹眼控件和地圖控件由經(jīng)過(guò).NET封裝的IDL DrawWidget開(kāi)發(fā)控件來(lái)實(shí)現(xiàn);比例尺控件由Windows繪圖函數(shù)與IDL函數(shù)共同

7、實(shí)現(xiàn)。 23空間數(shù)據(jù)管理 系統(tǒng)中所有的空間數(shù)據(jù)由ArcSDE空間數(shù)據(jù)庫(kù)統(tǒng)一管理,系統(tǒng)與ArcSDE的交互由C# Shell負(fù)責(zé)管理,具體的交互功能在體系結(jié)構(gòu)圖的Data Acess組件中實(shí)現(xiàn)。其中主要使用了經(jīng)過(guò) .NET封裝的ArcSDE C APIs空間數(shù)據(jù)庫(kù)訪問(wèn)函數(shù)庫(kù)。 24空間數(shù)據(jù)處理與顯示 系統(tǒng)中使用IDL語(yǔ)言來(lái)進(jìn)行對(duì)空間數(shù)據(jù)的處理與運(yùn)算。IDL是目前對(duì)科學(xué)計(jì)算可視化支持較好的語(yǔ)言之一,是一種集成了所有科學(xué)計(jì)算環(huán)境中所需函數(shù)的面向矩陣運(yùn)算、用于數(shù)據(jù)可視化研究與應(yīng)用開(kāi)發(fā)的第四代計(jì)算機(jī)語(yǔ)言,也是易于使用、面向矩陣的語(yǔ)言。它具有高級(jí)圖像處理能力、交互式二維和三維圖形技術(shù)、面向?qū)ο蟮木幊谭绞健?/p>

8、OpenGL 圖形加速、量化可視化表現(xiàn)、集成的數(shù)學(xué)與統(tǒng)計(jì)學(xué)算法、靈活的數(shù)據(jù)輸入/輸出方式、跨平臺(tái)圖形用戶界面工具包、連接ODBC 兼容數(shù)據(jù)庫(kù)存取及多種程序連接工具等功能,并且能夠運(yùn)行于多種操作系統(tǒng)和硬件平臺(tái)之上。本質(zhì)上,IDL是一個(gè)巨大的C程序庫(kù),包括了編譯器、解釋器、圖像、算術(shù)處理器、用戶界面和大量依賴操作系統(tǒng)的代碼5。利用C和IDL語(yǔ)言混合開(kāi)發(fā)的系統(tǒng),既包含了IDL語(yǔ)言強(qiáng)大的科學(xué)計(jì)算能力,又具備了C語(yǔ)言對(duì)系統(tǒng)開(kāi)發(fā)的靈活性以及系統(tǒng)運(yùn)行的穩(wěn)定性,使得兩種語(yǔ)言在系統(tǒng)中達(dá)到優(yōu)勢(shì)互補(bǔ),是實(shí)現(xiàn)科學(xué)計(jì)算及可視化的一種有效途徑。      

9、60; 3SDE訪問(wèn)接口 系統(tǒng)采用了目前較為成熟的空間數(shù)據(jù)庫(kù)引擎ArcSDE與大型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)SQL Server來(lái)實(shí)現(xiàn)對(duì)空間數(shù)據(jù)的分布式存儲(chǔ)和管理。需要解決的首要問(wèn)題是如何建立與ArcSDE的遠(yuǎn)程連接,并與之實(shí)現(xiàn)交互操作。 ArcSDE提供的訪問(wèn)通道有三條6,7 。三條通道中:使用ArcObjects成本太高;而直接數(shù)據(jù)庫(kù)連接通過(guò)SQL語(yǔ)言直接從關(guān)系型數(shù)據(jù)庫(kù)中獲取以表、行、列為基礎(chǔ)的數(shù)據(jù),這種方法繞過(guò)了ArcSDE,適合于對(duì)非空間信息的訪問(wèn),但處理空間信息的難度很大;ArcSDE的Client APIs是較為基礎(chǔ)的一種功能發(fā)布形式,具有較長(zhǎng)的歷史和非常廣泛的應(yīng)用,它面向開(kāi)放式系統(tǒng)開(kāi)發(fā),

10、可以用于客戶端與ArcSDE的交互過(guò)程。系統(tǒng)中最終采用ArcSDE提供的C語(yǔ)言客戶端API方式,以便在保證系統(tǒng)性能的前提下,降低系統(tǒng)的開(kāi)發(fā)和運(yùn)行成本。 ArcSDE的C APIs具有較高的數(shù)據(jù)訪問(wèn)性能、較完整的矢量和柵格數(shù)據(jù)訪問(wèn)和管理能力。但是它是一個(gè)復(fù)雜的體系,包括30個(gè)結(jié)構(gòu)、21個(gè)枚舉以及757個(gè)函數(shù),并且不支持面向?qū)ο?,也沒(méi)有提供對(duì).NET環(huán)境的支持(只提供了C和Java兩個(gè)版本),因而難以直接在.NET環(huán)境中以不安全代碼(Unsafe)的方式訪問(wèn)。 為解決這一問(wèn)題,系統(tǒng)開(kāi)發(fā)中利用托管(Managed)C+語(yǔ)言,將ArcSDE 的C APIs封裝為.NET環(huán)境支持的模塊,然后在.NET環(huán)境中使用。 4IDL與C#通信機(jī)制 41IDL對(duì)混合編程的支持 IDL為了更好地實(shí)現(xiàn)軟件開(kāi)發(fā)的靈活性和面向?qū)ο蟮墓δ埽粩嗟貙?duì)功能進(jìn)行擴(kuò)充,并且增加了許多與其他語(yǔ)言之間的通信接口,并提供了許多與其他語(yǔ)言進(jìn)行混合編程的內(nèi)部API函數(shù)。IDL 6.0可以與標(biāo)準(zhǔn)C、UNIX C、Visual C+、Java

溫馨提示

  • 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)論