在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 9.0的点线面编辑程序详解》 ArcGIS Server是Esri公司推出的地理信息系统(GIS)服务器产品,它允许开发者构建和发布地理服务,供网络上的用户进行地图浏览、空间查询、数据分析等操作。在本文...
在本主题中,我们将深入探讨基于C#编程语言在ARCGIS平台上的图层点线面基础操作。ARCGIS是Esri公司开发的一款强大的地理信息系统(GIS),它提供了丰富的地图制作、空间分析和数据管理功能。C#作为.NET框架的一部分...
本话题聚焦于“查询二维重复点线面插件扩展开发源码”,这是一个针对iDesktop软件的插件开发项目。iDesktop是一款广泛应用的桌面GIS软件,它提供了丰富的地图编辑、分析和展示功能。而这个插件则专门用于处理二维...
压缩包内的"scenecontrol添加点线面"可能包含实际的C#代码示例,用于演示如何实现这些功能。通过阅读和理解这些代码,开发者可以学习到如何在实际项目中应用上述概念。 总的来说,这个压缩包提供了一个学习和实践...
同时,添加点线面功能允许用户在地图上绘制新的地理要素,这可能包括单个点、线状要素(如道路)或面状要素(如行政区划)。删除功能则用于移除这些用户自定义的要素,保持地图的整洁。 在描述中提到了“lyx”文件...