趙成福
[摘 要]本文在測繪數(shù)字化產(chǎn)品檢查流程和過程的基礎(chǔ)上,基于ArcGIS插件技術(shù)設(shè)計了一個輔助人工檢查信息記錄的工具,實現(xiàn)了人工檢查記錄信息的標(biāo)準(zhǔn)化記錄和交換共享,具有一定的參考價值。
[關(guān)鍵詞]質(zhì)量檢查;檢查記錄;ArcGIS插件;報表
doi:10.3969/j.issn.1673 - 0194.2016.06.112
[中圖分類號]P208 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673-0194(2016)06-0-03
0 引 言
在測繪數(shù)字化產(chǎn)品質(zhì)量檢查當(dāng)中,可以采用軟件自動分析和判斷的計算機(jī)自動檢查、人機(jī)交互的計算機(jī)輔助檢查和人工檢查等幾種方式。自動檢查和人機(jī)交互檢查可以通過編寫專業(yè)的檢查軟件實現(xiàn)。但是現(xiàn)在的測繪數(shù)字化產(chǎn)品趨于多源化,包括不同的數(shù)據(jù)格式和不同的空間坐標(biāo)系等。一個專業(yè)數(shù)據(jù)質(zhì)量檢查軟件一般是針對某個項目或數(shù)據(jù)內(nèi)容設(shè)計相應(yīng)的檢查方案和輸出檢查成果,兼容所有檢查數(shù)據(jù)源具有較大的難度。同時,專業(yè)軟件在自動檢查的過程中由于智能化水平的限制,目前還會產(chǎn)生大量人工排查的疑似質(zhì)量錯誤。因此,人工檢查也是目前測繪數(shù)字產(chǎn)品質(zhì)量把關(guān)不可缺少的部分。人工檢查雖然可以檢查軟件無法判斷的質(zhì)量錯誤,但是檢查效率不高。在人工記錄檢查記錄的過程中,存在多種檢查結(jié)果格式和檢查項命名的問題,為質(zhì)量檢查數(shù)據(jù)的交換、共享和使用帶來了一定難度。
目前青海省測繪地理信息局主要采用ArcGIS平臺軟件進(jìn)行數(shù)據(jù)的生產(chǎn)、加工和使用。ArcGIS是美國環(huán)境系統(tǒng)研究所(ESRI)公司開發(fā)的地理信息平臺級產(chǎn)品,對目前主流的矢量和柵格數(shù)據(jù)都支持。本文結(jié)合測繪數(shù)字產(chǎn)品質(zhì)量檢查的流程與方法,基于ArcGIS插件技術(shù)設(shè)計了一個既符合數(shù)據(jù)檢查流程又簡單通用的輔助人工實現(xiàn)數(shù)據(jù)質(zhì)量檢查信息記錄的工具。
1 測繪數(shù)字化產(chǎn)品數(shù)據(jù)檢查過程分析
1.1 檢查流程
本文中的質(zhì)檢記錄工具結(jié)合青海省測繪地理信息局的質(zhì)量業(yè)務(wù)流程進(jìn)行設(shè)計,數(shù)據(jù)需要經(jīng)過三級檢查,包括部門一級檢查、中心或院級二級檢查、省質(zhì)檢站三級檢查。
1.2 檢查過程
質(zhì)量檢查過程包括提交檢查數(shù)據(jù)、接收檢查數(shù)據(jù)、檢查數(shù)據(jù)質(zhì)量,合格后提交下一級檢查,不合格數(shù)據(jù)返回數(shù)據(jù)修改部門。以上檢查過程在3個質(zhì)檢部門均要進(jìn)行,整個檢查過程中的檢查信息需要以圖形標(biāo)記結(jié)合屬性信息的方式記錄,并按檢查報表格式反饋給數(shù)據(jù)作業(yè)員。
2 ArcGIS插件開發(fā)技術(shù)解析
2.1 簡介
ArcGIS 10版本引入了桌面插件模型(Add-in),Add-in插件能夠很方便地在用戶之間共享,因為它們既不需要安裝程序,也不需要組件模型(COM)注冊, 使用戶更容易定制和擴(kuò)展ArcGIS桌面應(yīng)用。Add-in插件支持的對象類型包括按鈕和工具、組合框、多項目、可??看翱凇⒕庉嬈鲾U(kuò)展、服務(wù)對象擴(kuò)展、工具欄、工具盤、菜單和上下文菜單等。Add-ins插件可以基于C#、Java、Python的語言開發(fā)。
2.2 開發(fā)方法
本文利用Visual Studio 2010集成開發(fā)環(huán)境中C#語言,通過ArcObjects組件集的開發(fā)工具包(SDK)提供的Add-in向?qū)ч_發(fā)插件擴(kuò)展應(yīng)用程序。
首先,使用VisualStudio的新建工程向?qū)?,選擇ESRI提供的ArcGIS Add-in的ArcMap應(yīng)用插件模板,通過向?qū)нx擇第一個或多個添加到Add-in里的對象類型,本文主要用到Button、Editor-Extension兩個擴(kuò)展對象。為擴(kuò)展對象填寫包括類名稱、標(biāo)題、工具分類、氣泡提示、功能描述和幫助文件等信息,點擊Finish完成擴(kuò)展插件的工程創(chuàng)建。
其次,在按照相應(yīng)的類編寫功能實現(xiàn)自定義對象的邏輯時,有一個和工程相對應(yīng)的ArcGIS Desktop程序?qū)ο?,該?nèi)置程序?qū)ο笫茿rcMap的靜態(tài)類,該靜態(tài)類包含一些靜態(tài)對象,如Application、Document、Events,通過這些對象就很容易在代碼里獲得包含Add-in的地圖文檔實例,繼而獲得類似Map這些核心編程對象。
2.3 Add-in安裝部署
Add-in的部署也十分簡單,可以把編譯好的Add-in文件復(fù)制到需要部署的安裝了ArcGIS Desktop的機(jī)器上。然后通過ArcGIS Desktop應(yīng)用程序的Add-in Manager來安裝Add-in插件,也可以通過它來卸載。安裝插件不需要重啟ArcGIS Desktop應(yīng)用程序。
3 工具設(shè)計
本文中的工具設(shè)計將從需求分析、功能模塊設(shè)計、數(shù)據(jù)庫表設(shè)計和代碼實現(xiàn)的幾個關(guān)鍵方面展開。
3.1 需求分析
根據(jù)實際的業(yè)務(wù)需求調(diào)查,用戶要求基于ArcGIS桌面版環(huán)境,開發(fā)一個易于部署和使用,能對多源數(shù)據(jù)進(jìn)行檢查信息記錄,以圖形交互的方式添加、修改、刪除質(zhì)量檢查圖形和屬性記錄,并且能按照規(guī)定的模板格式輸出檢查記錄報表的功能軟件。軟件操作流程和具體功能包括:①創(chuàng)建檢查記錄數(shù)據(jù)庫;②添加和修改基本檢查信息;③添加檢查數(shù)據(jù)源開始人工檢查;④交互式添加和修改檢查記錄圖形和信息;⑤輸出標(biāo)準(zhǔn)格式檢查記錄報表。
3.2 功能模塊設(shè)計
根據(jù)需求分析,將質(zhì)量檢查記錄工具分為檢查記錄數(shù)據(jù)庫創(chuàng)建、基本記錄信息修改、檢查記錄添加、檢查記錄修改及檢查記錄輸出5個模塊。①檢查記錄數(shù)據(jù)庫創(chuàng)建模塊實現(xiàn)了File GeoDataBase數(shù)據(jù)庫、檢查記錄要素層、基本信息記錄表的自動創(chuàng)建功能;②基本信息修改模塊實現(xiàn)了基本檢查信息(項目名稱、區(qū)域范圍、檢查內(nèi)容、作業(yè)員、檢查者、檢查日期、復(fù)查者、復(fù)查日期)的修改功能;③檢查記錄添加模塊實現(xiàn)了檢查記錄信息(檢查內(nèi)容、處理意見、缺陷情況、缺陷子情況、修改情況)的添加功能;④檢查記錄修改模塊實現(xiàn)了檢查記錄信息的修改功能;⑤檢查記錄輸出模塊實現(xiàn)了檢查記錄報表輸出功能。
3.3 數(shù)據(jù)庫設(shè)計
質(zhì)量檢查記錄數(shù)據(jù)庫以ArcGIS File GeoDataBase格式建立,內(nèi)部包括檢查圖形標(biāo)記層和基礎(chǔ)檢查信息記錄表。
基礎(chǔ)檢查信息表記錄了項目名稱、檢查范圍名稱、檢查內(nèi)容、檢查類型、作業(yè)員、檢查員、檢查日期、復(fù)查員和復(fù)查日期等信息。
檢查記錄要素層記錄了要素具體的錯誤位置,屬性包括錯誤記錄ID、檢查內(nèi)容、處理意見、缺陷情況、缺陷子情況、缺陷類型和修改情況等信息。
3.4 關(guān)鍵代碼
ArcGIS 插件技術(shù)中的編輯器擴(kuò)展Editor-Extensions允許開發(fā)人員通過該編輯擴(kuò)展接口來自定義編輯工作流程和自定義編輯會話的功能。本文利用編輯器擴(kuò)展接口實現(xiàn)如下功能:當(dāng)用戶開始編輯時,用繪制要素工具繪制要素后,自動彈出檢查記錄添加對話框,用戶填寫相關(guān)檢查信息后,點擊確定完成一條檢查記錄的交互添加。以下是交互添加要素時顯示記錄添加對話框的關(guān)鍵代碼。
public class EditorExtension : ESRI.ArcGIS.Desktop.AddIns.Extension //繼承Extension類
{
……//此處其他代碼省略
protected override void OnStartup()//重寫基類OnStartup方法
{
//開始編輯事件委托
Events.OnStartEditing += newIEditEvents_OnStartEditingEventHandler(Events_OnStartEditing);
//停止編輯事件委托
Events.OnStopEditing += new IEditEvents_OnStopEditingEventHandler(Events_OnStopEditing);
}
//開始編輯事件
private void Events_OnStartEditing()
{
//添加創(chuàng)建要素事件委托
Events.OnCreateFeature += new IEditEvents_OnCreateFeatureEventHandler(Events_OnCreateFeature);
}
//停止編輯事件
Privatevoid Events_OnStopEditing(bool Save)
{
if (ArcMap.Editor.EditWorkspace.Type != esriWorkspaceType.esriFileSystemWorkspace)
{
//解除創(chuàng)建要素事件委托
Events.OnCreateFeature -= new IEditEvents_OnCreateFeatureEventHandler(Events_OnCreateFeature);
}
}
//要素創(chuàng)建事件
Privatevoid Events_OnCreateFeature(ESRI.ArcGIS.Geodatabase.IObjectpEditObject)
{
IFeaturepFeature = (IFeature)pEditObject;
if (pFeature.Class is IValidation)
{
IValidate pValidate = (IValidate)pFeature;
string strErrorMessage = string.Empty;
boolbIsvalid = pValidate.Validate(out strErrorMessage);
if (!bIsvalid)
{
MessageBox.Show("無效的要素\n\n" + strErrorMessage);
}
else //如果添加的要素有效,彈出窗體,添加的要素傳遞給窗體類
{
DataCheckFillInfoFormpDataCheckFillInfoForm = new DataCheckFillInfoForm(ref pFeature);
pDataCheckFillInfoForm.ShowDialog();
pDataCheckFillInfoForm = null;
}
}
}
……//此處其他代碼省略
}
3.5 工具應(yīng)用
ArcGIS插件主要應(yīng)用在青海省測繪地理信息局下屬各部門的數(shù)據(jù)質(zhì)量檢查工作中,以下是質(zhì)量檢查記錄工具的界面,如圖1所示,該工具基于ArcGIS10.1+Visual Studio 2010開發(fā)。
4 結(jié) 語
基于ArcGIS插件技術(shù)質(zhì)量檢查記錄工具的開發(fā),實現(xiàn)了多源數(shù)據(jù)檢查結(jié)果的記錄和各級檢查部門檢查數(shù)據(jù)以標(biāo)準(zhǔn)化的共享交換。本工具在青海省測繪地理信息局各業(yè)務(wù)部門的實際工作中得到了應(yīng)用,是筆者從事相關(guān)工作經(jīng)驗的總結(jié),具有一定的參考價值。
主要參考文獻(xiàn)
[1]國家測繪局測繪標(biāo)準(zhǔn)化研究所.數(shù)字測繪產(chǎn)品檢查驗收和質(zhì)量評定(GB/T 18316-2001)[S].2001.
[2]國家測繪產(chǎn)品質(zhì)量監(jiān)督檢驗測試中心.測繪成果質(zhì)量檢查與驗收(GB/T 24356-2009)[S].2009.
[3]牟乃夏.ArcGIS Engine地理信息系統(tǒng)開發(fā)教程——基于C#.NET[M].北京:科學(xué)出版社,2015.
[4]李崇貴.ArcGIS Engine組件式開發(fā)及應(yīng)用[M].北京:科學(xué)出版社,2012.
[5]張豐,杜震洪,劉仁義.GIS程序設(shè)計教程?——基于ArcGIS Engine的C#開發(fā)實例[M].杭州:浙江大學(xué)出版社,2012.
[6]陳於立,李少華,史斌,等.ArcGIS開發(fā)權(quán)威指南[M].北京:電子工業(yè)出版社,2015.