9. |
IArea接口的第一个属性Area(只读,返回一个double类型的数值,为此Area的面积)
IArea接口的第二个属性Centroid(只读,返回一个IPoint类型的变量,为此Area的重心)
IArea接口的第三个属性LablePoint(只读,返回一个IPoint类型的变量,为此Area的标签的位置,一般都在此Area的内部)
IArea接口的第四个方法QueryCentroid (Center ) (方法,Center参数为一个IPoint类型的变量,通过调用此方法将重心点赋值给参数Center)
IArea接口的第五个方法QueryLablePoint (LablePoint ) (方法,LablePoint参数为设置IPoint类型的变量,通过调用此方法将标签点赋值给参数LablePoint)
10.
应用:(中心放大)
IEnvelope接口的第一个方法CenterAt(pPoint) (方法,将这个矩形的边框移动到参数pPoint的位置,但是其他属性不变,如它的Width和Height)
IEnvelope接口的长宽属性Height和Width属性(读写,可以通过该属性获取或设置该边框的长和宽)
IEnvelope接口的4个顶点属性UpperLeft、UpperRight、LowerLeft和LowerRight(读写,返回IPoint类型的四个顶点,比直接获得最值坐标更加方便严谨)
IEnvelope接口的最值坐标属性XMax、XMin、YMax和YMin(读写,可以通过该属性获取或设置该边框的四个顶点的坐标)
IEnvelope接口的第五个方法Union (inEnvelope ) (方法,将参数输入的几何边框和调用该方法的几何边框求并集,并将结果赋值给第一个边框,即调用此方法的object)
IEnvelope接口的第六个方法intersect (inEnvelope ) (方法,返回与输入参数相交的区域的几何边框,并将结果赋值给第一个边框,即调用此方法的object)
IEnvelope接口的第七个方法PutCoords (XMin, YMin,XMax,YMax) (方法,将新建的一个边框的4个极坐标设置为输入的参数)
IEnvelope接口的第八个方法QueryCoords (XMin, YMin,XMax,YMax)(方法,将已有的一个边框的4个极坐标输出到参数当中以备后用)
IEnvelope接口的第九个方法Expand (dx, dy, asRatio) (方法,按照输入的dx与dy参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小)
IEnvelope接口的第十个方法Offset (X, Y) (方法,将已有的一个边框的按照输入参数的大小来进行水平竖直的移动)
11.
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要素
IFeature接口的第九个属性Value(读写,利用字段的索引进行对该要素该字段的值的读写)
注意,索引Index是从0开始的。
object.Value(Index ) = [ value ]
IFeature 接口的第十个属性Table(只读,将该行要素转换成ITable格式的数据,即可对一张表进行数据操作,具体方法查看ITable接口)
12.
IRow接口的第一个方法Delete(方法,删除该行)
IRow接口的第二个属性Fields(只读,获取该Feature要素的字段集合,返回值为IFields类型)此方法类似于IFeature接口的Fields属性
IRow 接口的第三个方法Store(方法,保存该行。)此方法类似于IFeature接口的Store方法
IRow接口的第四个属性Table(只读,获取该行所在的表格,返回值为ITable类型)
IRow接口的第五个属性Value(Index) (读写,获取该行在参数索引的字段的值,注意,索引Index是从0开始的。)
object.Value(Index ) = [ value ]
IRow接口的第六个属性HasOID(只读,判断指出该行是否有OID)
IRow接口的第七个属性OID(只读,获取该行的OID值)
13.
IFeatureClass接口的第一个方法AddField(Field) (方法,增加一个属性字段到这个要素类,其中传入的参数为一个IField接口的变量,此变量可以由其他要素类获得并赋值给要操作的要素类,可用IFeilds接口的Field属性来获得)
IFeatureClass接口的第二个方法DeleteField(Field) (方法,删除一个属性字段,其中传入的参数为一个IField接口的变量)
IFeatureClass接口的第三个属性Fields(只读,获取该要素类的全部属性字段,返回一个IFields类型的变量)
IFeatureClass接口的第四个方法FindField(Name) (方法,去查找在该要素类里面是否含有参数名字的属性字段,如果有,则返回索引,没有,则返回-1)
IFeatureClass接口的第五个属性AreaField(只读,获取属性字段为geometry的那一个Field)
IFeatureClass接口的第六个方法Search (filter, Recycling) (方法,去得到一个IFeatureCursor类型的游标,该游标由filter来控制赛选,如果filter等于null,则返回整个featureclass的游标,再用IfeatureCursor的NextFeature的方法依次得到每一个Feature)
IFeatureClass接口的第七个方法Insert(useBuffering) (方法,去得到一个IFeatureCursor类型的游标,来用作插入新的Features,useBuffering是一个布尔型参数,当为True时即可以插入新的Feature,再用IFeatureCursor的InsertFeature (buffer )的方法去插入一个新的Feature)
IFeatureClass接口的第八个方法CreateFeatureBuffer(方法,新建一个缓冲,返回一个IFeatureBuffer类型的变量,然后再对这个变量进行操作)
14.
ITable是把要素类当成一个表格来看,每一列对应一个字段(Field),每一行对应一个要素(Feature),所以对要素类(Ifeatureclass)接口的操作均可以类似的在Itable接口中找到。
ITable接口的第一个方法AddField(Field) (方法,增加一个属性字段到这个表,其中传入的参数为一个IField接口的变量,此变量可以由其他表获得并赋值给要操作的表,可用IFeilds接口的Field属性来获得)
ITable接口的第二个方法GetRow(OID) (方法,通过OID来从表格数据库中获取一行,返回一个IRow接口的变量)此方法类似于IFeatureClass接口的GetFeature方法
ITable接口的第三个方法GetRows(oids, Recycling) (方法,得到一个游标ICursor,通过一个oids的OID数组参数和一个Recycling的布尔类型的参数,一般为True)此方法类似于IFeatureClass接口的GetFeatures方法
ITable接口的第四个方法RowCount(QueryFilter) (方法,得到满足查询过滤器条件的行数。此方法IFeatureClass接口没有,所以是一个很好的有条件查询要素数量的一个方法)
15.
IFeatureCursor接口的第一个方法NextFeature(方法,将游标向前跳到下一个位置,并且返回该位置的Feature)
IFeatureCursor接口的第二个方法UpdateFeature(Feature) (方法,对当前游标位置的Feature进行更新)
IFeatureCursor接口的第三个方法InsertFeature(buffer) (方法,用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer)
16.
IQueryFilter接口的第一个属性WhereClause(读写,为过滤器设置条件语句)
注意!各种不同的数据,设置条件查询语句的语法是不相同的,如一个shp文件在设置字段的时候要加“””双引号,而在SDE数据连接中,则什么都不加;在gdb文件的语句中,符号是“*”,而在SDE或者shp文件查询中则是“%”
IQueryFilter接口的第二个属性SubFields(读写,为过滤器设置提供赛选的字段,用逗号来分隔每一个逗号,如果不设置该属性,则当做所有字段均为查找字段)
17.
IFeatureLayer接口的第一个属性FeatureClass(读写,设置或者读取此layer的要素类)
IFeatureLayer接口的第二个属性MaximumScale(读写,设置或者读取此layer显示的最大比例尺)
IFeatureLayer接口的第三个属性MinimumScale(读写,设置或者读取此layer显示的最小比例尺)
IFeatureLayer接口的第四个方法Search (queryFilter, recycling ) (方法,创建一个游标去查询相应设置的过滤器的查询)
IFeatureLayer接口的第五个属性Visible(读写,设置或者读取此layer的可见性)
IFeatureLayer接口的第六个属性AreaOfInterest(只读,读取此layer的最大范围,回返一个IEnvelope接口的变量)
18.
IFeatureSelection接口的第一个方法SelectFeatures (Filter, Method, justOne ) (方法,根据指定的标准过滤器filter和方法,选择要素,第一个参数为QueryFilter类型的变量,第二个参数为esriSelectionResultEnum类型的变量,第三个参数为布尔型变量,通常为false)
19.
IMap接口的第一个属性Layers (uid, recursive ) (只读,第二个参数为True的时候,该属性获取第一个参数uid指定的Layers,赋值给一个IEnumLayer的变量)
其中比较常用的UID参数值如下:
{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer
{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer
{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer
{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer
{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer
{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer
{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer
IMap接口的第二个属性LayerCount(只读,返回该map里面Layer的个数)
IMap接口的第三个属性Layer(Index) (只读,返回指定索引index位置的Layer)
IMap接口的第四个方法AddLayer(Layer) (方法,向该map添加一个Layer)
IMap接口的第五个方法AddLayers(Layers, autoArrange) (方法,添加一个EnumLayer变量的layers到该map,第一个参数为IEnumLayer类型,第二个参数为bool型变量)
IMap接口的第六个方法ClearLayers(方法,将所有的layer从map中移除)
IMap接口的第七个方法ClearSelection(方法,将该map中选择的要素清空)
IMap接口的第八个属性SelectionCount(只读,返回该map被选中要素的个数)
IMap接口的第九个方法SelectFeature(Layer, Feature) (方法,从一个Layer中选择一个Feature)
IMap接口的第十个属性MapScale(读写,获取或者设置当前map的地图比例尺,double类型)
IMap接口的第十一个方法MoveLayer(Layer, toIndex) (方法,把一个Layer从当前的位置移动到指定的索引位置)
IMap接口的第十二个方法SelectByShape(Shape, env, justOne) (方法,从Layer中依靠一个图形的范围shape和一个选择的环境env来选择要素,而在所有图层中只从IFeatureLayer的图层中进行选择)
20. IPropertySet接口的第一个方法SetProperties (names, values ) (方法,设置属性) IPropertySet接口的第二个方法SetProperty (name, value ) (方法,设置属性) 21. 22. |
在实际问题中,如果有多次操作需要更改Feature的时候,切记要将操作对象重新赋值,不然在pWorkspaceEdit.StopEditing(true)的时候会出现错误,报错代码为-2147467259。
(详细代码可见WindowsApplication6的代码,其中详细操作了对字段的编辑过程,其中涉及到很多对字段Field的方法Add(Field),Delete(Field),get_value(object value),set_value(int index, object value)等等操作,其中还涉及到Feature经过ICursor类选取与经过FeatureClass类的方法GetFeature选取的区别)
23.
IWorkspaceFactory接口的第一个方法Open (ConnectionProperties, hWnd ) (方法,从一个工作工厂打开一个工作空间,并返回IWorkspace类型的变量,方法中的第一个参数ConnectionProperties是IPropertySet接口的变量)
IWorkspaceFactory接口的第二个方法OpenFromFile (fileName, hWnd ) (方法,从一个路径打开一个工作空间,并返回IWorkspace类型的变量)
24.
ITopologicalOperator接口的第一个方法ConstructUnion(geometries ) (方法,合并图形的工具,输入的参数是一个IEnumGeometry类型的参数,此方法效率甚高)
ITopologicalOperator接口的第二个方法Cut(cutter, leftGeom, rightGeom) (方法,剪切图形,第一个参数为剪切的线要素,为IPloyline类型,第二个第三个参数均为剪切后的图形,为输出参数)
ITopologicalOperator接口的第三个方法Boundary(方法,获取一个图形的边框,一个Polygon的boundary是一个Polyline类型的要素,一个Polyline的boundary是一个nultipoint类型的要素,一个Point的boundary是为空的)
ITopologicalOperator接口的第四个方法Buffer(distance) (方法,创造一个Polygon的要素来显示缓冲区域,参数为缓冲距离)
ITopologicalOperator接口的第五个方法Clip (clipperEnvelope ) (方法,输入一个IEnvelope类型的变量,来获取被这个边框剪切的要素,并将切割后的变量返回给调用方法的变量)
ITopologicalOperator接口的第六个方法QueryClipped (clipperEnvelope, clippedGeometry ) (方法,与Clip类似,但是第二个参数为剪切后返回输出的参数,本身不会改变)
ITopologicalOperator接口的第七个方法ConvexHull(方法,构造一个Geometry,大部分为Polygon类型的几何要素,该要素为调用此方法的ITopologicalOperator类型的变量最小的外边框)
ITopologicalOperator接口的第八个方法SymmetricDifference (other ) (方法,并集减去交集的部分,调用次方法的变量为第一个参数,other为第二个参数,最后返回变量到一个Geometry类型的变量,该变量的范围均在两个参数范围内,但不在两个参数相交的部分)
25.
========================================================
怎样创建buffer:(来源于管网线处理删除冗余节点)
========================================================
- Dim pTopOper As ITopologicalOperator
- Set pTopOper = pfeature.Shape
- Dim pGeometry As IGeometry
- Set pGeometry = pTopOper.Buffer(1)
(注意,这个pfeature是在前面定义的pfeature=pFeatureCursor.NextFeature,不用重新定义一个)
========================================================
怎样在buffer里面选择要素:
========================================================
- Dim pSpFilter As ISpatialFilter
- Set pSpFilter = New SpatialFilter
- Dim pTopOper As ITopologicalOperator
- Set pTopOper = pfeature.Shape
- Dim pGeometry As IGeometry
- Set pGeometry = pTopOper.Buffer(1)
- Set pSpFilter.Geometry = pGeometry
- pSpFilter.SpatialRel = esriSpatialRelContains
- '(esriSpatialRelContains是ISpatialFilter里面SpatialRel的一种参数esriSpatialRelEnum,值为8,代表在这个区域内包含的要素)
-
- Set m_pSelGW_D = pLyr_D
- m_pSelGW_D.SelectFeatures pSpFilter, esriSelectionResultNew, False
- '(m_pSelGW_D是IfeatureSelection类型的变量)
- pSpFilter.SpatialRel = esriSpatialRelIntersects
- Set m_pSelGW_X = pLyr
- m_pSelGW_X.SelectFeatures pSpFilter, esriSelectionResultNew, False
26.
- Private Sub UnionSelected()
- Dim pMxDoc As IMxDocument
- Dim pFtrLyr As IFeatureLayer
- Dim pFtrCls As IFeatureClass
- Dim pFtrSel As IFeatureSelection
- Dim pFtr As IFeature
- Dim pEnumGeom As IEnumGeometry
- Dim pEnumGeomBind As IEnumGeometryBind
- Dim pTopOp As ITopologicalOperator
- Dim pUnionedPolylines As IPolyline
-
' Get a ref to the selected polylines in the 1st layer -
Set pMxDoc = ThisDocument -
Set pFtrLyr = pMxDoc.FocusMap.Layer(0) -
Set pFtrSel = pFtrLyr -
Set pFtrCls = pFtrLyr.FeatureClass -
' Create an enumeration of the selected polyines -
Set pEnumGeom = New EnumFeatureGeometry -
Set pEnumGeomBind = pEnumGeom -
pEnumGeomBind.BindGeometrySource Nothing, pFtrSel.SelectionSet -
pEnumGeom.Reset -
-
' Union the polylines -
Set pUnionedPolylines = New Polyline -
Set pTopOp = pUnionedPolylines -
pTopOp.ConstructUnion pEnumGeom -
-
' Add this new unioned polyline to the featureclass -
Set pFtr = pFtrCls.CreateFeature -
Set pFtr.Shape = pUnionedPolylines -
pFtr.Store - End Sub