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

            //通过坐标生成点
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. pytest分布式执行(pytest-xdist)

    前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟.如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候, 我们会用测试人力成本换取时间成本,这个时候多找 ...

  2. 【转载】C语言中的static 详细分析

    原blog地址:http://blog.csdn.net/keyeagle/article/details/6708077/ google了近三页的关于C语言中static的内容,发现可用的信息很少, ...

  3. 九度oj 题目1114:神奇的口袋

    题目描述: 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an.John可以从这些物品中 ...

  4. BZOJ 2438 [中山市选2011]杀人游戏 ——期望DP

    发现每一次死亡的几率相等,所以只需要判断最少问多少人即可. 并且环上的点任意询问都可以. 所以直接Tarjan缩点,然后计算入度为0的点的数目. 但是还有一些情况的时候会减少一次询问,比如说:$1-& ...

  5. HDU 3001 Travelling ——状压DP

    [题目分析] 赤裸裸的状压DP. 每个点可以经过两次,问经过所有点的最短路径. 然后写了一发四进制(真是好写) 然后就MLE了. 懒得写hash了. 改成三进制,顺利A掉,时间垫底. [代码] #in ...

  6. LVM 类型的 Storage Pool

    LVM 类型的 Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用. 不过,LV 由于没有磁盘的 MBR 引导记录,不能 ...

  7. Codeforces Round #269 (Div. 2) D - MUH and Cube Walls kmp

    D - MUH and Cube Walls Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & % ...

  8. shell的while/for脚本的简单入门

    shell的while/for脚本的简单入门 while [condition] dodone关键字break跳出循环,continue跳过循环的余下部分. for var in ...;do...d ...

  9. linux top %VSZ含义

    https://blog.csdn.net/sinohenu/article/details/58216013 https://unix.stackexchange.com/questions/449 ...

  10. CentOS 7.3 源码安装 OpenVAS 9

    https://my.oschina.net/u/2613235/blog/1583198