国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ArcGIS Engine的柵格數(shù)據(jù)批量處理方法

2016-12-28 06:12張建永梁春利石海崗張春雷
地理空間信息 2016年10期
關(guān)鍵詞:批量柵格投影

張建永,梁春利,石海崗,張春雷

(1.核工業(yè)航測遙感中心,河北 石家莊 050002)

基于ArcGIS Engine的柵格數(shù)據(jù)批量處理方法

張建永1,梁春利1,石海崗1,張春雷1

(1.核工業(yè)航測遙感中心,河北 石家莊 050002)

基于ArcGIS 的二次開發(fā)工具包ArcGIS Engine,從柵格數(shù)據(jù)檢查、坐標(biāo)系統(tǒng)定義、投影轉(zhuǎn)換、范圍裁切等方面,介紹了對柵格數(shù)據(jù)各類信息讀寫和調(diào)用ArcGIS工具的批量處理方法,并在實踐中取得了很好的效果,為實際應(yīng)用及擴展提供了技術(shù)基礎(chǔ)。

柵格數(shù)據(jù);批處理;ArcGIS Engine;Dot NET

在常用的遙感數(shù)據(jù)格式中,ERDAS軟件的Image文件是一種較為常見的格式,具有可存儲多種類型數(shù)據(jù)(圖像數(shù)據(jù)、統(tǒng)計數(shù)據(jù)、直方圖、專題圖等)、存儲信息豐富(傳感器、投影、地理、分層、分塊等)、讀寫方便、圖像算法易實現(xiàn)等特點,是柵格數(shù)據(jù)的常用格式。在國內(nèi)外多種遙感、地理信息軟件平臺中,對該格式都有較好的支持。本文基于ArcGIS軟件的開發(fā)工具包(ArcGIS Engine),探討海量ERDAS Image格式文件的批量處理方法,通過搭建流程化的處理框架,為快速、高效、準(zhǔn)確完成柵格數(shù)據(jù)處理工作提供思路。

1 批量處理方法分析

1.1 ArcGIS批處理模式

ArcGIS平臺中的各類圖像處理工具本身具有批量處理的功能。在工具上點擊右鍵,選擇“Batch”,即可彈出批量處理對話框。該模式為ArcGIS平臺批量處理的通用模式,但每次只能執(zhí)行一個工具,對需要進行處理的數(shù)據(jù)和處理后數(shù)據(jù)的存放目錄、文件命名都有一定要求,限制較多。而日常的數(shù)據(jù)處理工作大都不滿足這樣的條件。

1.2 空間建模

ArcGIS平臺帶有Model Builder模型構(gòu)建器,可以將一系列處理工具串聯(lián)在一起構(gòu)成工作流。模型的構(gòu)建包括數(shù)據(jù)處理工具和數(shù)據(jù)源,以流程圖的形式表示,相當(dāng)于一種圖形化編程。通過建立模型,對技術(shù)人員的要求大大降低,能夠重復(fù)使用,減少重復(fù)性的工作。但迭代器的使用有較大限制,且僅能調(diào)用ArcGIS自身的工具,在實際應(yīng)用中靈活性不足。

1.3 二次開發(fā)

