//点操作~~~~~~~~~~~~~~~~~~~~~~~~~

            //通过坐标生成点
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几何基础操作的更多相关文章

  1. JDBC常用接口详解

    JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()) ...

  2. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  3. socket接口详解

    1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...

  4. “全栈2019”Java第八十四章:接口中嵌套接口详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第八十三章:内部类与接口详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. Java接口 详解(二)

    上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...

  7. [转载]MII/MDIO接口详解

    原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...

  8. map接口详解

    1.Map接口详解(1)映射(map)是一个存储键.键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象(2)键必须是唯一的,值可以重复(Map接口映射唯一的键到值)(3)有些映射可以接收 ...

  9. ReadWriteLock 接口详解

    ReadWriteLock 接口详解 这是本人阅读ReadWriteLock接口源码的注释后,写出的一篇知识分享博客 读写锁的成分是什么? 读锁 Lock readLock(); 只要没有写锁,读锁可 ...

随机推荐

  1. nginx报错502

    http请求流程:一般情况下,提交动态请求的时候,nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客 ...

  2. XPosed框架_简单的应用

    0. Xposed框架简介 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,而Xposed框架是免费的而且还是开源的,本文主要介绍如何通过这个框架来进行系统 ...

  3. 【强连通分量缩点】poj 1236 Network of Schools

    poj.org/problem?id=1236 [题意] 给定一个有向图,求: (1)至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 (2)至少要加多少条边,才能使得从任何一个顶点出发,都 ...

  4. SQL Server中的@@ROWCOUNT

    SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变 ...

  5. 16.1112 模拟考试 T1

    加密[问题描述]有一种不讲道理的加密方法是: 在字符串的任意位置随机插入字符. 相应的,不讲道理的解密方法就是从字符串中恰好删去随机插入的那些字符.给定原文s和加密后的字符串t,求?有多少子串可以通过 ...

  6. Redis集群模式配置

    redis集群部署安装: https://blog.csdn.net/huwh_/article/details/79242625 https://www.cnblogs.com/mafly/p/re ...

  7. android调用邮件应用发送email

    直接贴代码: Intent intent = new Intent(android.content.Intent.ACTION_SEND); // 附件 File file = new File(En ...

  8. HDU_4770 Lights Against Dudely 状压+剪枝

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4770 Lights Against Dudely Time Limit: 2000/1000 MS ( ...

  9. luogu P1476 休息中的小呆

    题目描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王chinesesonic的故事 ...

  10. php-cpp用来开发php的拓展

    官网: http://www.php-cpp.com/documentation/install, 找时间要学一下.