ArcGIS接口总结(4)

2019-03-15 21:00

//(注意:只有高级geometries、envelopes和geometrybags可以使用)

ESRI.ArcGIS.Geometry.IEnvelope envelope=new ESRI.ArcGIS.Geometry.EnvelopeClass(); envelope.PutCoords(508786,681196,513033,684341);

//创建一个空间查询

ISpatialFilter spatialFilter=new SpatialFilterClass();

//指定一个查询的的几何图形

spatialFilter.Geometry=(ESRI.ArcGIS.Geometry.IGeometry)envelope;

//确定在要素类上查询的几何字段

string shpFld=featureClass.ShapeFieldName; spatialFilter.GeometryFiled=shpFld;

//指定要使用的空间操作

spatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects;

//创建where表达式,这里只要要素 //在envelope中有一个子类型\

spatialFilter.WhereClause=\

//将spatial filter赋给IQueryFilter接口

IQueryFilter queryFilter=new QueryFilterClass(); queryFilter=(IQueryFilter)spatialFilter;

//在要素类上进行搜索,使用cursor保存结果

IFeatureCursor featureCursor=featureClass.Search(queryFilter,false);

//第一个返回的要素

IFeature feature=featureCursor.NextFeature();

//获得“Area”字段

IFields fields=featCursor.Fields; int areaIndex=fields.FindField(\

//保存总面积的变量 double searchedArea=0;

//遍历所有要素计算总面积 while(feature!=null) {

searchedArea=searcheArea+(double)feature.get_Value(areaIndex); feature=featureCursor.NextFeature(); }

Console.WriteLine(\ System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor); }

15.10、IFeatureClass.Select 方法

[C#]

public ISelectionSet Select(IQueryFilter QueryFilter, esriSelectionType selType, esriSelectionOption selOption, IWorkspace selectionContainer);

Select返回一个满足条件的ISelectionSet。如果IQueryFilter中无值,将选择要素类的所有要素。调用IFeatureClass的Select方法同调用ITable中的相应方法效果相同。调用Select时,selectionContainer不需要参数。实参应为Null(C#,VB.Net)或者Nothing(VB6)。(注意:提供workspace类型的selectionContainer只读参数将会失败,因为Select会将选择的结果写入workspace。 IFeatureClass Select Example [C#]

public void IFeatureClass_Select_Example(IFeatureClass featureClass) {

//创建查询过滤器并附予一个where从句

IQueryFilter queryFilter=new QueryFilterClass(); queryFilter.WhereClause=\ //使用query过滤器选择要素

//调用Select时不需要selectionContainer参数。在C#和VB.Net中赋给其Null值

ISelectionSet

selectionSet=featureClass.Select(queryFilter,esriSelectionType.esriSelectionTypeIDSet,esriSelectionOption.esriSelectionOptionNormal,null); //计算选择的要素数目

Console.WriteLine(\{2}\}

16. IFeatureCursor接口(esriGeoDatabase)

IFeatureCursor接口用于遍历从FeatureLayer等搜索出来的结果,可用来访问要素类中的一系列要素。虽然它并没有继承ICursor接口,但它的操作方法同ICursor一样,这样在处理features时,不像rows那样,可以不使用QI。 成员

DetleteFeature, Fields, FindField, Flush, InsertFeature, NextFeature, UpdateFeature.

16.1、IFeatureCursor.NextFeature方法

[C#]

public IFeature NextFeature();

IFeatureCursor.NextFeature方法,将游标向前跳到下一个位置,并且返回该位置的Feature. 当你使用cursor获取非geodatabase的要素时,返回的空间参考为指定的类型。

不能确保要素的几何图形仍然在该空间参考中。例如,若使用非recycling cursor,你获得的要素可以与其他人共享,任何人在任何时间都能改变其空间参考。如果想恢复或获得指定的空间参考,开发者要测试要素的空间参考或几何图形。

16.2、IFeatureCursor.UpdateFeature方法

[C#]

public void UpdateFeature(IFeature Object);

IFeatureCursor.UpdateFeature(Feature) 方法,对当前游标位置的Feature进行更新) [C#]

public void IFeatureCursor_UpdaterFeature_Example(IFeatureClass featureClass) {

IQeryFilter queryFilter=new QueryFilterClass(); queryFilter.WhereClause=\

IFeatureCursor updateCursor=featureClass.Update(queryFilter,false); int fieldIndex=featureClass.FindField(\ IFeature feature=updateCursor.NextFeature(); While(feature!=null) { m++;

feature.set_Value(fieldIndex,\ updateCursor.UpdateFeature(feature); feature=updateCursor.NextFeature(); }

System.Runtime.InteropServices.Marshal.ReleaseComObject(updateCursor);

16.3、IFeatureCursor.InsertFeature方法

用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer。

17. ISpatialFilter接口(esriGeoDatabase)

3sNews.Net——最具影响力的中国地理空间信息门户网站 M\

用于返回和修改filter使用的空间关系(空间拓扑查找的功能,即:在图形上通过某一范围查找空间制定要素)。是一个包含空间和属性限制的QueryFilter。因此可以使用SpatialFilter来限制从要素类中获得的要素集。ISpatialFilter继承IQueryFilter接口,因此可以指定一个whereclause、返回的colunms或者指定输出图形的空间参考。使用spatial filter执行空间查询,常将其作为IFeatureClass::Search、IFeatureClass::Select或feature layers上相似方法的参数。

17.1、ISpatialFilter.Geometry属性

Geometry是源图形,根据与其的关系执行空间选择。

17.2、ISpatialFilter. GeometryField属性

GeometryField是图形字段名,将其中的图形与源图形比较。

17.3、ISpatialFilter. SpatialRel属性

SpatialRel属性将一个esriSpatialRelEnum传入来指定空间关系。

ISpatialFilter Example [C#]

NOTE:要用到ISpatialFilter的三个方法Geometry,GeometryField和SpatialRel。 public void ISpatialFilter_(IFeatureClass featureClass) {

//Create a point to use for the search;

ESRI.ArcGIS.Geometry.IPoint point=new ESRI.ArcGIS.Geometry.PointClass(); point.PutCoords(-117.946,35.823);

//Getting a reference;

ISpatialFilter spatialFilter=new SpatialFilterClass();

//Setting the Geometry,GeometryField and SpatialRel parameters;

spatialFilter.Geometry=point;

spatialFilter.GeometryField=featureClass.ShapeFieldName; spatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects; //Execute the spatiafilter;

IFeatureCursor featureCursor=featureClass.Search(spatialFilter,false); }


ArcGIS接口总结(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:药品经营企业GSP试题库(2)-单选题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: