張建永,張景訓,李名松,劉朋濤,梁春利,石海崗
(1.核工業航測遙感中心,河北 石家莊 050002;2.內蒙古生態與農業氣象中心,內蒙古 呼和浩特 010051)
HJ-1 衛星遙感與地理信息系統的集成開發
張建永1,張景訓1,李名松1,劉朋濤2,梁春利1,石海崗1
(1.核工業航測遙感中心,河北 石家莊 050002;2.內蒙古生態與農業氣象中心,內蒙古 呼和浩特 010051)

闡述了基于ArcGIS Engine和IDL實現遙感及地理信息系統一體化集成的技術方法。以曹妃甸工業區遙感監測系統為例,介紹了相應功能、設計思路及實現過程。
遙感;地理信息系統;集成;開發
遙感與地理信息系統一體化集成有3個層次,即數據一體化管理與共享、平臺一體化分析及系統一體化集成開發[1]。數據一體化管理與共享是指實現RS和GIS軟件之間的數據互操作,可以通過數據格式的轉換來完成。該功能已經在多個商業軟件中實現,如PCI、ER Mapper、ERDAS、ENVI、ArcGIS等都支持多種文件格式的讀取。平臺一體化分析是指RS和GIS軟件平臺無縫鏈接,實現RS軟件中處理好的數據通過菜單傳送到GIS平臺中,避免了中間的保存、打開等步驟。ENVI與ArcGIS通過鏈接功能實現了此項工作,但也只是將數據顯示窗口的圖像傳送到ArcGIS平臺中,傳送后的圖像與原圖像不能聯動,一旦對圖像進行了處理就需要再次傳送到ArcGIS平臺中,且存在文件大小限制。系統一體化集成開發是指用戶針對自己的需求,在進行RS或GIS開發時,將專業的遙感影像數據處理功能和分析工具與GIS功能集成到同一系統平臺環境中,在同一系統中既能完成遙感數據的專業處理與分析,又能完成GIS分析和管理等功能,同時用戶可以針對業務需求在系統中開發相應的工具和處理流程,提高系統的適用性。
目前系統一體化集成開發中,ENVI/IDL與ArcGIS Engine的集成具有開發方便、功能強大的特點,有較為廣泛的應用。ENVI軟件本身是一個在IDL環境下開發的數字影像處理系統,提供了豐富的影像處理函數供IDL調用。同時IDL自身功能也非常強大,并具有很好的擴展性,能便捷地與其他常用開發環境(VB、VC、. NET、Java等)進行集成開發。因此,可以將IDL作為中間介質,自定義開發與調用ENVI圖像處理函數相結合,在常用開發環境下實現影像處理功能。ArcGIS Engine是由ESRI公司提供的面向開發的嵌入式GIS組件包,提供了豐富、強大的GIS制圖、分析功能函數以及許多高級GIS功能,可以方便、靈活地定制GIS解決方案。基于兩者進行開發,根據內部協議對兩者進行橋接,從而使得兩者能夠互相操作并應用對方的優勢能力[2,3]。利用ArcGIS Engine實現數據瀏覽、顯示、矢量編輯、渲染、制圖及空間分析功能,利用IDL實現影像數據處理過程。二者均是成熟平臺,可以快速實現系統無縫集成開發,降低程序的開發量和開發周期;同時可以靈活、方便地將專業的影像處理流程或矢量數據處理流程集成到系統中。本次研究開發平臺選擇Microsoft公司的Visual Studio2005,對ENVI/IDL與ArcGIS Engine都具有很好的兼容性。
3.1 系統框架體系
系統在設計中充分考慮數據的互操作性、業務邏輯的流程化和功能的可擴展性,打破了傳統的GIS與RS的壁壘,使用了可伸縮框架、多語言混合編程等前沿軟件技術。系統框架體系如圖1所示,整個系統邏輯上可以劃分為4個層次:數據庫層、應用平臺層、應用層、數據表現層。
1)數據庫層。數據庫層由ArcGIS Geodatabase數據庫構成,包括柵格數據子庫、矢量數據子庫和文檔數據子庫,用于將原始數據以及處理后的數據進行入庫管理,并建立必要的元數據信息,以實現多源空間數據的集中管理。
2)應用平臺層。應用平臺層主要為核心應用功能提供支撐,包括GIS基礎平臺功能開發(ArcGISEngine)、RS基礎平臺功能開發(ENVI/IDL)和數據管理系統。其中GIS基礎平臺功能在ArcGIS Engine基礎平臺上開發,提供數據瀏覽、數據檢查、格式轉換、矢量編輯、屬性編輯、空間分析等功能;RS基礎平臺功能在ENVI/IDL平臺基礎上,利用IDL進行開發,提供遙感圖像的導入導出、幾何校正、圖像增強、數據融合、分類等功能;數據管理系統提供數據入庫、綜合數據管理、數據統計分析、數據備份和系統管理等功能。

