Arcgis Engine(ae)接口详解(5):IGeometry几何基础操作
//点操作~~~~~~~~~~~~~~~~~~~~~~~~~
//通过坐标生成点
IPoint point = new PointClass();
point.PutCoords(, );
//获取点坐标
double x = point.X;
double y = point.Y;
//线操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//通过点集生成线
IPolyline polyline = new PolylineClass();
//思路是通过点集接口IPointCollection添加线的点,创建线和面同样可用此方法
IPointCollection pointColl = polyline as IPointCollection;
point = new PointClass();
point.PutCoords(, );
pointColl.AddPoint(point);
point = new PointClass();
point.PutCoords(, );
pointColl.AddPoint(point);
//通过点集生成线 完成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//获取线的起点和终点
IPoint pointStart = polyline.FromPoint;
IPoint pointEnd = polyline.ToPoint;
//获取线的长度
double length = polyline.Length;
//获取线的矩形范围(envelop),面的获取方式也一样
//线和面都有envelope,不过点的envelop没有意义
IEnvelope envelope = polyline.Envelope;
//获取线是否是闭合的线
bool isClosed = polyline.IsClosed;
//把线的方向反转,就是起点和终点,点的顺序反转
polyline.ReverseOrientation();
//获取线的所有点,对于面同样可用此方法
for (int i = ; i < pointColl.PointCount; i++)
{
IPoint point1 = pointColl.Point[i];
}
//面操作~~~~~~~~~~~~~~~~~~~~~~~~~~~
IPolygon polygon = new PolygonClass();
//通过点集生成线:与线一样
//注意:生成面时点集要求第一个点做坐标和最后一个点的坐标一样,也可理解为同一个点添加了两次,否则会出错
//获取面的周长
length = polygon.Length;
IArea area = polygon as IArea;
//获取面的面积
double area1 = area.Area;
//获取面的所有点,跟线获取的方法一样
//几何通用操作~~~~~~~~~~~~~~~~~~~~~~~~~~~
//点线面都可以as到IGeometry,所有几何对象的类型都可以,因此所有几何类型接口都继承了IGeometry
IGeometry geometry = polygon as IGeometry;
//获取几何类型,可以区分出点,线,面等
//如果有种情况获取到的几何对象的类型是IGeometry,那可以通过这个判断是什么几何类型,然后在as到对应的接口再做下一步操作
esriGeometryType geometryType = geometry.GeometryType;
//获取是否空几何对象
//空几何对象和null不同,例如点对象可是没有点坐标,线对象没有一个点等等
//空几何对象其中一种情况是,从feature获取到的几何对象,可能是空的,因为一条要素肯定有一个对应的几何对象,可是编辑时又可以不录入几何对象(而只是录入属性字段值)
bool isEmpty = geometry.IsEmpty;
//矩形范围(Envelope)操作~~~~~~~~~~~~~~~~~~~~~~~~~~~
IEnvelope envelope2 = polygon.Envelope;
//获取矩形的坐标,矩形用最小点(左下角的点)和最大点(右上角的点)两个点就足够表示
double xmin = envelope2.XMin;
double ymin = envelope2.YMin;
double xmax = envelope2.XMax;
double ymax = envelope2.YMax;
//获取矩形的宽和高
double height = envelope2.Height;
double width = envelope2.Width;
//通过坐标创建矩形
envelope2 = new EnvelopeClass();
envelope2.PutCoords(, , , );
//扩大和缩小
//有两种情况,根据参数3设置,false=按长度,true=按比例
//下例是水平扩大10(米),垂直扩大20(米)
envelope2.Expand(, , false);
//下例是水平设为原来的0.8倍(可以理解为缩小了20%),垂直设为原来的1.1倍(可以理解为放大了10%)
envelope2.Expand(0.8, 1.1, true);
//移动
//把矩形中心点移到某个点(实际是整个矩形移动)
envelope2.CenterAt(point);
//矩形转面
//逻辑上矩形也是面,但在ae对象中IEnvelop和IPolygon不能互转,下面是edm的转换方法
polygon = GeometryHelper.EnvelopeToPolygon(envelope);
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(); 只要没有写锁,读锁可 ...
随机推荐
- LOGMNR分析redo log和archive log教程
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- Mac 文档阅读软件Dash软件破解版
1.Dash 破解版链接 Mac 上阅读开发文档的软件:支持java.spring.springBoot等.百度网盘下载链接和密码如下. 链接:https://pan.baidu.com/s/1RWM ...
- I/O输入系统
I/O输入系统 计算机有两个主要任务:I/O操作与计算处理.在许多情况下,主要任务是I/O操作.而计算处理只是附带的. 操作系统在计算机I/O方面的作用是管理和控制I/O操作和I/O设备. 概述 对与 ...
- 【Android】页面迁移时先弹出键盘问题解决
android自动弹出软键盘(输入键盘) 在AndroidMainfest.xml内容无法更改情况下,也就是键盘非要弹出情况下,进入此页面时先关闭软键盘不让其弹出 InputMethodManager ...
- Netflix Ribbon源码设计错误的证据(附正确示例)
我在之前一篇博客里https://www.cnblogs.com/yangfeiORfeiyang/p/9644254.html 里对Netflix Ribbon的Loadbalancer类源码设计的 ...
- 【HDOJ6354】Everything Has Changed(计算几何)
题意: 给定一个平面和一个(0,0)为中心的大圆,有n个小圆保证没有两两之间相交与覆盖整个大圆的情况,求小圆覆盖后大圆的周长并 1≤m≤100, -1e3<=x[i],y[i]<=1e3, ...
- hdu 5691 Sitting in Line
传送门 Sitting in Line Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/O ...
- UI小结
第一.UIButton的定义 UIButton *button=[[UIButton buttonWithType:(UIButtonType); 能够定义的button类型有以下6种, ...
- android Paint属性
** * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本和图形 ...
- hdu1853/ hdu 3488 有向图,取k个圈覆盖所有点一次//费用流
哎╮(╯▽╰)╭,这是费用流基础题型,拆点,建二分图,跑最小费用最大流即可.若最大流为n,则说明是最大匹配为n,所有点都参与,每个点的入度和出度又是1,所以就是环. 弱菜还需努力! #include& ...