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那就很明显了,他们的区别可
以从下图看出:

Segment,Path,Ring和Polyline对象的更多相关文章

  1. Segment,Path,Ring和Polyline的区别

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

  2. Polyline对象 - (及其他对象的关系)

    Polyline对象是由一个或多个相连或者不相连的path对象的有序集合,通常用来代表线状地物如道路,河流,管线等等.

  3. Leaflet:Path、Polyline、Polygon、Rectangle、Circle、CircleMarker

    下边介绍Vector Layer Path(Layer) Path是其他Vector Layer的父类,比如Polyline.Polygon.Rectangle.Circle.CircleMarker ...

  4. SVG & convert polygon/polyline to path

    SVG & convert polygon/polyline to path SVG Polygon/Polyline to Path Converter https://codepen.io ...

  5. ArcGIS Engine开发之旅09--几何对象和空间参考

    原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry  Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...

  6. Envelope几何对象 Curve对象几何对象 Multipatch几何对象 Geometry集合接口 IGeometryCollection接口

    Envelope是所有几何对象的外接矩形,用于表示几何对象的最小边框,所有的几何对象都有一个Envelope对象,IEnvelope是Envelope对象的主要接口,通过它可以获取几何对象的XMax, ...

  7. 分享:根据svg节点对象类型和路径值转换坐标值

    功能用处: 对svg文件的路径节点填充时会使用(相邻两个坐标区域内的四边形的填充颜色不重复). 需要对svg文件中的Path节点或者 Polyline 节点做颜色填充.并且相邻的两个区域之间的颜色不允 ...

  8. WPF Path总结(一)

    首先来看看Path的定义,参考MSDN:绘制一系列相互连接的直线和曲线.介绍比较简单,我们再来看看备注中有些什么,Path 对象可以绘制封闭式还是开放式形状. 多个形状和甚至曲线的形状.与不 Line ...

  9. 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变

    大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...

随机推荐

  1. 程序开发:MVC设计模式与应用

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面 显示分离的方法组织代 ...

  2. JS获取当前使用的浏览器名字以及版本号

    JS获取当前使用的浏览器名字以及版本号 工作中需要通过JS去获取当前使用的浏览器的名字以及版本号,网上大堆资料都有一个关键词是 navigator.appName,但是这个方法获取的浏览器的名字只有两 ...

  3. IOS把图片缓存到本地的几种方法

    把图片缓存到本地,在很多场景都会用到,如果是只储存文字信息,那建一个plist文件,或者数据库就能很方便的解决问题,但是如果存图片到沙盒就没那么方便了.这里介绍两种保存图片到沙盒的方法. 一.把图片转 ...

  4. php项目第三季

    1.百度浏览器路径写相对路径 2.svn--setting中两个勾去掉,第二页一个勾打上.工程上右击update是更新,commit是提交. 3.Deprecated: mysql_connect() ...

  5. C++中复制构造函数和赋值操作符

    先看一个例子: 定义了一个类:

  6. Python编码介绍——encode和decode

    在 python 源代码文件中,如果你有用到非ASCII字符,则需要在文件头部进行字符编码的声明,声明如下: # code: UTF-8 因为python 只检查 #.coding 和编码字符串,所以 ...

  7. 第十节,While循环和for循环

    While循环 While循环,是一个循环加判断的组合,满足判断条件返回 真(True)开始循环代码块,不满足判断条件返回 假()不循环 格式: While 条件: 代码块 注意:在While循环里如 ...

  8. hdu_2089_不要62(数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:中文,不解释 题解:dp[i][j]表示当前第i位的前一个数为j,然后记忆化dfs,注意的 ...

  9. 第一个WebAPI项目

    (1)新建一个ASP.NET MVC项目,取名为:MyMvcWebAPIDemo,项目类型选择WebAPI. (2)在Models中新增一个类,取名为:Product,作为我们要测试的实体模型.   ...

  10. java和.net的类比

    原文地址在http://www.seguetech.com/blog/2013/06/03/dotnet-vs-java-how-to-pick