ArcgisEngine二次開發中,進行地理處理,即:相交操作,交集取反操作,擦除操作等過程中,如果權限分配不當,就會出現上面對 COM 組件的調用返回了錯誤 HRESULT E_FAIL 的錯誤
原因如下:在進行擦除,交集取反等高級操作時,必須是ArcgisInfo級別的許可授權,否則無法進行操作,而相交操作用ArcgisEngine級別即可。(不穩定,會出錯,建議2)
解決如下:1.如何使用licenceControl控件選擇ArcgisInfo選項即可,同時選中其中的Spatial Analysis 即可
2.在項目啟動main方法中添加一些代碼
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); #region 初始化許可 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable; licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo); if (licenseStatus == esriLicenseStatus.esriLicenseNotInitialized) { MessageBox.Show("沒有esriLicenseProductCodeArcInfo許可!"); Application.Exit(); } #endregion
其中的ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);是兩個方法都必須的
注意:在進行授權時,必須高權限在前面,否則將不起作用,許可要從高到低添加,由高到低的排序為:esriLicenseProductCodeArcInfo、esriLicenseProductCodeArcEditor、esriLicenseProductCodeArcView、esriLicenseProductCodeArcServer、esriLicenseProductCodeEngineGeoDB、 esriLicenseProductCodeEngine