ArcGIS接口详细说明 下载本文

内容发布更新时间 : 2024/5/3 20:39:32星期一 下面是文章的全部内容请认真阅读。

注意!!!一般情况设置为True,来控制倍数的放大

Expand scales thesizeoftheEnvelope. IfasRatio =FALSE,theexpansionisadditive. XMin = XMin - dx YMin = YMin - dy XMax = XMax +dx YMax = YMax +dy

If asRatio = TRUE,theexpansionismultiplicative. XMin = (XMin - dx*Width)/2 YMin = (YMin - dy*Height)/2 XMax = (XMax +dx*Width)/2 YMax = (YMax +dy*Height)/2

The Envelope remainscenteredatthesameposition.

IEnvelope接口的第十个方法Offset (X, Y)(方法,将已有的一个边框的按照输入参数的大小来进行水平竖直的移动)

例子代码:

Private Sub btnOffset_Click() m_pEnveLope.Offset10,20 update_props

End Sub 注意!!!

The new positionoftheEnvelopeisasfollows: newXMin = old XMin+X newYMin =oldYMin+Y newXMax =oldXMax+X newYMax =oldYMax+Y

11. 关于IFeature接口(esriGeoDatabase) IFeature接口的第一个属性Class(只读)

IFeature接口的第二个方法Delete(方法,删除该行。因为一个Feature在表格中对应的就是一行数据,删除该行就能相应的删除这个Feature)

IFeature接口的第三个属性Extent(只读,获取该Feature要素在地图上的一个矩形范围,返回值为IEnvelope类型) IFeature接口的第四个属性FeatureType(只读,获取该Feature要素的要素类型,返回值为枚举类型的esriFeatureType)

IFeature接口的第五个属性Fields(只读,获取该Feature要素的字段集合,返回值为IFields类型)

IFeature接口的第六个属性Shape(读写,获取该Feature要素的图形,返回值为IGeometry类型,或者各种实体化的类型,如IPolyline)

IFeature接口的第七个属性ShapeCopy(只读,克隆该Feature要素的几何图形,返回值为IGeometry类型) IFeature 接口的第八个方法Store(方法,保存该行。) 此属性可用于对Feature要素的几何图形进行操作,步骤如下:

用IFeature.ShapeCopy方法获取一个已经存在的Geometry,或者新建一个Geometry 对Geometry进行操作

通过IFeature.Shape属性将Geometry写入 通过IFeature.Store方法保存该Feature要素

例子代码:

Dim pFeature AsIFeature Dim pGeo AsIGeometry Set pGeo = pFeature.ShapeCopy 'Change the shape pFeature.Shape =pGeo pFeature.Store

IFeature接口的第九个属性Value(读写,利用字段的索引进行对该要素该字段的值的读写) 注意,索引Index是从0开始的。 object.Value(Index ) = [ value ]

IFeature 接口的第十个属性Table(只读,将该行要素转换成ITable格式的数据,即可对一张表进行数据操作,具体方法查看ITable接口)

例子代码:

Dim pTable AsITable Set pTable = pRow.Table

12. 关于IRow接口(esriGeoDatabase) IRow接口的第一个方法Delete(方法,删除该行)

IRow接口的第二个属性Fields(只读,获取该Feature要素的字段集合,返回值为IFields类型)此方法类似于IFeature接口的Fields属性

IRow 接口的第三个方法Store(方法,保存该行。)此方法类似于IFeature接口的Store方法 IRow接口的第四个属性Table(只读,获取该行所在的表格,返回值为ITable类型)

例子代码:

Dim pTable AsITable Set pTable = pRow.Table

IRow接口的第五个属性Value(Index) (读写,获取该行在参数索引的字段的值,注意,索引Index是从0开始的。)

object.Value(Index ) = [ value ]

IRow接口的第六个属性HasOID(只读,判断指出该行是否有OID) IRow接口的第七个属性OID(只读,获取该行的OID值)

例子代码:

If pRow.HasOID Then Debug.Print pRow.OID

End If

13. 关于IFeatureClass接口(esriGeoDatabase)

