999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

IDL在分布式GIS系統中的應用研究

2007-01-01 00:00:00郭建馮尚慶生蓋迎春
計算機應用研究 2007年5期

摘要:以新型的面向圖形對象、基于矩陣的交互式數據處理語言(IDL),與空間數據引擎(SDE)結合來構建分布式GIS應用,既發揮了IDL在空間數據處理、三維顯示方面的長處,又利用了SDE在空間數據管理方面良好的性能及安全性,同時避免了在購買專業GIS開發組件許可證上的巨額投入,在性能和開發成本之間做到了合適的平衡,是一種經濟可行的應用方案。

關鍵詞:地理信息系統;交互式數據處理語言;空間數據引擎;C#;分布式應用

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2007)05-0220-03

0引言

進行GIS應用開發,若直接從底層做起則開發周期長、成本高。目前應用最為廣泛的模式是集成二次開發[1],就是以當前成熟的商業GIS平臺為基礎,以高級開發語言為支持來進行應用開發。然而目前的商業GIS平臺價格昂貴,并且由于提供廠商在知識產權保護方面的考慮和限制,有些還不能用來開發完全獨立(Standalone)的應用系統。

業界應用最廣的ESRI[2]公司產品系列中提供了功能強大的基于COM技術的ArcObjects組件作為GIS二次開發工具,開發者可以借助其成熟的空間分析技術以及其與ArcSDE空間數據庫之間良好的協作特性,快速地實現GIS應用系統的開發。然而在ArcGIS 9.0之前的版本中,ArcObjects不是獨立的軟件開發工具包(Software Development Kit,SDK),無法脫離ArcGIS環境開發獨立的應用系統[2];即便在新發布的ArcGIS 9.0開始支持獨立開發的情形下,昂貴的發布許可費用仍然使得目標系統的應用成本非常高。這對科研應用目的而言,不但開發成本太高,而且靈活性很差。因而嘗試在系統的設計開發中,選擇基于矩陣運算的交互式數據處理語言(Interactive Data Language,IDL),以及商業化的空間數據管理引擎ArcSDE的集成開發模式,以期在性能和開發成本之間達成一個合理的平衡。

1開發環境

IDL是一種新型的面向圖形對象、基于矩陣的數據處理語言,自帶強大的數學庫支持,在數據運算、分析和空間表現方面有出色的性能[3]。ArcSDE是非常成熟的空間數據庫引擎。通過結合MS SQL Server或Oracle大型關系數據庫系統,可以建立具有良好性能的空間數據庫[2];并且通過利用ArcSDE提供的Client APIs(Application Programming Interfaces,應用編程接口)接口進行開發,系統的自主性較強。

經過對多種開發環境和編程語言的比較,系統決定采用.NET作為實現平臺。C#是一種新的編程語言,它是專為生成運行在.NET框架上的企業級應用程序而設計的,同時具備C/C++的強大功能及Visual Basic的快速開發能力,是面向下一代操作系統的開發語言[4]。

2系統開發方案

2.1系統體系結構

系統采用多層邏輯結構的胖客戶端/瘦服務器端模式(圖1)。服務器端由ArcSDE來實現空間數據的管理,結合服務器上的SQL Server構成空間數據庫。客戶端由C#構建,利用其在應用程序開發方面的性能、快捷性及交互界面開發方面的出色能力,以彌補IDL在此方面的不足。IDL在系統中主要負責實現空間數據(含二維和三維)的本地訪問管理和表現,如空間數據的加載、本地管理、地圖渲染、三維顯示等;系統還可借助IDL強大的數據處理能力實現基于矩陣運算的各種分析功能。IDL部分經過良好的封裝被嵌入在客戶端的C# Shell中。

2.2客戶端程序框架

客戶端交互界面由C#和經過.NET封裝的IDL DrawWidget開發控件構建(圖2)。由于IDL并沒有像其他專業GIS開發組件(如ESRI的MapObjects或ArcObjects)一樣直接提供對GIS應用開發的支持,因而基本的GIS功能需要利用IDL自行實現。圖層控件用標準的Windows基本控件組合開發;鷹眼控件和地圖控件由經過.NET封裝的IDL DrawWidget開發控件來實現;比例尺控件由Windows繪圖函數與IDL函數共同實現。

2.3空間數據管理

系統中所有的空間數據由ArcSDE空間數據庫統一管理,系統與ArcSDE的交互由C# Shell負責管理,具體的交互功能在體系結構圖的Data Acess組件中實現。其中主要使用了經過 .NET封裝的ArcSDE C APIs空間數據庫訪問函數庫。

2.4空間數據處理與顯示

