阅读:1754回复:1
自创:将Z值写到属性表中
<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> |
|
1楼#
发布于:2005-04-19 01:14
不错,希望大家对批量更新属性继续讨论下去
|
|
|