1.1 ITopologicalOperator接口

1.1.1 ITopologicalOperator接口简介ITopologicalOperator接口用来通过对已存在的几何对象做空间拓扑运算以产生新的结合对象。实现该接口的类有Point,Multipoint,Polyline,Polygon,MultiPatch这些都是高级几何对象,另外GeometryBag也实现了该接口,低级的构建几何对象如Segments(Line,Circular Arc,Elliptic Arc,Bezier Curve),Paths或者Rings如果想使用该接口需包装成高级几何对象。
ITopologicalOperator接口在GIS开发中使用非常广泛,通常GIS系统中缓冲区分析,裁剪几何图形,几何图形差分操作,几何图形合并操作等都需要使用此接口。下表是ITopologicalOperator接口主要的方法说明:

方法名称 说明
Boundary 几何图形对象的边界
Buffer 对几何图形对象进行缓冲区空间拓扑操作
Clip 对几何图形对象进行裁剪空间拓扑操作
ConstructUnion 高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效
ConvexHull 构建几何对象的凸边形
Cut 切割几何对象
Difference 一个几何图形减去它与另一个几何图形相交的部分
Intersect 两个同维度几何对象的交集部分
Simplify 使几何对象拓扑一致
SymmetricDifference 对称差分将两个几何图形的并集部分减去两个几何图形交集的部分
Union 合并两个同维度的几何对象为单个几何对象

1. Boundary属性
如图所示Polygon几何对象的Boundary是组成它的Polyline几何对象
Polyline几何对象的[Boundary是组成它的顶点Point几何对象
而Point几何对象的Boundary是空对象

2.Buffer方法:
Buffer方法可以给一个高级几何对象产生一个缓冲区,无论是Polygon,Polyline,Point它们的缓冲区都是具有面积的几何对象

3.Clip方法
Clip方法可以将用一个Envelope对象对一个几何对象进行裁剪,参见结果是几何对象被Envelope 对象所包围的部分

4.ConvexHull方法
ConvexHull方法可以产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)
5.Cut方法
Cut方法不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,做,右两部分是相对曲线的方向而言。点与多点不能被切割,Polyline和Polygon只有与切割曲线相交时才能执行Cut方法

6.Difference方法
Difference方法用于产生两个几何对象的差集。

7.Union方法和ConstructUnion都用于合并几何对象,所不同的是前者合并两个同维度的几何对象为单个几何对象,而后者是高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效的。
8.Intersect方法
Intersect方法用于返回两个同维度几何对象的交集,即两个几何对象的重合部分。
9.SymetricDifference方法
SymetricDifference方法用于产生两个几何图形的对称差分,即两个几何的并集部分减去两个几何的交集部分

10.IsSimple属性和Simplify方法
IsSimple属性用于检测几何对象是否是拓扑正确即为简化几何对象,而Simplify方法用于简化几何对象使几何对象的拓扑正确。

