阅读:1512回复:2
由程序向SDE导shp数据总是出现这种错误,帮忙分析一下
<P>仿照帮助里的一个例子,代码如下,最后一句出错:"The application is not lisenced to create or modify schema for this type of data",想不出什么原因</P>
<P>Dim pPropertySet As IPropertySet<BR> Set pPropertySet = New PropertySet<BR> With pPropertySet<BR> .SetProperty "SERVER", "CUMTB306" <BR> .SetProperty "INSTANCE", "esri_sde" <BR> .SetProperty "DATABASE", "sde" <BR> .SetProperty "USER", "sde" <BR> .SetProperty "PASSWORD", "306" <BR> .SetProperty "VERSION", "SDE.DEFAULT"<BR> End With<BR> Dim outWName As IWorkspaceName<BR> Set outWName = New WorkspaceName<BR> outWName.ConnectionProperties = pPropertySet<BR> outWName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SDEWorkspaceFactory.1"<BR> <BR> Dim inWName As IWorkspaceName<BR> Set inWName = New WorkspaceName<BR> inWName.PathName = "F:\GIS Data\SampleMaps\Data\Mexico\"<BR> inWName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1"<BR> <BR> Dim pInFCName As IFeatureClassName<BR> Set pInFCName = New FeatureClassName<BR> Dim pInDatasetName As IDatasetName<BR> Set pInDatasetName = pInFCName<BR> pInDatasetName.Name = "cities"<BR> Set pInDatasetName.WorkspaceName = inWName<BR> <BR> Dim pOutDatasetName As IDatasetName<BR> Dim pOutFCName As IFeatureClassName<BR> Set pOutFCName = New FeatureClassName<BR> Set pOutDatasetName = pOutFCName<BR> Set pOutDatasetName.WorkspaceName = outWName<BR> pOutDatasetName.Name = "Mexico_cities"<BR> <BR> Dim pName As IName<BR> Dim pInFC As IFeatureClass<BR> Set pName = pInFCName<BR> Set pInFC = pName.Open<BR> <BR> Dim pChecker As IFieldChecker<BR> Dim pInFields As IFields<BR> Dim pOutFields As IFields<BR> Set pInFields = pInFC.Fields<BR> Set pChecker = New FieldChecker<BR> pChecker.Validate pInFields, Nothing, pOutFields<BR> <BR> Dim pGeoField As IField<BR> Dim pGeoDef As IGeometryDef<BR> Dim pGeoDefEdit As IGeometryDefEdit<BR> Dim i As Long<BR> For i = 0 To pOutFields.FieldCount - 1<BR> If pOutFields.Field(i).Type = esriFieldTypeGeometry Then<BR> Set pGeoField = pOutFields.Field(i)<BR> Exit For<BR> End If<BR> Next<BR> <BR> Set pGeoDef = pGeoField.GeometryDef<BR> Set pGeoDefEdit = pGeoDef<BR> pGeoDefEdit.GridCount = 1<BR> pGeoDefEdit.GridSize(0) = 1500000<BR> <BR> Dim pFCToFC As IFeatureDataConverter<BR> Set pFCToFC = New FeatureDataConverter<BR> pFCToFC.ConvertFeatureClass(pInFCName, Nothing, Nothing, pOutFCName, pGeoDef, pOutFields, "", 1000, 0)<BR></P> |
|
1楼#
发布于:2005-09-07 09:24
<P>依照我的判断,你没有初始化ArcEngine的 lisencese.</P>
<P>ArcEngine默认是不能对 ArcSDE进行写操作的。默认的读写权限是</P> <P>SHP格式和 personal geodatabase.</P> <P>你在程序初始化的时候 重新设置ArcEngine的lisencese就可以了。</P> <P>设置为esriLicenseProductCodeEngineGeoDB</P> |
|
2楼#
发布于:2005-09-07 10:34
<P>谢谢大将军的回帖,请问这样设置对吗?但还是出现同样的错误</P>
<P>If m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEngineGeoDB) = esriLicenseAvailable Then</P> <P>m_pAoInitialize.Initialize(esriLicenseProductCodeEngineGeoDB)</P> <P>endif</P> |
|