阅读:1953回复:4
[求助]如何操作含有z值的SDE图层的Feature?
<P>在编辑SDE数据的时候,例如移动。如果图层含有z值,更新的时候出现了如下错误:</P>
<P>大家帮忙看看代码哪里有问题?</P> <P>'更新编辑以后的图形<BR>Private Sub UpDataFeature(pFeature As IFeature, pGeometry As IGeometry, pMap As IMap, pCurrentlayer As IFeatureLayer)<BR> Dim pDataset As IDataset<BR> Dim pWorkspaceEdit As IWorkspaceEdit<BR> Dim pActiveview As IActiveView<BR> Dim pTopological As ITopologicalOperator<BR> <BR>On Error GoTo UpdataFeature_err<BR> Set pDataset = pFeature.Class<BR> Set pWorkspaceEdit = pDataset.Workspace<BR> If pWorkspaceEdit.IsBeingEdited Then <BR> Dim pZAware As IZAware<BR> Set pZAware = pGeometry<BR> pZAware.DropZs<BR> pZAware.ZAware = False</P> <P> Set pTopological = pGeometry<BR> pTopological.Simplify<BR> pWorkspaceEdit.StartEditOperation<BR> pGeometry.Project pFeature.Shape.SpatialReference<BR> <FONT color=#f70909>Set pFeature.Shape = pGeometry</FONT></P> <P><FONT color=#f70909>运行到这里出现错误</FONT></P> <P><v:shapetype> <v:shapetype><FONT color=#f73809> 实时错误:The Parameter is the Wrong kind of geometry.</FONT></v:shapetype></v:shapetype><BR> pFeature.Store<BR> pWorkspaceEdit.StopEditOperation<BR> '选中编辑以后的对象<BR> pMap.SelectFeature pCurrentlayer, pFeature<BR> Set pActiveview = pMap<BR> pActiveview.Refresh<BR> Else<BR> MsgBox "请开始编辑!", , "UpDataFeature"<BR> End If<BR> <BR> Set pDataset = Nothing<BR> Set pWorkspaceEdit = Nothing<BR> Set pActiveview = Nothing<BR> Set pTopological = Nothing<BR>Exit Sub<BR>UpdataFeature_err:<BR> MsgBox Err.Description, , "UpDataFeature"<BR>End Sub</P> |
|
|
1楼#
发布于:2005-11-16 12:01
<P>检查下你的<FONT color=#f70909>pGeometry</FONT><FONT color=#000000>的获取语句,移动的话你可以看看ILineMovePointFeedback等接口来实现</FONT></P>
<P> m_pPolylineMvPtFeed定义为 ILineMovePointFeedback,下面代码只是mouseup事件里的,只能参考:)</P> <P> Set pPolylineResult = m_pPolylineMvPtFeed.Stop<BR> ' 作有效性检查<BR> If Not pPolylineResult Is Nothing Then<BR> '更新元素<BR> m_pHitElem.Geometry = pPolylineResult<BR> <BR> '获取选中的地物<BR> Set ff_t_FeatureCursor = GetSelectedFeatures<BR> If ff_t_FeatureCursor Is Nothing Then Exit Sub<BR> <BR> Set ff_t_pFeature = ff_t_FeatureCursor.NextFeature<BR> <BR> '得到当前的工作空间<BR> Set ff_t_WorkspaceEdit = GetWorkspaceEdit<BR> <BR> ff_t_WorkspaceEdit.StartEditOperation<BR> <BR> Set ff_t_pFeature.Shape = pPolylineResult<BR> <BR> ff_t_pFeature.Store<BR> <BR> '停止编辑<BR> ff_t_WorkspaceEdit.StopEditOperation</P> |
|
|
2楼#
发布于:2005-11-17 14:13
<P>谢谢总统的指点</P>
<P>我还是有点不太明白:</P> <P>m_pHitElem.Geometry = pPolylineResult</P> <P>与Set ff_t_pFeature.Shape = pPolylineResult<BR>为什么需要设置这两步?</P> <P>m_pHitElem与ff_t_pFeature是否是同一个feature?<BR></P> |
|
|
3楼#
发布于:2005-11-17 14:22
<P>'定义选中的元素<BR>Private m_pHitElem As IElement</P>
|
|
|
4楼#
发布于:2005-11-17 14:33
<P>o</P>
<P>我是直接选择的feature,没用到ielement这个接口</P> <P>3ks</P> |
|
|