AE的空间分析(转载)
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的空间分析(转载)的更多相关文章
- JavaScript 空间分析库——JSTS和Turf【转】
https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个Java ...
- ArcGIS空间分析工具
1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添 ...
- [转]varchar(n),nvarchar(n) 长度、性能、及所占空间分析
varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析 nvarchar(64) nvarchar(128) nvarchar(256)(转)
varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...
- SAM宏观生态学空间分析帮助文档
宏观生态学分析软件帮助文档: 引言: 该软件是由布鲁塞尔..大学开发,目的是提供一个综合的空间分析计算平台,主要针对的是宏观生态学数据.该软件可以从网站...上自由获取,该软件的主要特征以及发表在20 ...
- sql中varchar(n),nvarchar(n) 长度性能及所占空间分析
sql中varchar(n),nvarchar(n) 长度性能及所占空间分析 1.varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. ...
- 设计模式综合列表【QQ空间日志转载】
C++设计模式全篇 [QQ空间日志转载]
- 空间分析开源库GEOS
History of GEOS GEOS中Geometry的结构 GEOS分析功能简介 1.History of GEOS JTS Topology Suite是Ma ...
- 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析
转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...
随机推荐
- SQL Server扫盲系列——安全性专题——SQL Server 2012 Security Cookbook
由于工作需要,最近研究这本书:<Microsoft SQL Server 2012 Security Cookbook>,为了总结及分享给有需要的人,所以把译文公布.预计每周最少3篇.如有 ...
- 动态创建VIEW
很多人都应该知道 global temporary table 的用法,这里也提出一个动态VIEW的用法,在实际过程中有着很好的独特之处 具体如下: /***************创建PACKAGE ...
- 【Android 应用开发】Android 上实现非root的 Traceroute -- 非Root权限下移植可执行二进制文件 脚本文件
作者 : 万境绝尘 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/36438365 示例代码下载 : -- CSDN : htt ...
- Python学习笔记 - 数据类型和变量
Python中有整数和浮点数,表示方法和C语言一样 浮点数也很像,不过Python可以用单引号把字符串括起来 字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz ...
- 4.1、Libgdx的生命周期
(原文:http://www.libgdx.cn/topic/32/4-1-libgdx%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F) 一个libgdx应 ...
- php 命令空间总结
本文移到:http://www.phpgay.com/Article/detail/classid/2/id/53.html 1.命名空间的语法: <?php namespace 名称; ?&g ...
- C语言实现的猜数字小游戏(主要是对于自定义函数的运用)
#include <stdio.h> #include <stdlib.h> #include<time.h>//加上此头文件的作用是什么?另外不加的话有什么影响? ...
- Protobuf-java maven配置
Protobuf-java maven配置 1. maven pom片断 <!-- protobuf-java for maven plugin http://stackoverflow.com ...
- AWR報告詳解
AWR是Oracle 10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快照(snapshot)收集到的统计信息 ...
- REHL5上安装salt-minion
REHL5上安装salt-minion 本文适用于rhel5.4, 6.4, 7. 仅以el5.4为例. 1 在线安装方式极为简单: # wget --no-check-certificate -O ...