snowtracer
路人甲
路人甲
  • 注册日期2004-07-13
  • 发帖数95
  • QQ
  • 铜币143枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1599回复:1

自创:将Z值写到属性表中

楼主#
更多 发布于:2005-04-18 12:20
<P>我有一系列的点(有 X,Y坐标),没有高程值,从地形上提取高程值后,虽然二维坐标点变成了3D点,但是属性表中看不到Z。</P>
<P>我想把Z值写到属性表中,但一直没有成功。今天试通了,与大家分享,肯请指正。</P>
<P>使用方法:1,打开VB编辑器,加载宏;                                                                </P>
<P>2,把 pProps.SetProperty "DATABASE", "D:\exam\yellowriver.mdb"这行中的D:\exam\yellowriver.mdb改为自己的数据库地址;                                                             </P>
<P>3,把  Set pAccessFClass = pAccessWorkspace.OpenFeatureClass("dddGRID200_DD")这行中的dddGRID200_DD改为需要编辑的图层;</P>
<P>4,运行!</P>
<P>Public Sub AddField()
'*
'* Before write Z Value to a database ,we should add a field named ZValue to an attribute
'*
  
  Dim pAccessFactory As IWorkspaceFactory
  Dim pAccessWorkspace As IFeatureWorkspace
  Dim pAccessFClass As IFeatureClass
  
  Set pAccessFactory = New AccessWorkspaceFactory
  Dim pProps As IPropertySet
  Set pProps = New PropertySet
  pProps.SetProperty "DATABASE", "D:\exam\yellowriver.mdb"
  Set pAccessWorkspace = pAccessFactory.Open(pProps, Application.hWnd)
  Set pAccessFClass = pAccessWorkspace.OpenFeatureClass("dddGRID200_DD")
  
  Dim pField As IFieldEdit
  Set pField = New Field
  pField.Name = "Z_Value"
  pField.Type = esriFieldTypeDouble
  pField.Length = 30
  pField.AliasName = "Z_Value"
  
  pAccessFClass.AddField pField
'*
'* Add value to the Points' Z Value of an attribute
'*
  Dim pUpdateFeatures As IFeatureCursor
  Set pUpdateFeatures = pAccessFClass.Update(Nothing, True)
  
  Dim dblNewFld As Double
  Dim pPoint As IPoint
  Dim pFeature As IFeature
  
  dblNewFld = pUpdateFeatures.FindField("Z_Value")
  
  Set pFeature = pUpdateFeatures.NextFeature
  Do Until pFeature Is Nothing
     Set pPoint = pFeature.Shape
     pFeature.Value(dblNewFld) = pPoint.Z
     pUpdateFeatures.UpdateFeature pFeature
    
     Set pFeature = pUpdateFeatures.NextFeature
  Loop
  
  MsgBox "Z Values have been write to the attribute table"
  
End Sub
</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-04-19 01:14
不错,希望大家对批量更新属性继续讨论下去
举报 回复(0) 喜欢(0)     评分
游客

返回顶部