---恢复内容开始---
学院的安排也是可以,大三还要再学一遍大二的课程,不过,我喜欢编写代码哟,今天看了一下空间分析,主要用到了ITopologicalOperate,IProximityOperate,IRealationOperate三个接口,
这三个可以实现Arcgis许多常用功能,比如缓冲,裁剪......等等你能想到的功能。
下面进入代码环节,上代码,缓冲为例
IGraphicsContainerSelect gcs = map as IGraphicsContainerSelect;
if (gcs.ElementSelectionCount == 0)
{
MessageBox.Show("当前没有选择任何Element!请先选取。");
return;
}
IElement el = gcs.SelectedElement(0);
IGeometry geo = el.Geometry;
ITopologicalOperator to = geo as ITopologicalOperator;
if (to != null)
{
IGeometry ch = to.Buffer(distance);
// 其余代码简单,自己添加,主要是显示缓冲面,参考polygon的绘制
}
IGraphicsContainerSelect 专门用于选择元素的管理,IGraphicsContainerSelect::UnselectAllElements用来清除选中元素,讲一讲ITopologicalOperate,这个接口可以实现很多功能,如下图:
功能简直多,只用过一些功能,就不多说了,免得暴露了我的孤陋寡闻,哈哈,要实现这些功能简单,把
IGeometry ch = to.Buffer(.......);的buffer换成你需要的功能函数,比如Interact,把两个polygon相交的部分提取出来,语句改为
IGeometry intersect = to.Intersect(....., esriGeometryDimension.esriGeometry2Dimension);esriGeometryDimension描述几何对象的纬度,2维刚好绘制一个区域。
这些功能分别是:
Boundary属性
如图所示Polygon几何对象的Boundary是组成它的Polyline几何对象
Polyline几何对象的[Boundary是组成它的顶点Point几何对象
而Point几何对象的Boundary是空对象,示意图如下图所示:
Buffer方法:
Buffer方法可以给一个高级几何对象产生一个缓冲区,无论是Polygon,Polyline,Point它们的缓冲区都是具有面积的几何对象
Clip方法
Clip方法可以将用一个Envelope对象对一个几何对象进行裁剪,参见结果是几何对象被Envelope 对象所包围的部分如图所示:
ConvexHull方法
ConvexHull方法可以产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)
Cut方法
Cut方法不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,做,右两部分是相对曲线的方向而言。点与多点不能被切割,Polyline和Polygon只有与切割曲线相交时才能执行Cut方法,
Difference方法
Difference方法用于产生两个几何对象的差集。如图所示:
Union方法和ConstructUnion都用于合并几何对象,所不同的是前者合并两个同维度的几何对象为单个几何对象,而后者是高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效的。
Intersect方法
Intersect方法用于返回两个同维度几何对象的交集,即两个几何对象的重合部分。如下图所示:
SymetricDifference方法
SymetricDifference方法用于产生两个几何图形的对称差分,即两个几何的并集部分减去两个几何的交集部分。
IsSimple属性和Simplify方法
IsSimple属性用于检测几何对象是否是拓扑正确即为简化几何对象,而Simplify方法用于简化几何对象使几何对象的拓扑正确。
---恢复内容结束---