zoukankan      html  css  js  c++  java
  • Segment,Path,Ring和Polyline对象

    Segment几何对象
      Segment对象是一个有起点和终点的“线“,也就是说Segement只有两个点,至于两点之间的线是直的,
    还是曲的,需要其余的参数定义。所以Segment是由起点,终点和参数三个方面决定的。Segment有4个
    子类,它的4个子类如下图:

    Path几何对象
    Path是连续的Segment的集合,除了路径的第一个Segment和最后一个Segment外其余的Segment的起始
    点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离,Path可以是任意数的Segment
    子类的组合。
     

    Ring几何对象
    Ring是一个封闭的Path即起始和终止点有相同的坐标值。它有内部和外部属性。

     
    Polyline几何对象

    Polyline对象是由一个或多个相连或者不相连的path对象的有序集合,它可以是单个Path对象组成,也
    可以是多个相连的Path对象组成,或者是多个分离的Path组成,如下图所示。Polyline通常用来代表线
    状地物如道路,河流,管线等等。
           Polylines是有序path组成的集合,可以拥有M、Z和ID属性值。Polyline对象的IPointCollection
    接口包含了所有节点的复制,IGeometryCollection接口可以获取polyline的paths,ISegmentCollection
    接口可以获取 polyline的segments。

    一个Polyline对象必须满足以下准则:
    1.组成Polyline对象的所有Path对象必须是有效的。
    2.组成Polyline对象的所有Path对象不能重合,相交或自相交。
    3.组成Polyline对象的多个Path对象可以连接与某一点,也可以分离。
    4.Path对象的长度不能为0.
    IPolyline是Polyline类的主要接口,IPolyline的Reshape方法可以使用一个Path对象为一个
    Polyline对象整形,IPolyline的SimplifyNetwork方法用于简化网络。
    Polyline对象可以使用IGeometryCollection接口添加Path对象的方法来创建,使用该接口需注意
    以下情况:
    1.每一个Path对象必须是有效的,或使用IPath::Simplify方法后有效。
    2.由于Polyline是Path对象的有序集合,所以添加Path对象时必须注意顺序和方向。
    3.为了保证Polyline是有效的,可以创建完Polyline对象后使用ITopologicalOperator接口的
    Simplify方法。
      下面代码片段演示了一个Polyline的构成:
         
            private  object pMissing = Type.Missing;
     
            public  IGeometry GetPolylineGeometry()
            {
                const double PathCount = 3;
                const double PathVertexCount = 3;

                IGeometryCollection pGeometryCollection = new PolylineClass();
     
                for (int i = 0; i < PathCount; i++)
                {
                    IPointCollection pPointCollection = new PathClass();
     
                    for (int j = 0; j < PathVertexCount; j++)
                    {
                        pPointCollection.AddPoint(GetPoint(), ref pMissing, ref pMissing);
                    }
     
                    pGeometryCollection.AddGeometry(pPointCollection as IGeometry, ref pMissing,
    ref pMissing);
                }
     
     
                return pGeometryCollection as IGeometry;
            }
            private  IPoint GetPoint()
            {
                const double Min = -10;
                const double Max = 10;
     
                Random random = new Random();
     
                double x = Min + (Max - Min) * random.NextDouble();
                double y = Min + (Max - Min) * random.NextDouble();
     
                return ConstructPoint(x, y);
            }

    Segment,Path,Ring和Polyline的区别
    在这四者当中Segment是最小的单位具体的构成路线可以分为两个条:
    Segment-Path-Ring(封闭的Path)
    Segment-Path-Polyline

    我们可以这样说Segment是Path,只不过是这个Path由一个Segment组成,Ring也是一种
    Path,只不过是一个起点和终点重合的Path,至于Polyline那就很明显了,他们的区别可
    以从下图看出:
     

  • 相关阅读:
    点到圆的切点
    两圆交点
    问n条平行于x,y的直线交点个数
    凸包与直线的关系
    Kuangbin的计算几何模板
    最大空凸包
    树链剖分模板题
    笔记1
    面试题2
    python utf-8 转码问题
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3247920.html
Copyright © 2011-2022 走看看