基於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的組合進行開發。
安裝Visual Studio社區版,社區版是免費的,也足夠我們使用,目前最新版本是2022,建議安裝最新的版本即可。
安裝ArcGIS桌面軟件即ArcMap,建議安裝最新的10.8版本,也是ArcMap的最後版本。以後ArcGIS的桌面軟件就是ArcGIS Pro了。
打開Visual Studio,點擊創建新項目,選擇WPF應用(.Net Framework),點擊下一步,設置項目名稱、位置、解決方案名稱等信息,框架建議選擇.Net Framework 4.8,這也是.Net Framework的最後一個版本,以後都是.Net 6.0、7.0了。
點擊創建按鈕完成創建。完成後,我們把常用的一些dll文件都引用到工程下。 如下圖所示。
點擊引用項,在屬性頁設置其嵌入互操作類型爲False,如下圖所示。
因爲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做一個業務應用系統還差的很遠。