基於ArcObejct SDK搭建第一個應用

1.準備工作

安裝Visual Studio社區版,社區版是免費的,也足夠我們使用,目前最新版本是2022,建議安裝最新的版本即可。

安裝ArcGIS桌面軟件即ArcMap,建議安裝最新的10.8版本,也是ArcMap的最後版本。以後ArcGIS的桌面軟件就是ArcGIS Pro了。

安裝和ArcMap版本一致的ArcObject SDK。

軟件開發的UI建議選擇WPF,建議使用第三方UI庫DEV。

2.新建工程

打開Visual Studio,點擊創建新項目,選擇WPF應用(.Net Framework),點擊下一步,設置項目名稱、位置、解決方案名稱等信息,框架建議選擇.Net Framework 4.8,這也是.Net Framework的最後一個版本,以後都是.Net 6.0、7.0了。

點擊創建按鈕完成創建。完成後,我們把常用的一些dll文件都引用到工程下。 如下圖所示。

點擊引用項,在屬性頁設置其嵌入互操作類型爲False,如下圖所示。

3.開始寫代碼

因爲AO SDK是基於WinForm的,而我們又是用WPF開發,所以我們需要在窗體上加一個WindowsFormsHost,然後把初始化後的AxMapControl添加到WindowsFormsHost。組織帶AxMapControl的系統主界面流程一般如下。

1、綁定Runtime,這裏可以選擇綁定Desktop或者Engine,我們一般會綁定Desktop,但則就要求當前機器必須安裝ArcGIS桌面軟件,不然綁定代碼會報錯。代碼如下:

RuntimeManager.Bind(ProductCode.Desktop);

2、驗證許可,我們調用AO裏面的IAoInitialize接口驗證許可。

IAoInitialize myAoInitialize = new AoInitializeClass();
myAoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);

3、初始化AxMapControl。我們在這裏就不直接拖控件了,而是使用代碼生成。

AxMapControl myAxMapControl = new AxMapControl();
myAxMapControl.BeginInit();
this.UI_Map_WindowsFormsHost.Child = myAxMapControl;
myAxMapControl.EndInit();
myAxMapControl.BackColor = System.Drawing.Color.White;
myAxMapControl.BorderStyle = esriControlsBorderStyle.esriNoBorder;
myAxMapControl.ShowScrollbars = false;

4、可以加一段測試代碼,例如點擊一個按鈕,加載指定的地圖文件。

myAxMapControl.LoadMxFile("E:\\A.mxd");

4.  寫到最後

到此爲止,一個Hello Word版本的AO程序就創建起來了。但距我們使用AO做一個業務應用系統還差的很遠。

AO庫是一個非常龐大複雜COM組件集合,ArcGIS10.0有1053個枚舉、93個結構體、5555個接口以及4081個類,合計10982。當然我們常用的只是其中的一小部分,即使是一小部分,那也是一個錯綜複雜的關係網。我們需要把這個關係網理清楚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章