系統中使用IDL語言來進行對空間數據的處理與運算。IDL是目前對科學計算可視化支持較好的語言之一,是一種集成了所有科學計算環境中所需函數的面向矩陣運算、用于數據可視化研究與應用開發的第四代計算機語言,也是易于使用、面向矩陣的語言。它具有高級圖像處理能力、交互式二維和三維圖形技術、面向對象的編程方式、OpenGL 圖形加速、量化可視化表現、集成的數學與統計學算法、靈活的數據輸入/輸出方式、跨平臺圖形用戶界面工具包、連接ODBC 兼容數據庫存取及多種程序連接工具等功能,并且能夠運行于多種操作系統和硬件平臺之上。本質上,IDL是一個巨大的C程序庫,包括了編譯器、解釋器、圖像、算術處理器、用戶界面和大量依賴操作系統的代碼[5]。利用C#和IDL語言混合開發的系統,既包含了IDL語言強大的科學計算能力,又具備了C#語言對系統開發的靈活性以及系統運行的穩定性,使得兩種語言在系統中達到優勢互補,是實現科學計算及可視化的一種有效途徑。

3SDE訪問接口

系統采用了目前較為成熟的空間數據庫引擎ArcSDE與大型關系數據庫管理系統SQL Server來實現對空間數據的分布式存儲和管理。需要解決的首要問題是如何建立與ArcSDE的遠程連接,并與之實現交互操作。

ArcSDE提供的訪問通道有三條[6,7] (圖3)。三條通道中:使用ArcObjects成本太高;而直接數據庫連接通過SQL語言直接從關系型數據庫中獲取以表、行、列為基礎的數據,這種方法繞過了ArcSDE,適合于對非空間信息的訪問,但處理空間信息的難度很大;ArcSDE的Client APIs是較為基礎的一種功能發布形式,具有較長的歷史和非常廣泛的應用,它面向開放式系統開發,可以用于客戶端與ArcSDE的交互過程。系統中最終采用ArcSDE提供的C語言客戶端API方式,以便在保證系統性能的前提下,降低系統的開發和運行成本。

ArcSDE的C APIs具有較高的數據訪問性能、較完整的矢量和柵格數據訪問和管理能力。但是它是一個復雜的體系,包括30個結構、21個枚舉以及757個函數,并且不支持面向對象,也沒有提供對.NET環境的支持(只提供了C和Java兩個版本),因而難以直接在.NET環境中以不安全代碼(Unsafe)的方式訪問。

為解決這一問題,系統開發中利用托管(Managed)C++語言,將ArcSDE 的C APIs封裝為.NET環境支持的模塊,然后在.NET環境中使用(圖4)。

4IDL與C#通信機制

4.1IDL對混合編程的支持

IDL為了更好地實現軟件開發的靈活性和面向對象的功能,不斷地對功能進行擴充,并且增加了許多與其他語言之間的通信接口,并提供了許多與其他語言進行混合編程的內部API函數。IDL 6.0可以與標準C、UNIX C、Visual C++、Java、Delphi等高級語言進行混合編程。

IDL提供了以下幾種混合編程方法[8]:

(1)管道;

(2)在IDL中調用COM對象或ActiveX控件;

(3)IDL DrawWidget ActiveX控件;

(4)在IDL中使用Java對象;

(5)通過RPC調用IDL(UNIX);

(6)通過CALL_EXTERNAL函數調用外部函數。

4.2目標系統適用的方式

由于目標系統是在C#編程環境中使用IDL,IDL的Microsoft Windows版本的ActiveX控件,即IDL DrawWidget最適合本文目標系統開發的要求。IDL DrawWidget控件提供了在Windows程序中以ActiveX組件形式集成IDL功能的機制,為這些程序提供數據的分析和可視化能力。

IDL提供的IDL DrawWidget控件的主要特征如下[8]:

(1)IDL ActiveX控件能顯示IDL直接圖形和對象圖形,通過設置“圖形顯示方式”屬性,控制圖形的顯示類型。

(2)IDL ActiveX控件能夠響應鼠標事件。這些事件可以由外部程序觸發,也可以由IDL自己產生。

(3)IDL ActiveX控件提供了IDL與外部應用環境之間的數據傳輸機制,使得IDL與外部程序之間的數據傳輸變得十分簡單。

(4) IDL ActiveX控件可以應用于任何支持ActiveX控件的開發環境中。因此,可以將IDL強大的圖形顯示功能集成到外部應用程序中,脫離IDL環境,具有很強的可塑性。

4.3通信及數據支持

IDL提供了以下Method用于傳遞數據和命令[8]:

(1)SetNamedData——向IDL傳遞數據,支持所有的Variant數據格式;

(2)GetNamedData——支持VT_UI1、VT_I2、VT_I4、VT_R4、VT_R8和VT_BSTR;

(3)CopyNamedArray——返回IDL數組的復本;

(4)SetNamedArray——在.NET、Delphi等環境下不能實現數據共享,只能傳入數據;

(5)ExecuteStr——執行標準IDL語句,也可以作為一種數據的傳遞方式;

(6)VariableExists——用于判斷IDL環境中是否已經存在給定變量名稱的變量;

事件傳遞:

(1)鼠標事件由.NET環境處理;

(2)保留通過文本結果輸出來實現由IDL到.NET環境的主動事件激發的方式。

IDL對空間數據存儲格式的支持:

(1)矢量——支持直接讀寫Shapefile(通過IDLffShape類 )、DXF(IDLffDXF);

