Arcgis Engine(ae)接口详解(5):IGeometry几何高级操作
- IPoint point = new PointClass();
- point.PutCoords(, );
- //ITopologicalOperator接口用于几何对象的几何操作
- ITopologicalOperator topo = point as ITopologicalOperator;
- //做一个几何对象的缓冲区(结果也是个几何对象),参数1是缓冲半径
- //点线面的缓冲区都是面,所以可以直接as到IPolygon
- IPolygon polygon = topo.Buffer() as IPolygon;
- ITopologicalOperator2 topo2 = point as ITopologicalOperator2;
- //错误几何对象的修复,如果当几何对象有几何错误,例如面有自相交,可以用此修复
- topo2.IsKnownSimple_2 = false;
- topo2.Simplify();
- topo = polygon as ITopologicalOperator;
- //获取面的边,面的边是线
- IPolyline polyline = topo.Boundary as IPolyline;
- IPolygon polygon2 = new PolygonClass();
- topo = polygon as ITopologicalOperator;
- //求两个几何对象的重叠部分
- //两个几何对象的重叠部分,可以有很多种几何类型组合,例如面与面重叠是面,线与线重叠是线或者点,点与点重叠是点,点与面重叠是点,线与面重叠是线等等
- //参数2是返回结果是多少维的意思,根据经验如果返回结果是点就是0维(esriGeometry0Dimension),线就是1维,面就是2维
- //官方文档还有详细说明,使用者要结合文档和实际使用情况相互对照来学习
- IGeometry geometry3 = topo.Intersect(polygon2, esriGeometryDimension.esriGeometry2Dimension);
- //两个几何对象的几何操作还有:
- //Union 求两个几何对象合并后的,也就是求并集
- //Clip 裁剪
- //Cut 用线把面一份为二
- //Difference 擦除
- //IRelationalOperator用于判断两个几何对象的空间关系
- //IRelationalOperator的每种空间关系在官方文档有具体截图
- IRelationalOperator relaOper = polygon as IRelationalOperator;
- //求两个几何对象是否有重叠部分,注意:Overlaps判断的两个几何对象的几何类型必须相同
- bool result = relaOper.Overlaps(polygon2);
- //其他空间关系判断有:
- //Contains-完全包含
- //Crosses-穿过?
- //Disjoint-完全不相交
- //Equals-完全重叠(就是两个几何对象完全一样,常用!!!!!)
- //Touches-边沿重叠?
- //Within-完全包含2
- IPoint point2 = new PointClass();
- point.PutCoords(, );
- //计算两点距离
- double distance = GeometryHelper.TwoPointDistance(point, point2);
Arcgis Engine(ae)接口详解(5):IGeometry几何高级操作的更多相关文章
- JDBC常用接口详解
JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()) ...
- Java6.0中Comparable接口与Comparator接口详解
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...
- socket接口详解
1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第八十三章:内部类与接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java接口 详解(二)
上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...
- [转载]MII/MDIO接口详解
原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...
- map接口详解
1.Map接口详解(1)映射(map)是一个存储键.键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象(2)键必须是唯一的,值可以重复(Map接口映射唯一的键到值)(3)有些映射可以接收 ...
- ReadWriteLock 接口详解
ReadWriteLock 接口详解 这是本人阅读ReadWriteLock接口源码的注释后,写出的一篇知识分享博客 读写锁的成分是什么? 读锁 Lock readLock(); 只要没有写锁,读锁可 ...
随机推荐
- HDU 5483 Nux Walpurgis
Nux Walpurgis Time Limit: 8000ms Memory Limit: 131072KB This problem will be judged on HDU. Original ...
- NYOJ 219 An problem about date
An problem about date 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你 ...
- Leetcode 335.路径交叉
路径交叉 给定一个含有 n 个正数的数组 x.从点 (0,0) 开始,先向北移动 x[0] 米,然后向西移动 x[1] 米,向南移动 x[2] 米,向东移动 x[3] 米,持续移动.也就是说,每次移动 ...
- Laya for...in和for each...in
当for...in和for each...in同时作用于一个对象时,for...in 获取的是key, for each...in获取的是value for each(var i in loadInf ...
- UITableView延伸:点击cell关闭键盘,加载不同cell,监听里面的textfeild内容改变
其实点击cell关闭键盘只要一句话 - () { cell = [tableView dequeueReusableCellWithIdentifier:){ cell ...
- 【bzoj4237】稻草人 分治+单调栈+二分
题目描述 JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典. 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地.和启示中的一样,田地需要满足以下条件: ...
- BZOJ 1027 [JSOI2007]合金 ——计算几何
我们可以把每一种金属拆成一个二维向量,显然第三维可以计算出来,是无关的. 我们只需要考虑前两维的情况,显然可以构成点集所形成的凸包内. 然后我们枚举两两的情况,然后可以发现如果所有的点都在一侧是可以选 ...
- BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
拆分的情况下,发现f数组本身并不是很好递推. 因为f(123)=f(123)/f(12+3)/f(1+2+3). 然后考虑f可以怎么表示f(n)=a0*M^n M为转移矩阵. 然后发现 f(x+y)= ...
- 软件包管理器(bzoj 4196)
Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- *LOJ#6227. 「网络流 24 题」最长k可重线段集问题
$n \leq 500$条平面上的线段,问一种挑选方法,使得不存在直线$x=p$与挑选的直线有超过$k$个交点,且选得的直线总长度最长. 横坐标每个点开一个点,一条线段就把对应横坐标连一条容量一费用( ...