您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > ArcGIS接口详细说明
ArcGIS接口详细说明...1GeometryGeometry库处理存储在特征类(featureclasses)或其它图形要素(graphicalelements)中的特征的geometry或shape。大多数用户交互的基本几何对象有Point、MultiPoint、Polyline和Polygon。除了这些顶层的实体,还有作为Polylines和Polygons构建模块的几何体(geometries)。这些是组成几何体的基元(primitives)。它们是Segments、Paths和Rings。Polylines和Polygons由形成一条Path的依次相连的Segments组成。一个Segment包含两个不同的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。这种segments有CircularArc、Line、EllipticArc和BezierCurve。所有的几何对象都可以有与它们顶点相关的Z、和IDs。MISegmentCollection接口被Path,Ring,Polyline和Polygon四个类所实现,它们被称作是Segment集合对象,使用这个接口可以处理组成Segment集合对象中的每一个子Segment对象。使用ISegmentCollection接口可以为一个Segment集合对象添加,插入,删除Segment子对象。ISegmentCollection接口SetCircle和SetRectangle方法提供了一种简单不需要添加Segment的情况下构建一个完成的Path,Ring,Polyline和Polygon的方法。Geometry集合接口通过前边对于具体的Geometry对象的介绍可知,除了Point对象之外,其他几何对象都是通过其他几何对象集合构建而成。如MultiPoint对象是点的集合,Path对象是Segment对象的集合,Polyline对象是Path对象的集合,Polygon对象是Ring对象的集合,Multipatch对象是TriangleStrip和TrangleFan,Trangle,Ring对象的集合。ArcGISEngine提供了三个主要的几何图形集合接口用于对几何对象的操作,分别是IPointCollection,ISegmentCollection和IGeometryCollection,这些接口揭示出ArcGISEngine的几何模型的实质——它们是一种组合构成的模式,这种组合并不一定按照严格的层次结构组织。在前面介绍一些几何对象的时候,也给大家演示了部分使用功能,这三个接口在程序开发中经常使用到,接下来简单阐述以下这三个接口的使用方法。2.4.9.1IGeometryCollection接口IGeometryCollection接口被Polygon,Polyline,Multipoint,Multipatch,Trangle,TrangleStrip,TrangleFan和GeometryBag所实现。IGeometryCollection接口提供的方法可以让开发者对一个几何对象的组成元素即子对象进行添加,改变和移除。例如:组成Polyline对象的子对象是Path对象。组成Polygon对象的子对象是Ring对象。组成Multipoint对象的子对象是Point对象。组成MultiPatch对象的子对象是TrangleFanTrangleStrip,Triangle或Ring对象。组成GeometryBag对象的是任何类型的几何体对象,实际上GeometryBag是一个可以容纳任何类型几何对象的容器。IGeometryCollection的Geometry属性可以通过一个索引值返回一个组成该几何对象的某个子对象,而GeometryCount返回组成该几何对象的子对象的数目。IGeometry的AddGeometry和AddGeometries方法都用于向一个几何对象添加子对象,它们的区别是前者一次只能添加一个几何对象,而后者可以一次添加一个几何对象数组。除此之外,AddGeometry方法可以将子对象添加到几何的指定索引值的位置,而AddGeometries方法将子对象数组添加到集合的最后。在使用AddGeometry方法添加子对象到Polygon对象的过程中,如果子对象即Ring出现覆盖现象,那么多边形就没有封闭或出现了包含关系,那么这个Polygon就不是简单Polygon,因此通过IGometryCollection来创建一个Polygon时,需要使用ITopologicalOperator的Simplify方法保证其有效性。13.关于IFeatureClass接口(esriGeoDatabase)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类型的变量,然后再对这个变量进行操作)关于IFeatureCursor接口(esriGeoDatabase)IFeatureCursor接口的第一个方法NextFeature(方法,将游标向前跳到下一个位置,并且返回该位置的Feature)IFeatureCursor接口的第二个方法UpdateFeature(Feature)(方法,对当前游标位置的Feature进行更新)IFeatureCursor接口的第三个方法InsertFeature(buffer)(方法,用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer)privatevoidbutton1_Click(objectsender,EventArgse){stringFilePathName=E:\\数据样本\\测试文件夹;//创建坐标轴pline图层stringMapLayerName=;shapeFileFullName=测试.shp;MapLayerName=shapeFileFullName.Substring(0,shapeFileFullName.Length-4);stringPointLineHu=Polyline;//标记是点、线、弧pointlineyuanhu//显示绘图页面tabControl1.Show();tabControl1.SelectedTab=tabPageMap;if(Directory.Exists(FilePathName)==false)//如果不存在该文件夹就创建文件夹{Directory.CreateDirectory(FilePathName);}//接口IWorkspaceFactory提供创建和打开workspace的成员以及访问workspacefactory信息的成员。IWorkspaceFactorypWSF=newShapefileWorkspaceFactoryClass();//IFeatureWorkspace接口用于访问和管理地理数据库中的要素的重要成分—数据集,IFeatureWorkspacepFWS=(IFeatureWorkspace)pWSF.OpenFromFile(FilePathName,0);stringoutfileNamePath=FilePathName+\\+shapeFileFullName;//如果shapefile存在,询问覆盖还是返回//如果shapefile存在,询问覆盖还是返回if(File.Exists(outfileNamePath)){if(MessageBox.Show(文件已经存在,是否要重新计算覆盖原文件?,询问!,MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){if(axMapView.LayerCount0){this.axMapView.ClearLayers();this.axMapView.Refresh();}IFeatureClassfeatureClass=pFWS.OpenFeatureClass(shapeFileFullName);IDatasetpDataset=(IDataset)featureClass;pDataset.Delete();}else{return;}}else{//IFeatureClassfeatureClass=pFWS.OpenFeatureClass(shapeFileFullName);}//调用函数CreatFields,定义坐标轴属性字段IFieldspFields=CreatFields(MapLayerName,PointLineHu);//定义一类地物特征IFeatureClasspFeatureClass;pFeatureClass=pFWS.CreateFeatureClass(shapeFileFullName,pFields,null,null,esriFeatureType.esriFTSimple,Shape,);//pFeatureLayer.Name=MapLayerName;//axMapView.Map.AddLayer(pFeatureLayer);IFeatureLayerpFeaturelayer=newFeatureLayerClass();pFeaturelayer.FeatureClass=pFeatureClass;IGeometrypGeom;//IGeoFeatureLayerpGFeatureLyr=pFeatureLayerasIGeoFeatureLayer;//IGeoFeatureLayerpGFeatureLyr=pFeatureLayerasIGeoFeatureLayer;//pGeom.GeometryType=esriFieldType.esriFieldTypeGeometry;IWorkspaceEditw=(pFeatureClassasIDataset).WorkspaceasIWorkspaceEdit;w.StartEdit
本文标题:ArcGIS接口详细说明
链接地址:https://www.777doc.com/doc-2898332 .html