圖1 系統框架體系結構圖
3)應用層。應用層依據業務邏輯,結合應用模型,實現一些具體的面向系統最終用戶的業務邏輯及綜合分析評價功能,包括獨立的RS、GIS數據處理功能模塊和業務邏輯工具模塊。數據處理功能模塊包括圖像融合、分類、空間分析等功能;業務邏輯工具模塊對專有的數據處理和信息提取流程進行功能實現和批量化,包括專題信息提取、建模反演、數據評價等功能。
4)數據表現層。數據表現層利用ArcGIS Engine的MapControl、TOCControl、PageLayoutControl等控件實現系統界面,控制各類數據的表現和輸出,包括基礎數據顯示、符號化、縮放平移、制圖、輸出等。
3.2 系統實現的部分關鍵技術
3.2.1 柵格數據加載、渲染
柵格數據的加載和渲染過程主要基于ArcGIS Engine實現,用到ArcGIS Engine的IWorkspaceFactory、RasterWorkspace Factory、IRaster Workspace、IRasterDataset、IRaster、IRasterProps、IRaster Renderer、IRasterLayer、IRasterStretch ColorRampRenderer、IAlgorithmicColorRamp等 接 口 以 及OpenFromFile、OpenRasterDataset、CreateFullRaster、CreateRamp、Renderer等方法[4]。
主要實現過程如下。首先打開柵格文件。
Dim pWorkSpaceFactory As IWorkspaceFactory = New RasterWorkspaceFactory
Dim pRasterWorkSpace As IRasterWorkspace
pRasterWorkSpace = pWorkSpaceFactory.OpenFrom File(FolderName, 0)
Dim pRasterDataset As IRasterDataset =pRasterWork Space.OpenRasterDataset(FileName)
Dim pRasterDataset2 As IRasterDataset2 = pRasterDataset
Dim pRaster As IRaster = pRasterDataset2.CreateFullRaster
再創建柵格文件渲染器,并對渲染器進行設置。
Dim pStretchRen As IRasterStretchColorRampRenderer pStretchRen = New RasterStretchColorRampRenderer Dim pRasRen As IRasterRenderer = pStretchRen pRasRen.Raster = pRaster
最后創建柵格文件圖層,將圖層的渲染方式設置為上述渲染器。
Dim pRLayer As IRasterLayer = New RasterLayer //創建柵格圖層文件
pRLayer.CreateFromRaster(pRaster)
pRLayer.Renderer = pStretchRen //對柵格圖層渲染
3.2.2 專題信息提取
以葉綠素信息提取為例,葉綠素信息的提取基于IDL和經驗模型實現,利用IDL對遙感影像數據進行運算。以葉綠素提取的經驗統計模型算法為例,該算法以遙感數據的“波段組合比值法”為基礎,實現過程如下:
打開對應的遙感圖像柵格文件。
Filenames=envi_pickfile(title='打開文件',filter='*.*',/ MULTIPLE_FILES)
envi_open_file,filenames[i],r_fid=r_fid
envi_file_query,r_fid,dims=dims,nb=nb,nl=nl,ns=ns
獲取對應的波段數據。
Dataori=envi_get_data(fid=r_fid,dims=dims,pos=0)
依據經驗模型對數據進行運算。
Data[j]=alog((Dataori[j]-a)/b) ;a為水體的固有光學參數吸收系數,b為后向散射系數。
將計算結果保存為文件。
envi_write_envi_file,Data,nb=1,nl=nl,ns=ns,bnames= bnames,descrip=descrip,out_name=outfile
3.2.3 VS中調用IDL
1)添加IDL控件:在VS2005工具箱中添加選擇項---COM組件---IDLDrawWidget Control
2)初始化IDL控件:
m_IDLControl.IdlPath="C:ProgramFilesITTIDL70inin.x86idl.dll"
m_IDLInitFlag = m_IDLControl.InitIDL(frmMain.Handle)
3)在具體響應事件中調用函數處理文件(pro或者sav):
m_IDLControl.ExecuteStr(".COMPILE " & IDLExecuteString) //pro文件
m_IDLControl.ExecuteStr("restore,'" & IDLExecuteString & "'") //sav文件
ExeStr="IDL_Function_Name,'" +InputFile + "','" + OutpuFile + "'" //有參數形式
ExeStr="IDL_Function_Name" //無參數形式,在IDL代碼中執行打開、保存文件功能
m_IDLControl.ExecuteStr(ExeStr) //執行程序
3.3 擴展模塊
為了完善系統功能,滿足用戶業務邏輯的多樣化需要,本系統基于VS2005的Reflection、Assembly和IDL的調用執行方式設計了擴展模塊,提供功能擴展接口,用戶可以編寫擴展模塊,添加新的圖像處理方法或新的應用流程。加載擴展插件主要實現過程如下:
Dim plugin As New Plugin
Dim pMenu As New ToolStripMenuItem(plugin.MenuName)
AddHandler pMenu.Click, New EventHandler (AddressOf ExecuteIDLExt)
mnuExtension.DropDownItems.AddRange(New ToolStripMenuItem() {pMenu})

