麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS Engine 10 开发手册(5-4)ArcGIS Engine 中的Polyline几何对象

Polyline 对象是由一个或多个相连或者不相连的 path 对象的有序集合,通常用来代表线状地物如道路 , 河流 , 管线等等. 该对象在ArcGIS Engine中的模型图如下 :

在这个模型中,我们看到某些几何对象可以组合产生新的几何形体,如 polyline 又 path 构成,path 又可以由 segement 组成,但是这并不意味着用户必须按照这种层次去构造 polyline,实际上 Point 集合 直接构成 Polyline,组成 Polyline 的这些路径既可以是连续的,也可以是不连续的,如下图:

Polyline 是有序 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);

}

ArcGIS Engine 10 开发手册全集

ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

已有 2 条评论

  1. 麻辣GIS-我随心动
    1#
    我随心动  · 2019-01-22 11:31

    for循环里的“j<pathvertexcount”什么意思,没遇到过使用&符号

  2. 麻辣GIS-我随心动
    2#
    我随心动  · 2019-01-22 11:31

    for循环里的“j<pathvertexcount”什么意思,没遇到过使用&符号

留言板(小编看到第一时间回复)