ArcEngine10.x開發的許可問題


1. ArcEngine9.x遷至ArcEngine10.x

  相信很多同學都知道,在ArcEngine9.x下正常編譯的代碼到ArcEngine10.x會報錯:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components.

  解決方法是添加Version引用,在InitializeComponent之前綁定桌面產品:

Using ESRI.ArcGIS;
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

  這稱之為Runtime綁定,即任何ArcObjects代碼(包括許可初始化代碼)被執行之前,指定相稱的ArcGIS產品——ArcGIS Desktop或者ArcGIS Engine應用程序。綁定的ProductCode有ArcReader、Engine、Desktop、EngineOrDesktop、Server五種類型,一般建議是EngineOrDesktop。

2. ArcGIS for Desktop產品級別

  我們必須了解Desktop產品級別,以便確定調用功能所涉及的許可權限。在ArcGIS9.x中分為ArcInfo/ArcEditor /ArcView/ ArcReader等新產品,而ArcGIS10.x則換了一個方法,分為三大級別的新產品。

ArcGIS for Desktop 基礎版:提供了綜合性的數據使用、制圖、分析,以及簡單的數據編輯和空間處理工具。

ArcGIS for Desktop 標准版:在 ArcGIS for Desktop 基礎版的功能基礎上,增加了對 Shapefile 和 Geodatabase 的高級編輯和管理功能。

ArcGIS for Desktop 高級版:是一個旗艦式的 GIS 桌面產品,在 ArcGIS for Desktop標准版的基礎上,擴展了復雜的 GIS 分析功能和豐富的空間處理工具。

clip_image002

  另外,ArcGIS 還提供了兩個免費的桌面端產品。ArcReader,免費的地圖數據(PMF)瀏覽、查詢以及打印出版工具;ArcGIS Explorer Desktop:相比 ArcReader 更強大,支持瀏覽本地數據和 ArcGIS for Server 提供的服務,支持數據的查詢和分析任務,具有開放性和互操作能力。

  雖然大家都是用的盜版,擁有最高級別的新產品,但不小心則會在開發過程中遇到權限問題。

3. 初始化許可的兩種方法

  直接式:編寫AoInitialize代碼,一般來說,可以使用ArcGIS許可初始化向導。對於開發者來說,可以使用Visual Studio集成開發環境下的ESRI工具,通過Add ArcGIS License Checking命令可以調用ArcGIS許可初始化向導。

  間接式:在Windows窗體上放置一個LicenseControl控件。

  示例:(ArcEngine10.1環境下)

private static LicenseInitializer m_AOLicenseInitializer = new ArcEngineTest.LicenseInitializer();
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
    //綁定Runtime
    if (!RuntimeManager.Bind(ESRI.ArcGIS.Engine))
    {
        if (!ESRI.ArcGIS.RuntimeManager.Bind(ProductCode.Desktop))
        {
            MessageBox.Show("不能綁定ArcGIS runtime,應用程序即將關閉.");
            return;
        }
    }
    //初始化產品代碼和擴展代碼

    m_AOLicenseInitializer.InitializeApplication(
    new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeStandard },
    new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst, 
    esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork,
    esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst,
    esriLicenseExtensionCode.esriLicenseExtensionCodeDataInteroperability });

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Main());

    //關閉程序后關閉許可初始化
    m_AOLicenseInitializer.ShutdownApplication();
}

(1) AreEngine許可類型一旦執行后,在程序運行期間無法進行修改;

(2) 使用擴展模塊中的功能時,不但要初始化ProductCode,還要初始化ExtensionCode;

(3) 使用GP調用了spatialanaly中的工具,報錯:the tool is not licensed,是因沒許可初始化是沒有初始化ExtensionCode。

 

 


免責聲明!

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



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