ArcGIS提供了二次開發(fā)組件函數(shù),支持Python、 Perl、Java、Dot NET(C#、VB)等多種開發(fā)語言,能夠方便實現(xiàn)各類數(shù)據(jù)處理功能。從各種開發(fā)語言功能強弱、實現(xiàn)的難易程度、兼容性、可擴展性等方面綜合考慮,基于ArcGIS Engine + Dot NET的開發(fā)是解決海量數(shù)據(jù)批處理行之有效的方法。在開發(fā)的過程中,還可以依據(jù)用戶實際需求,靈活實現(xiàn)對數(shù)據(jù)的條件選擇、多個工具之間組合處理、質(zhì)量檢查、錯誤判斷、進度控制等功能。

2 ArcGIS Engine簡介

ArcGIS Engine 是 ESRI ArcGIS軟件中推出的一組完備的嵌入式 GIS 組件庫和工具庫,供開發(fā)人員創(chuàng)建新的或擴展已有的桌面應(yīng)用程序。與ArcObjects相比,ArcGIS Engine 的結(jié)構(gòu)合理靈活,具有更為強大的開發(fā)功能和獨立性。

ArcGIS Engine的開發(fā)包包括了控件、工具命令集和對象庫3個部分,涉及了低層次的API和高層次的控件。同時通過GeoProcessor可以方便調(diào)用ArcGIS自身工具包?;谶@些優(yōu)點,開發(fā)者能將ArcGIS功能快速集成到GIS 解決方案中,開發(fā)出功能強大、適應(yīng)各種需求的 GIS 程序和系統(tǒng),給開發(fā)人員帶來了極大的靈活性和便利。

3 程序體系結(jié)構(gòu)及流程

本文以Visual Studio.NET 2010為開發(fā)平臺,采用VB可視化編程語言,建立基于 ArcGIS Engine 10組件的柵格數(shù)據(jù)批量檢查處理模塊,主要實現(xiàn)對柵格數(shù)據(jù)的文件完整性檢查、坐標(biāo)系統(tǒng)檢查、坐標(biāo)系統(tǒng)定義、投影轉(zhuǎn)換、范圍裁切、屬性統(tǒng)計等功能,如圖1。

文件完整性檢查用于檢查柵格文件是否創(chuàng)建了金字塔,影像文件是否損壞,文件行列數(shù)、像素類型、像素深度、波段數(shù)、像元大小等信息與元數(shù)據(jù)是否一致。

坐標(biāo)系統(tǒng)檢查用于判斷柵格文件是否存在空間參照坐標(biāo)系統(tǒng)。如果存在,檢查影像范圍是否滿足空間參照的坐標(biāo)范圍區(qū)間;如果不存在,則獲取影像的坐標(biāo)范圍區(qū)間,為設(shè)置該影像的坐標(biāo)系統(tǒng)提供參考。

坐標(biāo)系統(tǒng)定義用于影像文件丟失空間參照的情況。判斷影像文件坐標(biāo)范圍是否為地理坐標(biāo)區(qū)間或含帶號的投影坐標(biāo)區(qū)間,是則利用ArcGIS工具設(shè)定其坐標(biāo)系統(tǒng);不是則將該文件編號寫入文件記錄,后續(xù)人工進行檢驗。

圖1 程序體系結(jié)構(gòu)圖

投影轉(zhuǎn)換是將影像的地理坐標(biāo)系統(tǒng)或投影坐標(biāo)系統(tǒng)轉(zhuǎn)換為目標(biāo)文件投影的過程。依據(jù)轉(zhuǎn)換前后不同的坐標(biāo)類型,轉(zhuǎn)換中使用的計算模型也不同。

范圍裁切是根據(jù)目標(biāo)范圍,對柵格影像進行裁切的過程。目標(biāo)范圍可以是矩形,也可以是不規(guī)則形狀的矢量文件。

信息統(tǒng)計是對裁切后的成果文件進行統(tǒng)計,包括建立金字塔,獲取影像的坐標(biāo)范圍、行列數(shù)、波段數(shù)等信息并寫入到元數(shù)據(jù)文件中。

4 主要功能實現(xiàn)

4.1 柵格數(shù)據(jù)檢查

在柵格數(shù)據(jù)的存儲轉(zhuǎn)換中,由于文件尺寸較大,可能存在數(shù)據(jù)缺失或損壞的情況。因此在數(shù)據(jù)數(shù)據(jù)處理前,要先判斷數(shù)據(jù)是否完整。通過創(chuàng)建柵格數(shù)據(jù)集的方式打開文件,并讀取文件的屬性信息,來檢查文件的完整性。通過IWorkspaceFactory、IRasterWorkspace、IRasterDataset、Iraster等接口打開柵格文件,利用 IRasterDataset、IRaster、IRasterBandCollection、IRawBlocks、IRasterInfo、IRasterPorps、IRasterPyramid等接口獲取柵格文件的波段信息、像元尺寸、行列數(shù)、坐標(biāo)范圍、數(shù)據(jù)類型、文件格式等屬性信息,檢查是否與數(shù)據(jù)自身的元數(shù)據(jù)一致。

打開文件的主要功能如下:

pRasterWorkSpace = pWorkSpaceFactory.OpenFrom File(FolderName, 0)

//利用柵格數(shù)據(jù)的工作空間工廠和柵格數(shù)據(jù)工作空間,訪問柵格數(shù)據(jù)文件夾

pRasterDataset =pRasterWorkSpace.OpenRaster Dataset(FileName)

//利用柵格工作空間,打開柵格文件,返回值是柵格數(shù)據(jù)集

Dim pRaster As IRaster = pRasterDataset2.CreateFullRaster

/

/在內(nèi)存中創(chuàng)建柵格數(shù)據(jù)的實例,獲取柵格數(shù)據(jù)的具體內(nèi)容

獲取柵格文件屬性信息的主要功能如下:

Dim pRasterBandCollection As IRasterBandCollection = pRasterDataset

//定義柵格波段集合的變量,用于訪問柵格文件的各個波段

Dim pRawBlocks As IRawBlocks = pRasterBandCollection. Item(0)

//定義數(shù)據(jù)塊變量,用于讀取柵格數(shù)據(jù)

Dim pRasterInfo As IRasterInfo = pRawBlocks.RasterInfo

//定義柵格文件信息變量,用于訪問各類詳細的柵格文件信息

利用IRasterInfo接口的CellSize、Extent、Height、Width、Format、PixelType等屬性獲取柵格文件的對應(yīng)信息。

4.2 坐標(biāo)系統(tǒng)檢查

柵格文件的坐標(biāo)系統(tǒng)信息能夠表明柵格文件的空間位置,是其重要的組成部分。數(shù)據(jù)處理過程中,需要通過影像的坐標(biāo)系統(tǒng)信息來判斷該文件是否處于數(shù)據(jù)處理的范圍內(nèi)。坐標(biāo)系統(tǒng)的檢查分為兩步,首先判斷影像是否存在坐標(biāo)系統(tǒng),其次判斷坐標(biāo)系統(tǒng)是否準(zhǔn)確。

通過獲取影像的空間坐標(biāo)參照信息,判斷是否存在坐標(biāo)系統(tǒng):

Dim pRasterProps As IRasterProps = pRaster

//定義柵格文件屬性變量,用于訪問柵格文件的屬性

Dim pRasterSPR As ISpatialReference = pRasterProps. SpatialReference

//定義空間參照變量,用戶檢查柵格數(shù)據(jù)的坐標(biāo)系統(tǒng)是否正確

如果柵格影像的坐標(biāo)參照為空,則pRasterSPR的Abbreviation、Alias、Remarks等屬性值為空;Name屬性值為"Unknown"。

如果柵格影像的坐標(biāo)參照不為空,則判斷其類型是地理坐標(biāo)系統(tǒng)或者投影坐標(biāo)系統(tǒng)。同時檢查柵格文件的坐標(biāo)范圍是否與相應(yīng)的坐標(biāo)系統(tǒng)值域范圍匹配,以便進行后續(xù)坐標(biāo)轉(zhuǎn)換工作。

4.3 調(diào)用ArcGIS工具

柵格數(shù)據(jù)的數(shù)據(jù)處理工作如投影轉(zhuǎn)換、范圍裁切等可以直接調(diào)用ArcGIS軟件的工具進行。ArcGIS Engine中可以利用ESRI.ArcGIS.Geoprocessor類中的Geoprocessor接口來調(diào)用ArcGIS自帶的工具。調(diào)用時首先設(shè)置工具的各項參數(shù),然后通過Geoprocessor接口的Execute方法執(zhí)行工具,利用GetMessage方法返回工具執(zhí)行過程中的狀態(tài)信息。

4.4 定義文件坐標(biāo)系統(tǒng)

如果柵格文件缺失坐標(biāo)信息,需要設(shè)定其坐標(biāo)系統(tǒng)。通過檢查影像文件的坐標(biāo)范圍,判斷采用的坐標(biāo)系統(tǒng)類型及對應(yīng)的橢球體等參數(shù)來進行坐標(biāo)系統(tǒng)的設(shè)定。如為投影坐標(biāo)系統(tǒng)還需通過影像的坐標(biāo)范圍判斷柵格文件的中央經(jīng)度,確定投影參數(shù)。設(shè)定坐標(biāo)系統(tǒng)的過程主要利用ESRI.ArcGIS.DataManagementTools類中的DefineProjection接口進行,通過設(shè)定2個參數(shù),即需要處理的文件和對應(yīng)的坐標(biāo)系統(tǒng),可完成該功能。

Dim pDefineProjection As ESRI.ArcGIS.DataManagement Tools.DefineProjection = New DefineProjection

//定義一個投影設(shè)置工具,用于設(shè)置柵格數(shù)據(jù)的坐標(biāo)信息,下面為相應(yīng)的參數(shù)設(shè)置

pDefineProjection.in_dataset = pCurrentRasterFile

pDefineProjection.coor_system = strProj

GP.Execute(pDefineProjection, Nothing)

4.5 投影轉(zhuǎn)換

若現(xiàn)有文件的坐標(biāo)系統(tǒng)與要求不同,則需進行投影轉(zhuǎn)換。投影轉(zhuǎn)換功能可以將地理坐標(biāo)系統(tǒng)或投影坐標(biāo)系統(tǒng)轉(zhuǎn)換為投影坐標(biāo)系統(tǒng)。投影轉(zhuǎn)換功能主要利用ESRI.ArcGIS.DataManagementTools類中的ProjectRaster接口來實現(xiàn),通過設(shè)定該接口的輸入柵格、輸出柵格、輸出坐標(biāo)系統(tǒng)3項參數(shù)來進行投影轉(zhuǎn)換。同時可以利用像元尺寸(cell_size)、重采樣方式(resampling_ type)2個屬性參數(shù)對輸出柵格的影像進行調(diào)整。如果坐標(biāo)轉(zhuǎn)換前后的坐標(biāo)系統(tǒng)涉及2個橢球體,則需要設(shè)定橢球之間的轉(zhuǎn)換模型,即geographic_transform參數(shù)。如1954年北京坐標(biāo)系與WGS84之間的轉(zhuǎn)換,不同的地理位置選用不同的轉(zhuǎn)換模型,如Beijing_1954_To_ WGS_1984_1、Beijing_1954_To_WGS_1984_2等。

Dim ProjectRasterDataset As ProjectRaster = New ProjectRaster

//定義一個投影轉(zhuǎn)換工具,下面為相應(yīng)的參數(shù)設(shè)置

ProjectRasterDataset.in_raster = pCurrentRasterFile

ProjectRasterDataset.out_raster = pReprojectOutRasterFile

ProjectRasterDataset.out_coor_system = pProjectFeature ClassSPR

4.6 范圍裁切

柵格數(shù)據(jù)范圍裁切是截取所需要的一定坐標(biāo)范圍內(nèi)的柵格數(shù)據(jù)的功能。柵格范圍裁切可以利用空間分析工具(ESRI.ArcGIS.SpatialAnalyst)中的IExtractionOp接口、數(shù)據(jù)管理工具(ESRI.ArcGIS. DataManagementTools)中的Clip接口來實現(xiàn),但二者應(yīng)用的情形不同。IExtractionOp接口可以基于多邊形要素對柵格文件進行裁切,Clip接口是基于坐標(biāo)范圍進行裁切。本文的裁切范圍主要是基于標(biāo)準(zhǔn)圖幅范圍外擴,所以利用Clip接口更為方便快捷。設(shè)定Clip接口的輸入柵格、輸出柵格及輸出范圍3個參數(shù),即可實現(xiàn)該操作。

Dim pDataManagementClip As Clip = New Clip

//定義一個裁切工具,用于對柵格數(shù)據(jù)進行范圍裁切,下面為相應(yīng)的參數(shù)設(shè)置

pDataManagementClip.in_raster = inRaster

pDataManagementClip.out_raster = pTempOutFileName

pDataManagementClip.rectangle = XMin & " " & YMin & " " & XMax & " " & YMax

5 實 驗

依據(jù)上述思路,作者編寫了柵格數(shù)據(jù)批量處理的模塊,界面如圖2所示。經(jīng)過實驗,利用該模塊進行數(shù)據(jù)處理不僅能保證數(shù)據(jù)的準(zhǔn)確性和精度,且處理效率有很大提高,能夠進行大批量的自動處理,有效節(jié)約人員成本,縮短處理時間。

P208

B

1672-4623(2016)10-0043-03

10.3969/j.issn.1672-4623.2016.10.012

2016-01-18。

項目來源:中國地質(zhì)調(diào)查局國產(chǎn)衛(wèi)星數(shù)據(jù)質(zhì)量改進與地礦綜合應(yīng)用示范項目(1212011220158)。

猜你喜歡
批量柵格投影
基于鄰域柵格篩選的點云邊緣點提取方法*
批量提交在配置分發(fā)中的應(yīng)用
解變分不等式的一種二次投影算法
基于最大相關(guān)熵的簇稀疏仿射投影算法
基于A*算法在蜂巢柵格地圖中的路徑規(guī)劃研究
找投影
找投影
基于VBA井斜數(shù)據(jù)批量校正方法
在數(shù)控車床上批量鉆鉸孔類工件的實踐
不同剖面形狀的柵格壁對柵格翼氣動特性的影響