002 寫第一個ArcObject SDK程序

1、開發環境

基於ArcObjects SDK開發,開發環境一般選用Visual Studio,開發語言使用C#,開發包使用ArcObjects SDK for .Net。UI有的使用Winform,也可以使用WPF。調用的時候,不關心接口或類是否可以在ArcEngine Runtine下運行,驗證的時候,也是按照Desktop環境驗證,開發的軟件直接在ArcGIS Desktop環境下運行。

一般情況下,我使用Visual Studio+ArcObjects SDK for .Net+C#+WPF+ArcGIS Desktop的組合進行開發。

2、準備工作

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

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

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

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

3、新建工程

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

image1.png

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

image2.png

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

image3.png

4、開始寫代碼

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

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

RuntimeManager.Bind(ProductCode.Desktop);

2、驗證許可,我們調用ArcObjects SDK裏面的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");

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

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