Dim pFeatcls AsIFeatureClass Dim pFeatLayer AsIFeatureLayer Dim pDoc AsIMxDocument Dim pMap AsIMap

Set pDoc = ThisDocument Set pMap = pDoc.Maps.Item(0) Set pFeatLayer = pMap.Layer(0) Set pFeatcls = pFeatLayer.FeatureClass

IFeatureClass接口的第一个方法AddField(Field) (方法,增加一个属性字段到这个要素类,其中传入的参数为一个IField接口的变量,此变量可以由其他要素类获得并赋值给要操作的要素类,可用IFeilds接口的Field属性来获得) IFeatureClass接口的第二个方法DeleteField(Field) (方法,删除一个属性字段,其中传入的参数为一个IField接口的变量)

IFeatureClass接口的第三个属性Fields(只读,获取该要素类的全部属性字段,返回一个IFields类型的变量)

例子代码:

'Assume we haveareferencetoafeatureclass,pFC Dim pFields AsIFields Dim pField AsIField Set pFields = pFC.Fields

Set pField = pFields.Field(pFields.FindField(\

pFC.DeleteFieldpField

IFeatureClass接口的第四个方法FindField(Name)(方法,去查找在该要素类里面是否含有参数名字的属性字段,如果有,则返回索引,没有,则返回-1)

IFeatureClass接口的第五个属性AreaField(只读,获取属性字段为geometry的那一个Field)

例子代码:

Dim pFeatcls AsIfeatureClass Dim pFeatLayer AsIFeatureLayer Dim pDoc AsIMxDocument Dim pMap AsImap

Set pDoc = ThisDocument Set pMap = pDoc.Maps.Item(0) Set pFeatLayer = pMap.Layer(0) Set pFeatcls = pFeatLayer.FeatureClass Dim pFld AsIField

Set pFld = pFeatcls.AreaField

If Not pFldIsNothingThen MsgBox pFld.Name End If

IFeatureClass接口的第六个方法Search (filter, Recycling) (方法,去得到一个IFeatureCursor类型的游标,该游标由filter来控制赛选,如果filter等于null,则返回整个featureclass的游标,再用IfeatureCursor的NextFeature的方法依次得到每一个Feature)

例子代码:

Dim pFeatcls AsIFeatureClass Dim pFeatLayer AsIFeatureLayer Dim pDoc AsIMxDocument Dim pMap AsIMap

Set pDoc = ThisDocument Set pMap = pDoc.Maps.Item(0) Set pFeatLayer = pMap.Layer(0) Set pFeatcls = pFeatLayer.FeatureClass

'+++createthequeryfilter,andgive '+++itawhereclause Dim pQFilt AsIQueryFilter Dim pFeatCur AsIFeatureCursor

Set pQFilt = NewQueryFilter pQFilt.WhereClause= \ 'COM'\ Set pFeatCur = pFeatcls.Search(pQFilt,False)

'+++gettheareafield Dim pFlds AsIFields Dim pFld AsIField Dim lAIndex AsLong

Set pFlds = pFeatcls.Fields lAIndex =pFlds.FindField(\ Set pFld = pFlds.Field(lAIndex)

'+++avariabletoholdthetotalarea Dim dtotArea AsDouble dtotArea =0#

'+++loopthroughallofthefeaturesand '+++calculatethesumofalloftheareas Dim pFeat AsIFeature

Set pFeat = pFeatCur.NextFeature Do

dtotArea =dtotArea+pFeat.Value(lAIndex) Set pFeat = pFeatCur.NextFeature Loop Until pFeatIsNothing

'+++sendthetotalareatoamessagebox MsgBox dtotArea

IFeatureClass接口的第七个方法Insert(useBuffering) (方法, 去得到一个IFeatureCursor类型的游标,来用作插入新的Features,useBuffering是一个布尔型参数,当为True时即可以 插入新的Feature,再用IFeatureCursor的InsertFeature (buffer)的方法去插入一个新的Feature)

例子代码:

Dim pFeatcls AsIFeatureClass Dim pFeatLayer AsIFeatureLayer Dim pDoc AsIMxDocument