(2)柵格——不支持GRID空間數據,只支持讀寫圖像格式數據。

4.4C# 與IDL間的數據傳遞機制

由于IDL支持的空間數據格式有限,并且不支持ArcSDE,系統中不直接使用IDL讀取空間數據,而是由.NET主環境中的C# Shell負責從空間數據庫讀取數據,然后再傳入IDL環境。

IDL與主環境之間的數據傳遞只處理單值或者數組數據;而點、線、多邊形等較為復雜的矢量結構數據,需要首先分解為單值或數組后傳遞給IDL,再由IDL根據所給數據生成合適的對象圖形,實現空間數據的表現和管理(圖5)。

圖5空間數據的分解、傳遞、重構與再現

5IDL對象與GIS對象

IDL不直接支持GIS中空間數據的管理和表現,需要自己定義和實現該部分功能。系統實現中采用從IDL對象圖形類繼承的方式,擴展已有的IDL圖形功能,定義新的空間數據類。空間數據類完成從.NET環境接收單值和表格數據,并進行管理和渲染表現等任務。系統中IDL對象與GIS對象的封裝映射關系如圖6所示。

6結束語

利用IDL、ArcSDE和C# 來集成開發分布式GIS應用系統,三者相輔相成,優勢互補。其不但在很短的開發周期內以極低的開發成本建立非常專業的GIS應用系統,而且系統在保證數據安全性及性能的前提下,運行成本也很低廉,為GIS的應用提供了一種新的途徑。

參考文獻:

[1]劉光. 地理信息系統二次開發教程——組件篇[M]. 北京:清華大學出版社,2003: 1-2.

[2]ESRI Inc. ESRI:the GIS software leader[EB/OL].[2005].http://www.esri.com.

[3]RSI Inc. RSI:data analysis and visualization software[EB/OL].[2005].http://www.rsinc.com/pr/detail.asp?PRID=46.

[4]Microsoft Inc. MSDN home page[EB/OL].[2005].http://www.microsoft.com.

[5]閆殿武. IDL可視化工具入門與提高[M]. 北京:機械工業出版社,2003:1-360.

[6]ESRI Inc. Understanding ArcSDE[M/CD].[S.l.]:[s.n.],2002.

[7]ESRI Inc. ArcSDE 8.3 developer help guide[M/CD].[S.l.]:[s.n.],2003.

[8]RSI Inc. External development guide[M/CD].[S.l.]:[s.n.],2003.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 久久精品娱乐亚洲领先| 国产亚洲精品无码专| 亚洲综合狠狠| 欧美中文字幕在线播放| 国产在线观看99| 亚洲精品国产首次亮相| 欧洲免费精品视频在线| 久久精品中文无码资源站| 久久综合亚洲色一区二区三区| 综合社区亚洲熟妇p| 成年片色大黄全免费网站久久| 国产精品视频观看裸模| 精品无码一区二区在线观看| 国产成人精品优优av| 高清码无在线看| 欧美不卡视频在线观看| 91外围女在线观看| 精品乱码久久久久久久| 天天综合网色中文字幕| 国产成人盗摄精品| V一区无码内射国产| 黄色网页在线播放| 欧美成在线视频| 国产成人无码久久久久毛片| 这里只有精品国产| 四虎免费视频网站| 久久久久国产一级毛片高清板| 亚洲日韩AV无码一区二区三区人| 无码中文字幕乱码免费2| 91偷拍一区| 成人在线亚洲| 国产成人亚洲精品色欲AV| 91久久大香线蕉| 免费无码又爽又黄又刺激网站| 99热这里只有成人精品国产| 国产黄色片在线看| 亚洲swag精品自拍一区| 青青草原国产| 米奇精品一区二区三区| 88国产经典欧美一区二区三区| 特级精品毛片免费观看| 在线观看视频99| 欧美α片免费观看| 天堂成人在线| 成人午夜久久| 国产欧美日韩18| 国产欧美中文字幕| 欧美一区二区福利视频| 免费日韩在线视频| 国产欧美视频一区二区三区| 综合色婷婷| 精品福利视频导航| 一级一级一片免费| 在线中文字幕网| 综合亚洲网| 在线观看精品自拍视频| 欧美成人综合在线| 99久久国产综合精品女同| 免费精品一区二区h| 久热中文字幕在线| 园内精品自拍视频在线播放| 无码一区18禁| 无码日韩视频| 色综合久久无码网| 午夜激情福利视频| 波多野结衣国产精品| 怡红院美国分院一区二区| 91精品最新国内在线播放| 少妇精品在线| 欧美午夜在线观看| 国产精品手机在线播放| 91在线高清视频| 国产成人亚洲毛片| 亚洲欧美日韩中文字幕一区二区三区| 国产亚洲精品自在久久不卡 | 丁香婷婷激情网| 福利国产在线| 亚洲人成在线免费观看| 国产欧美日韩另类| 亚洲中文字幕无码爆乳| 一级成人a毛片免费播放| 国产农村1级毛片|