阅读:4203回复:7
在CreateFeatureClass 时出现没有许可权限怎么办?
<P>用Arcgis engine在图层组FeatureDataset下创建图层,采用以下语句</P>
<P><EM>object</EM>.<B>CreateFeatureClass</B> <B>(</B><I>Name</I>, <I>Fields</I>, <I>CLSID</I>, <I>EXTCLSID</I>, <I>FeatureType</I>, <I>ShapeFieldName</I>, <I>ConfigKeyword</I><B> )</B></P> <P>运行出现异常,提示:“应用没有创建或修改这种类型数据的方案的许可权”,同样的一段代码,放到其他的系统运行却没有问题,这是怎么回事?</P> <P>我想了不少办法都不行,请高手帮帮忙,不胜感激,谢谢!</P> |
|
1楼#
发布于:2006-07-03 16:00
在你的程序里检测gdbedit的license,只有检测成功后才能使用
|
|
|
2楼#
发布于:2006-07-05 15:53
<P>我不知道自己错在哪里,请你帮忙看看我的思路是在哪里出现问题的:</P>
<P>1。读取并验证LICENSE文件</P> <P>2.连接SDE数据库,获取workspace</P> <P>3。通过workspace->FeatureWorkspace,然后通过FeatWorkspace.OpenFeatureDataset打开一图层组FeatureDataset</P> <P>4。通过FeatureDataset.<STRONG>CreateFeatureClass</STRONG> <B>(</B>Name, Fields, CLSID, EXTCLSID, FeatureType, ShapeFieldName, ConfigKeyword<STRONG> )</STRONG>创建图层</P> <P>这样的步骤,以前都这样用过很多次了,都没有问题。这次虽然指定license可能出现问题了,但是实在不知道问题出在哪里。</P> <P>你说的这个GeodatabseEdit的license如何验证,能否具体说清楚一点?</P> <P>期待您的回复,谢谢!</P> |
|
3楼#
发布于:2006-07-06 10:06
<P>看情况,一般这样既可以地打开验证(c#)</P>
<P> AoInitialize aoini =new AoInitializeClass();<BR> if(aoini==null)return;<BR> <BR> if(aoini.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine)==esriLicenseStatus.esriLicenseAvailable)<BR> {<BR> aoini.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);<BR> }</P> |
|
|
4楼#
发布于:2006-07-06 15:52
<P>我想我对license的检验已经是成功的,如下代码</P>
<PRE> Public Function InitializeApplication() As Boolean</PRE><PRE> Dim bInitialized As Boolean<BR> bInitialized = True</PRE><PRE> m_AoInitialize = New AoInitialize<BR> If m_AoInitialize Is Nothing Then<BR> System.Windows.Forms.MessageBox.Show("Unable to initialize ArcGIS. This application cannot run! Please check that ArcGIS (Desktop, Engine or Server) is installed.","ESRI License Initializer")<BR> bInitialized = False<BR> End If</PRE><PRE> 'Initialize the application<BR> Dim licenseStatus As esriLicenseStatus<BR> licenseStatus = esriLicenseStatus.esriLicenseUnavailable</PRE><PRE> licenseStatus = CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB)<BR> If licenseStatus <> esriLicenseStatus.esriLicenseCheckedOut Then<BR> licenseStatus = CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngine)<BR> If licenseStatus <> esriLicenseStatus.esriLicenseCheckedOut Then<BR> 'System.Windows.Forms.MessageBox.Show(LicenseMessage(licenseStatus),"ESRI License Initializer")<BR> bInitialized = False<BR> End If<BR> End If</PRE><PRE> InitializeApplication = bInitialized</PRE><PRE> End Function</PRE><PRE> </PRE><PRE>如果我把自己的程序独立出来,不挂在项目的解决方案里,是没有问题的,可是放到项目里就出现这样的问题,让我百思不得其解,头痛得很。。。真希望高手能给予提点一下</PRE><PRE> </PRE> |
|
5楼#
发布于:2006-07-08 10:00
<P>我终于解决这个问题了,还是得谢谢Mr gis,:)</P>
<P>是这样的,项目的解决方案里,首次AoInitialize的时候,不知道何缘故,<a href="mk:@MSITStore:C:\Program%20Files\ArcGIS\DeveloperKit\Help\COM\VB\esriSystem.chm::/IAoInitialize_InitializedProduct.htm" target="_blank" >InitializedProduct</A>为<STRONG>esriLicenseProductCodeEngineGeoDB,</STRONG>这导致我无法使它checkout,从而数据导入数据库时没有许可权。</P> <P>所以我先把AoInitialize的所有扩展先checkin,然后AoInitialize.Shutdown,重新AoInitialize,问题就这样解决了。</P> |
|
6楼#
发布于:2006-11-16 18:03
请教一下高手,好像直接用IFeatureWorkSpace创建FeatureClass 的话会出现错误,请问这样不可以吗?我现在不想用IFeatureDataSet来创建!
|
|
7楼#
发布于:2006-11-16 22:59
o
|
|
|