`

使用ArcObjects添加点线面

F# 
阅读更多
在AE中数据编辑是一个重难点。它包括的东西很多,如地物的添加,地物的修改,地物查询,节点捕捉,地物的符号化等一系列的问题。熟练的使用地物编辑的功能,是开发一个系统必须具备的条件。数据编辑问题解决得好坏直接决定着软件是否操作方便。在这我只是写一些相应的功能函数,至于软件开发中的架构暂不考虑。
1、添加地物
什么是地物,这是 GIS的基本概念,在此只说明一点,地物可以表现在地图上,如房子、铁路、水管等等。我们把房子的总称称为一个地物类,在AE中对应一个地物类(IFeatureClass),一个地物类在地图上表示为一个地物层(IFeatureLayer),单独的一栋房子或一条管道我们称为地物(IFeature),Arcgis中一类地物只能放在一个层,通过图层的叠加组成一幅地图。
熟悉面向对象的人都知道,其实上边的地物类和地物的概念就是类和对象的概念。房子、铁路、水管等是一类地物的抽象,而具体的某一房子就是对象了。大家了解这一点,接下来的开发就容易理解一些了。当然,还有一些其他的概念也必须了解一下:如长事务、短事务、编辑空间等。请大家查找一些相关资料,了解这方面的内容。
我们先开始最基本的编辑功能:添加点线面的操作。它包括输入添加点线面和通过鼠标拖动添加点线面。下边讨论一下添加点线面的基本的实现方法:
一、添加点
我们可以有多种方法添加点,但基本的思路一样,只是有少量的接口有变化。下边是通过IFeatureClass的CreateFeature()函数添加地物。
IFeatureLayer I = MapTest.Map.get_Layer(0) as IFeatureLayer;
            IFeatureClass fc = I.FeatureClass;

            IFeatureClassWrite fcw = fc as IFeatureClassWrite;

            IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit;
            IFeature f;
            IPoint p;

            w.StartEditing(false);
            w.StartEditOperation();
          
            f = fc.CreateFeature();
            p = new PointClass();
            p.PutCoords(93000, 48000);
            f.Shape = p;
            fcw.WriteFeature(f);

            w.StopEditOperation();
            w.StopEditing(true); 
二、添加线
添加线的方法跟添加点一样,不同的只是地物类型不一样而已,我把代码贴出来,大家跟添加点的方式进行对比。
IFeatureLayer I = MapTest.Map.get_Layer(0) as IFeatureLayer;
            IFeatureClass fc = I.FeatureClass;

            IFeatureClassWrite fcw = fc as IFeatureClassWrite;
            IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit;
            IFeature f;
            IPoint p = new PointClass();

            w.StartEditing(false);
            w.StartEditOperation();

            //可选参数设置
            object Missing = Type.Missing;

            f = fc.CreateFeature();
            //定义一个多义线对象
            IPolyline polyLine = new PolylineClass();
            //定义一个点的集合
            IPointCollection ptCollect = polyLine as IPointCollection;
            //定义一系列要添加到多义线上的点对象,并赋初始值
            p.PutCoords(95000, 48000);
            ptCollect.AddPoint(p, ref Missing, ref Missing);
            p.PutCoords(93000, 48000);
            ptCollect.AddPoint(p, ref Missing, ref Missing);
            f.Shape = polyLine;

            fcw.WriteFeature(f);

            w.StopEditOperation();
            w.StopEditing(true);
三、添加面

添加面和添加线基本一致,将IPolyLine换成IPolygon就可以了


            IFeatureLayer feaLayer = MapTest.Map.get_Layer(0) as IFeatureLayer;
            IFeatureClass fc = feaLayer.FeatureClass;

            IFeatureClassWrite fcw = fc as IFeatureClassWrite;
            IWorkspaceEdit workspace = (fc as IDataset).Workspace as IWorkspaceEdit;
            IFeature f;
            IPoint p = new PointClass();

            workspace.StartEditing(false);
            workspace.StartEditOperation();

            //可选参数设置
      object Missing = Type.Missing;

            f = fc.CreateFeature();
            //定义一个多边形对象
      IPolygon polygon = new PolygonClass();
            //定义一个点的集合
      IPointCollection ptCollect = polygon as IPointCollection;
            //定义一系列要添加到多边形上的点对象,并赋初始值
      p.PutCoords(90000, 48000);
            ptCollect.AddPoint(p, ref Missing, ref Missing);
            p.PutCoords(90000, 50000);
            ptCollect.AddPoint(p, ref Missing, ref Missing);
            p.PutCoords(93000, 50000);
            ptCollect.AddPoint(p, ref Missing, ref Missing);

            f.Shape = polygon;
            fcw.WriteFeature(f);

            workspace.StopEditOperation();
            workspace.StopEditing(true);
分享到:
评论

相关推荐

    一个基于arcgis server 90开发的点线面编辑程序

    《基于ArcGIS Server 9.0的点线面编辑程序详解》 ArcGIS Server是Esri公司推出的地理信息系统(GIS)服务器产品,它允许开发者构建和发布地理服务,供网络上的用户进行地图浏览、空间查询、数据分析等操作。在本文...

    使用ARCOBJECTS控件编程

    使用ARCOBJECTS控件编程

    ArcObjects开发Chap.03--使用ARCOBJECTS控件编程(AE10+VS2010)

    兰小机的《基于ArcObjects与C#.NET的GIS应用开发》课件第三章,平台是AE10+VS2010,介绍使用ARCOBJECTS控件编程。

    ArcObjects中Cursor的使用

    ### ArcObjects中Cursor的使用详解 #### 一、引言 在GIS开发领域,特别是使用ESRI提供的ArcObjects SDK时,对于数据的操作是一项基础而重要的技能。本文将深入探讨ArcObjects中的`Cursor`机制,包括其分类、应用...

    ArcObjects 9.3 in Delphi

    ArcObjects提供了丰富的接口来处理几何对象,如点、线、面等,可以进行创建、编辑和计算。例如,`IGeometry`接口用于表示空间对象,`IFeature`接口则包含了属性数据和几何数据。 **6. 地图服务与Web GIS** ...

    ArcObjects+C#开发.pdf

    2. 灵活的开发方式:使用C#开发ArcObjects应用程序,可以使用各种开发模式,包括Windows Forms、ASP.NET、WPF等,灵活地满足不同的开发需求。 3. 广泛的应用前景:ArcObjects+C#开发可以应用于各种GIS相关的领域,...

    Exploring ArcObjects

    5. **地图对象和显示**:探讨地图的创建和管理,包括图层的添加、符号系统的使用、地图投影的理解以及动态地图生成。 6. **空间查询与分析**:介绍如何利用ArcObjects进行空间查询,如邻域查找、缓冲区分析、网络...

    基于ArcObjects与C#.NET的GIS应用开发

    1. 地图展示:使用ArcObjects的IMap和IMapControl接口,可以在Windows Forms或WPF应用程序中创建地图窗口,加载地图文档(MXD)或数据集,并进行缩放、平移等操作。 2. 数据操作:通过ICursor和IRow接口,可以读取...

    使用C#开发ArcObjects.

    具体介绍如何使用C#开发ArcObjects的基础入门.

    ArcObjects GIS应用开发-基于C#

    ### ArcObjects GIS应用开发-基于C# #### 一、ArcObjects概述 ArcObjects是一套由...通过以上知识点的学习和实践,开发者可以深入了解ArcObjects的使用方法,并能够根据实际需求快速构建出高效稳定的GIS应用程序。

    arcobjects sdk for java,arcgis二次开发官方示例代码和文档

    1. 开发者指南:阐述了ArcGIS二次开发的基本概念、工作流程和最佳实践,指导开发者如何开始使用ArcObjects SDK for Java。 2. API参考:详尽地列出了所有ArcObjects的类、接口和方法,包括参数说明、返回值、异常...

    Chap.03--使用ARCOBJECTS控件编程

    本章主要围绕"Chap.03--使用ARCOBJECTS控件编程"展开,将深入探讨如何利用ARCOBJECTS来实现GIS中的基本操作,如画圆、画点、创建多边形和多线以及绘制矩形。 首先,ARCOBJECTS是ESRI提供的一个全面的COM(组件对象...

    Programming In ArcGIS Using ArcObjects And AML.pdf

    ### 编程在ArcGIS中使用ArcObjects与AML #### 引言 《Programming in ArcGIS Using ArcObjects and AML》是一本旨在介绍如何利用ArcObjects和AML进行ArcGIS编程的指南。它不仅适合初学者作为入门教程,也适合有一定...

    ArcObjects GIS应用开发-C#.pdf

    文档详细介绍了如何使用ArcObjects进行点、多点、线、面、曲线等几何对象的创建、编辑和分析。通过对几何对象的精确操作,开发者可以实现复杂的空间分析任务,如缓冲区分析、网络分析等。 总的来说,《ArcObjects ...

    ArcObjects

    - 对象选择:利用ISelectionSet接口,开发者可以选择地图上的特定对象,如点、线、面等要素。 - 特征编辑:通过IFeature、IFeatureClass和IFeatureLayer接口,可以修改特征属性,添加、删除或移动几何位置。 - ...

    ArcObjects对象模型图

    这个详细的Visio绘制的图解详细展示了ArcObjects中的各种类、接口以及它们的继承层次结构,帮助开发者理解和使用ArcObjects进行地图数据的处理和应用开发。 ArcObjects是Esri开发的一套全面的COM(组件对象模型)...

    ArcObjects开发源代码

    4. **图层管理**:图层是地图的基本组成单元,ArcObjects允许添加、删除、隐藏图层,以及控制图层的显示属性和数据源。 5. **数据访问与处理**:可以读取、写入各种GIS数据格式,如Shapefile、Geodatabase等,并...

Global site tag (gtag.js) - Google Analytics