The 3D Analyst extension has not been enabled.

       再次遇到這個問題,之前有解決,當時並沒有記下來,導致本次處理的時候有點模糊不清。在此做個總結,以此銘記!

       這個問題主要原因是權限的問題,因爲在AE開發過程中,要取得相應的權限。ArcGIS Engine10版本開始產品架構發生了變化,將ArcGIS Desktop和Engine runtime安裝在不同的目錄下,所以要求Engine應用程序以及自定義組件等綁定到Desktop或者Engine。

解決方案有:

1、添加綁定代碼

            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.Engine);


2、添加LicenseControl控件,右擊屬性,選擇相應的產品,重啓後生效。



3、網上盛傳的解決辦法

        /// 先在窗體上添加LicenceControl控件        
        public void Enable3DAnalysis()
        {
            ESRI.ArcGIS.esriSystem.IExtensionManagerAdmin iExtensionManagerAdmin = new ESRI.ArcGIS.esriSystem.ExtensionManagerClass();
            UID iUid3D = new UIDClass();
            iUid3D.Value = "{94305472-592E-11D4-80EE-00C04FA0ADF8}";
            object o = new object();
            iExtensionManagerAdmin.AddExtension(iUid3D, ref o);
            IExtensionConfig iExtensionConfig = (IExtensionConfig)(iExtensionManagerAdmin as IExtensionManager).FindExtension(iUid3D);
            iExtensionConfig.State = esriExtensionState.esriESEnabled;
        }

4、WPF遇到該錯誤的解決方法

WPF開發中,只能用代碼在App.xaml.cs中初始化License。

 public App()
 {
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
      AoInitialize aoi = new AoInitializeClass();
      esriLicenseExtensionCode extensionCode = esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst;
      esriLicenseProductCode productCode = esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB;
      if (aoi.IsProductCodeAvailable(productCode) == esriLicenseStatus.esriLicenseAvailable && aoi.IsExtensionCodeAvailable(productCode, e                          xtensionCode) == esriLicenseStatus.esriLicenseAvailable)
      {
           aoi.Initialize(productCode);
           aoi.CheckOutExtension(extensionCode);
      }
}






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