阅读:1729回复:3
急!![求助]怎样对SHAPE中的属性数据进行修改!!!
<P>希望XDJM们帮帮忙呀!!新手急!!</P>
<P>怎样修改SHAPE中的属性数据,它需要用到哪些接口??有实例代码更好!!谢谢了????</P> |
|
1楼#
发布于:2006-08-19 11:51
ipFeature->put_Value(i, va);
|
|
|
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> |
|
3楼#
发布于:2006-08-19 18:38
<P>谢谢大家帮忙</P>
|
|