圖2 曹妃甸遙感監測系統主界面

圖3 HSV數據融合示意圖
曹妃甸遙感監測系統是以國產HJ-1衛星數據為主要數據源,針對環境監測的內容和需求,對多源數據進行管理,并提取相關的專題信息,以實現監測曹妃甸工業區環境變化為目標的應用系統。
根據應用系統需求,在一體化框架基礎上,增加了陸區監測、海洋監測和甸區監測等菜單,土地利用、水土流失、植被監測、沿岸水質、海面溫度、懸浮泥沙濃度、海冰、赤潮等專項信息提取子菜單,并針對HJ-1衛星的數據特點,結合經驗模型對這些信息提取實現了流程化和批量化處理。系統主界面如圖2所示,基于IDL的HSV數據融合過程如圖3所示。
RS與GIS一體化集成技術為集影像數據處理、應用分析和信息提取為一體的空間信息平臺提供了良好的解決方案,保證了信息流的完整性和連貫性,將多源信息的采集、處理和應用分析進行了統一。與以往的信息提取集成方法相比,具有精度高、提取速度快、綜合程度高、節約系統資源、流程化等優點。將一體化集成框架應用到曹妃甸遙感監測系統中,構建了包括圖像處理、地表監測、海洋監測等專題信息提取功能,實現集信息快速收集和分析為一體的完整監測系統,對曹妃甸工業區的建設和環境保護具有積極的推動和促進作用。
[1] 鄧書斌,陳秋錦.遙感與GIS一體化集成技術[J].遙感信息,2009(5):97-98
[2] 宮鵬,趙永超,俞靚,等.全球尺度下遙感與地理信息系統一體化軟件平臺研究進展[J].地理信息世界,2011(4):34-37
[3] ESRI. ArcGIS Engine Developer Guide [M].ESRI Press,2004
[4] ITT. IDL User Guide [M].ITT Press,2008
[5] 蔣波濤. ArcObjects開發基礎與技巧——基于VisualBasic.NET [M].武漢:武漢大學出版社,2006
P208
B
1672-4623(2015)02-0045-03
10.3969/j.issn.1672-4623.2015.02.017
張建永,高級工程師,研究方向為GIS、遙感軟件的應用及集成、開發。
2014-03-20。
項目來源:環境星應用推廣工程資助項目(A01A0100)。