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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論