zoukankan      html  css  js  c++  java
  • ArcEngine 体系结构Geometry几何体的抽象和点的表达AO学习资料笔记

    在使用 ArcEngine 进行开发的时候,用的最多的就是其 Geometry 库中的对象,Geometry 库也是 ArcEngine 的基础.这一段时间打算将开发中用到过的和
    Geometry 有关的内容总结一下,其实这些内容基本上在 ArcEngine 的帮助 文档中都可以找到.
    Geometry 库在体系结构上分为下面几个部分:
      1.空间对象的表达和构造
      2.空间对象的拓扑运算和关系判定
      3.空间对象的变换(在这里引入了地理坐标系统和投影坐标系统)
      4.其他辅助接口
    本篇主要论述空间对象的表达,下一篇将讨论空间对象的构造.
      ArcEngine 中的几何体的主要层次表示如下

    其中 IGeometry 处于最顶端,是所有几何体的基接口,它包含了 ArcEngine   对于几何体的一般定义。主要包括四个属性:维数、是否为 Empty、外包、图形是否
    为空和空间参考(SpatialReference)。这四个方面都是很重要。其中维数(Dimension)在涉及到几何运算的时候会被经常用到,但是由于几何对象的操作都比较特殊,而且我们都有比较直观的感受,所以在开发的过程中经常忽略这个属性也不会导致错误.包络面是一个特殊的概念,它表达的是一个几何图形的外包矩形,这个外包矩形在作空间关系判断的时候可以很快的作出非判断。图形为空是由于计算机的处理所引入的一个概念,计算机操作可能会产生一些实际上不符合理论要求的几何图形,其中有一些情况就会使得几何图形为空。例如点的坐标为 Double.NaN(NaN 为 IEEE 定义的一个特殊数,表示不是一个可以理解的数值).或者某个多边形只有三个共线的点等等。这些情况下几何图形显然不能参与运算了,但是仍然可以被存储,这些就是 Empty 的图形,在获取几何图形后必须要先判断其是否为 Empty,如果是就不能参与几何运算。空间参考为几何图形定义两个方面的内容:其一是几何图形所在的坐标系统,其二是告诉你数据的有效精度,在计算机中坐标数据一般都使用浮点数,但是浮点运算是有误差的。所以必须制定精度才能比较准确的运算。否则就会出现计算不对称的情况例如:1/3*3 一般都不等于 1。但是如果指定了精度就可以解决这类问题了。  
      IGeometry 派生出四个子类
      IPoint 表示一个点
      IMultipoint 用多个点表示的一个对象
      IEnvelope 表示一个包络面(也就是外包)
      ICurve 表示曲线
    IPoint 表示一个点,从概念上讲特别简单,但是 ESRI 在 IPoint 这个接口上添加了两个特别的方法:
      ConstrainAngle(double constrainAngle,IPoint anchor,bool allowOpposite)这个方法的运算结果如下所述:
       首先用anchor和constrainAngle在一个以anchor为极点的极坐标系中构造一个无限的射线(矢量)然后从 IPoint 当前的坐标出发作一个垂直于这条射线的直线,交点就是 IPoint 的新的当前值.如果 allowOpposite 为 true,那么还可以向射线的反向延长线作垂线。这个方法可以用来约束新点必须在某条直线上。如图所示

    ConstrainDistance(double distance,IPoint anchor);这个方法的运算结果如下所示:
     首先以anchor为圆心distance为半径作一个圆,然后连接anchor和IPoint的当前点位置构成一条射线,这条射线或者其延长线会和圆有一个交点,这个点就是 IPoint 的当前位置。这个方法可以用来约束新点距离某个点的距离必须为多少。如图所示:

     

    IPoint 的构造方法有两大类:
      1.直接构造.开发者 new 一个 PointClass 对象自己手工给它设定坐标的值.
      2.使用 IConstructPoint 来构造.IConstructPoint 提供了 10 中构造点的方法.
    关于 IPoint 的构造将在专门的文章中列出。

  • 相关阅读:
    版本管理工具:linux下svn的基本使用
    驱动: 中断【3】为什么可能导致睡眠的函数都不能在中断上下文中使用呢?
    驱动:中断【2】中断处理程序、中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)
    驱动: 中断【1】linux中断流程
    驱动: oops
    嵌入式:nfs挂载开发板的几个陷阱
    字符设备驱动: register_chrdev和register_chrdev_region
    likely() and unlikely()
    windows desktop.ini
    高通电源管理qpnp-vm-bms驱动
  • 原文地址:https://www.cnblogs.com/hl3292/p/1851069.html
Copyright © 2011-2022 走看看