在开发对几何对象空间分析时,所操作的几何对象必须是简化的几何对象,以下代码片段演示了如何使一个几何对象在拓扑上一致,例如在一个PointCollection对象中移除所有的重合点;对于segmentCollection移除所有重合线段,而相交的线段会变成非相交线段(即在相交处产生一个顶点);对于Polygon所有相交的环将被移除,未封闭的环将被封闭。

 private void SimplifyGeometry(IGeometry pGeometry)
{
try
{
ITopologicalOperator pTopOperator = pGeometry as ITopologicalOperator;
if (pTopOperator != null)
{
if (!(pTopOperator.IsKnownSimple))
{
if (!(pTopOperator.IsSimple))
{
pTopOperator.Simplify();
}
}
}
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

6.4 IRelationalOperator接口
6.4.1 IRelationalOperator接口简介几何对象之间都存在某种关联关系,如包含,相等,在内部,相交,叠加等。这些关联关系的获得都可以通过IRelationalOperator接口来获得,关系运算是在两个几何对象间进行的,通过IRelationalOperator的某一个方法返回一个布尔值来说明这两个几何对象是否有这种关系。所有支持ITopologicaloperator的几何对象的类也实现了IRelationalOperator接口,其中包括Envelope对象,这意味着还可以对两个几何对象的Envelope进行关联关系检查。

方法名称 描述
Contains 检查两个几何图形几何图形1是否包含几何图形2
Crosses 用于检测两个几何图形是否相交
Equal 用于检测两个几何图形是否相等
Touches 用于检测两个几何图形是否相连
Disjoint 用于检测两个几何图形是否不相交
Overlaps 用于检测两个几何图形是否有重叠
Relation 用于检测是否存在定义relationship
Within 检查两个几何图形几何图形1是否被包含于几何图形2

6.4.2判断几何对象包含关系功能开发 以下代码片段演示如何判断几何图形A是否包含几何图形B:

 ///
/// 检测几何图形A是否包含几何图形B
///
/// 几何图形A
/// 几何图形B
/// True为包含,False为不包含
private bool CheckGeometryContain(IGeometry pGeometryA, IGeometry pGeometryB)
{
IRelationalOperator pRelOperator = pGeometryA as IRelationalOperator;
if (pRelOperator.Contains(pGeometryB))
{
return true;
}
else
{
return false;
}
}

6.5 IProximityOperator接口
6.5.1 IProximityOperator接口简介
IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点。IProximityOperator接口的主要方法有:QueryNearesPoint,ReturnDistance, ReturnNearestPoint
ReturnDistance方法用于返回两个几何对象间的最短距离,QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,ReturnNearestPoint方法用于创建并返回几何对象上离给定输入点的最近距离的点。
6.5.2 最近点查询功能开发
以下代码片段演示如何使用IProximityOperator接口获取给定点与要查询的几何图形的最近点:

 /// 在pGeometry上返回一个离pInputPoint最近的point
///
/// 给定的点对象
/// 要查询的几何图形
/// the nearest Point
private IPoint NearestPoint(IPoint pInputPoint, IGeometry pGeometry)
{
try
{
 IProximityOperator pProximity = (IProximityOperator)pGeometry;
IPoint pNearestPoint = pProximity.ReturnNearestPoint(pInputPoint, esriSegmentExtension.esriNoExtension);
return pNearestPoint;
}
catch(Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return null;
}
}

以下代码片段演示如何使用IProximityOperator接口查询给定的两个几何对象的距离:

 ///
/// 获取两个几何图形的距离
///
/// 几何图形A
/// 几何图形B
/// 两个几何图形的距离
private double GetTwoGeometryDistance(IGeometry pGeometryA, IGeometry pGeometryB)
{
IProximityOperator pProOperator = pGeometryA as IProximityOperator;
if (pGeometryA!=null|| pGeometryB !=null)
{
double distance= pProOperator.ReturnDistance(pGeometryB);
return distance;
}
else
{
return ;
}
}

AE的空间分析(转载)的更多相关文章

  1. JavaScript 空间分析库——JSTS和Turf【转】

    https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个Java ...

  2. ArcGIS空间分析工具

    1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添 ...

  3. [转]varchar(n),nvarchar(n) 长度、性能、及所占空间分析

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  4. varchar(n),nvarchar(n) 长度、性能、及所占空间分析 nvarchar(64) nvarchar(128) nvarchar(256)(转)

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  5. SAM宏观生态学空间分析帮助文档

    宏观生态学分析软件帮助文档: 引言: 该软件是由布鲁塞尔..大学开发,目的是提供一个综合的空间分析计算平台,主要针对的是宏观生态学数据.该软件可以从网站...上自由获取,该软件的主要特征以及发表在20 ...

  6. sql中varchar(n),nvarchar(n) 长度性能及所占空间分析

    sql中varchar(n),nvarchar(n) 长度性能及所占空间分析 1.varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. ...

  7. 设计模式综合列表【QQ空间日志转载】

    C++设计模式全篇 [QQ空间日志转载]

  8. 空间分析开源库GEOS

    History of GEOS GEOS中Geometry的结构 GEOS分析功能简介 1.History of GEOS J​T​S​ ​T​o​p​o​l​o​g​y​ ​S​u​i​t​e是Ma ...

  9. 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析

    转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...

随机推荐

  1. Ubuntu安装JDK与环境变量配置

    Ubuntu安装JDK与环境变量配置 一.getconf LONG_BIT 查看系统位数,并下载相应的jdk.我的系统是32位的,所以下载的jdk是:jdk-8u77-linux-i586.gz.并且 ...

  2. (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)

    打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满 ...

  3. Java 对象在堆中的内存结构

    翻译人员: 铁锚 翻译日期: 2013年11月8日 原文链接:  What do Java objects look like in memory during run-time? 我们知道,函数每次 ...

  4. MinerMonitorThread.java 监控线程

    MinerMonitorThread.java 监控线程 package com.iteye.injavawetrust.miner; import org.apache.commons.loggin ...

  5. UVa - 102 - Ecological Bin Packing

    Background Bin packing, or the placement of objects of certain weights into different bins subject t ...

  6. some phrase for oral english

    依我看,在我看来 I suppose that, ... As far as i'm concerned, ... As i see it, ... It seems to me that ... 1 ...

  7. C 语言内存区域分配(进程的各个段)详解

    C语言可执行代码结构  名称 内容 代码段  可执行代码.字符串常量 数据段  已初始化全局变量.已初始化全局静态变量.局部静态变量.常量数据 BSS段  未初始化全局变量,未初始化全局静态变量 栈 ...

  8. 【单片机】基于有方GPRS的智能电梯控制系统

    前一篇文章<时钟及温度的显示>中所介绍的作品,是作为一个单片机新手在暑假学了一个月的单片机之后,做的第一个综合性作品,涵盖了二极管.蜂鸣器.数码管.液晶屏.按键.时钟芯片.温度传感器的控制 ...

  9. MPEG-7 视觉描述符

    本文节选自<基于MPEG-7与内容的图像检索技术的研究>. MPEG-7 标准中视觉描述工具包括基本结构和描述符.本文主要介绍各描述符. (1)颜色描述符 MPEG-7 主要定义了七种颜色 ...

  10. 【一天一道LeetCode】#328 Odd Even Linked List

    一天一道LeetCode系列 (一)题目 Given a singly linked list, group all odd nodes together followed by the even n ...