AE開發中,對 COM 組件的調用返回了錯誤 HRESULT E_FAIL,在地理處理中,即GP工具處理時出錯


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM