天马0流星
路人甲
路人甲
  • 注册日期2005-11-26
  • 发帖数25
  • QQ
  • 铜币275枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1729回复:3

急!![求助]怎样对SHAPE中的属性数据进行修改!!!

楼主#
更多 发布于:2006-08-19 09:39
<P>希望XDJM们帮帮忙呀!!新手急!!</P>
<P>怎样修改SHAPE中的属性数据,它需要用到哪些接口??有实例代码更好!!谢谢了????</P>
喜欢0 评分0
gzstyxb
路人甲
路人甲
  • 注册日期2004-09-22
  • 发帖数358
  • QQ
  • 铜币1045枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-08-19 11:51
ipFeature->put_Value(i, va);
由爱故生忧, 由爱故生怖. 若离于爱者, 无忧亦无怖.
举报 回复(0) 喜欢(0)     评分
gischai
路人甲
路人甲
  • 注册日期2004-03-16
  • 发帖数10
  • QQ
  • 铜币63枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-08-19 18:18
<P>网上的资料:</P>
<H3 0cm 0cm 0pt; TEXT-INDENT: 0cm"><A><FONT size=3>如何编辑记录</FONT></A><p></p></H3>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">本例实现的是如何修改FeatureClass中某条记录(Feature)的值。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo2; tab-stops: 9.0pt 18.0pt list 39.0pt">要点<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">通过IFeatureClass.Update方法获得可修改记录的IFeatureCursor接口对象,使用IFeatureCursor.NextFeature方法获得Ifeature接口对象,修改其属性值,通过IFeatureCursor.UpdateFeature方法提交IFeature修改内容。<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 18pt">主要用到IFeatureCursor接口<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo2; tab-stops: 9.0pt 18.0pt list 39.0pt">程序说明<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; tab-stops: 0cm; mso-char-indent-count: 1.71">函数OpenFeatureClass获得当前激活的Map中第一层的IFeatureClass接口对象。<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; tab-stops: 27.0pt; mso-char-indent-count: 1.71">函数EditFeature修改pFeatureClass中第一条记录的第七个字段的值。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo2; tab-stops: 9.0pt 18.0pt list 39.0pt">代码<p></p></P>
<P>
<TABLE #cccccc; MARGIN: auto auto auto 9.05pt; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 4.95pt 0cm 4.95pt" cellSpacing=0 cellPadding=0 border=0>

<TR 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD #ece9d8; PADDING-RIGHT: 4.95pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 4.95pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 354.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent" vAlign=top width=473>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">Private Function EditFeature(pFeatureClass As IFeatureClass) As Boolean<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeature                As IFeature<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureCursor          As IFeatureCursor<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">On Error GoTo ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    EditFeature = False<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    If (pFeatureClass Is Nothing) Then<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        Exit Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pFeatureCursor = pFeatureClass.Update(Nothing, False)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pFeature = pFeatureCursor.NextFeature<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    If (Not pFeature Is Nothing) Then<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        pFeature.Value(6) = "<st1:Street w:st="on"><st1:address w:st="on">New Place</st1:address></st1:Street>"<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        pFeatureCursor.UpdateFeature pFeature<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        MsgBox ("修改成功")<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        EditFeature = True<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Else<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        MsgBox ("修改失败")<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Exit Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">End Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">Private Function OpenFeatureClass() As IFeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pMxDocument             As IMxDocument<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pMap                    As IMap<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureLayer           As IFeatureLayer<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureClass           As IFeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">On Error GoTo ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set OpenFeatureClass = Nothing<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pMxDocument = ThisDocument<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pMap = pMxDocument.FocusMap<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    If (pMap.LayerCount = 0) Then<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        MsgBox ("缺少数据")<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        Exit Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pFeatureLayer = pMap.Layer(0)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pFeatureClass = pFeatureLayer.FeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set OpenFeatureClass = pFeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Exit Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">End Function<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">Private Sub UIButtonControl1_Click()<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">On Error GoTo ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureClass       As IFeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pFeatureClass = OpenFeatureClass()<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    EditFeature pFeatureClass<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Exit Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">End Sub<p></p></P></TD></TR></TABLE></P>
举报 回复(0) 喜欢(0)     评分
天马0流星
路人甲
路人甲
  • 注册日期2005-11-26
  • 发帖数25
  • QQ
  • 铜币275枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-08-19 18:38
<P>谢谢大家帮忙</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部