现在的位置: 首页 > 综合 > 正文

ArcGIS Engine中的License设置

2013年10月20日 ⁄ 综合 ⁄ 共 2307字 ⁄ 字号 评论关闭

       AE开发中的License有两种方法进行设置,一种是通过LicenseControl控件,另一种是通过IAoInitialize接口设置。整个应用程序中只能有一种方式存在,如果进行了两种License设置,就可能产生错误。

(1)LicenseControl方法

 ArcGIS <wbr>Engine中的License设置

 

(2) IAoInitialize接口方法

private IAoInitialize m_AoInitialize = new AoInitializeClass();

private void Form1_Load(object sender, EventArgs e)

{

m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

}   

当然,对于一个健壮的程序而言,我们还需要在初始化之前先判断将被初始化的许可是否可用,应先使用IsProductCodeAvailable方法进行判断,需要初始化扩展模块的许可,可使用CheckOutExtension方法。下面为许可的检测代码

private IAoInitialize m_AoInitialize = new AoInitializeClass();

private bool CheckLicenses()

{

//Create a new AoInitialize object

if (m_AoInitialize == null)

{

System.Windows.Forms.MessageBox.Show("Unable to initialize. This application cannot run!");

return false;

}

//Determine if the product is available

esriLicenseStatus licenseStatus = (esriLicenseStatus)m_AoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine);

if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)

{

licenseStatus = (esriLicenseStatus)m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)

{

System.Windows.Forms.MessageBox.Show("The initialization failed. This application cannot run!");

return false;

}

}

else

{

System.Windows.Forms.MessageBox.Show("The ArcGIS Engine product is unavailable. This application cannot run!");

return false;

}

return true;

}

 

private void ReleaseLicenses()

{

//Release COM objects and shutdown

ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();

m_AoInitialize.Shutdown();

}

 

private void FormMain_Load(object sender, EventArgs e)

{

if (CheckLicenses() == false) this.Close();

}

 

private void FormMain_FormClosing(object sender, FormClosingEventArgs e)

{

ReleaseLicenses();

}

(3)一些重要原则

1.初始化许可的一条重要原则就是一个程序只能初始化许可一次,已经初始化许可的程序一旦运行就无法再修改其初始化的许可,即程序运行期间无法修改其使用的许可。

ArcGIS <wbr>Engine中的License设置

2.LicenseControl中多选许可是没有意义的,第一个被勾选的许可生效。理论上License中可以勾选多项许可,但运行程序时其作用的是第一个被勾选的许可。如下图只有ArcGIS Engine许可被初始化了。

 

(4)什么情况下需要GDB Update许可

当需要对SDE里数据进行编辑时,以及需要在SDE和Personal Geodatabase中创建复杂ArcGIS对象时,需要使用GDB Update许可。

对SDE里的数据编辑,很好理解,大致就是进行数据插入,删除,更新;对表添加、删除和修改,表结构的变化(添加、删除列)等,因为这些动作都会造成后台数据库的写操作。

对 于Personal Geodatabase,进行简单数据对象和编辑,包括创建、删除和修改普通表都是不需要GDB Update许可的,但对于复杂的Geodatabse对象的创建、删除和修改,则需要GDB Update许可,其中复杂的Geodatabse对象包括几何网络,网络分析模型,拓扑,关系类。这也是为什么往往有写好了一个创建几何网络或拓扑的程序后,执行起来会被报“需要Geodatabase Update许可”的错。

当需要获取GDB Update许可时,只需勾选ArcGIS Engine Enterprise Geodatabase就可以了。

抱歉!评论已关闭.