首先你要明白Polyline是由path对象构成,Polygon是由ring对象构成,因此实现polyline向polygon的转换,思路如下:
1.提取polyline中的所有path对象
2.将path对象转换成ring对象,由于IRing继承自IPath,因此该转换是合理的
3.利用IGeometryCollection.AddGeometry添加ring对象,构成polygon
示例如下:

  1. //cast the polyline object to the polygon
  2. ISegmentCollection pRing;
  3. IGeometryCollection pPolygon = new PolygonClass();
  4. object o = Type.Missing;
  5. for (int i = 0; i < pPolyline.GeometryCount;i++ )
  6. {
  7. pRing = new RingClass();
  8. pRing.AddSegmentCollection(pPolyline.get_Geometry(i) as ISegmentCollection);
  9. pPolygon.AddGeometry(pRing as IGeometry, ref o, ref o);
  10. }

复制代码

point转为polyline,思路如下:
polyline是由path构成,path是由segment构成,因此首先构建segment对象,然后利用ISegmentCollection.AddSegment构造path,最后利用IGeometryCollection.AddGeometry构造polyline
示例如下:

  1. IPoint point1 = new PointClass();
  2. point1.PutCoords(100, 200);
  3. IPoint point2 = new PointClass();
  4. point2.PutCoords(600, 700);
  5. IPoint point3 = new PointClass();
  6. point3.PutCoords(450, 800);
  7. [color=Blue]//new a line object[/color]
  8. ILine pLine = new LineClass();
  9. object o = Type.Missing;
  10. pLine.PutCoords(point1, point2);
  11. [color=Blue]//new a path[/color]
  12. ISegmentCollection pPath = new PathClass();
  13. pPath.AddSegment((ISegment)pLine, ref o, ref o);
  14. pLine = new LineClass();
  15. pLine.PutCoords(point2, point3);
  16. pPath.AddSegment((ISegment)pLine, ref o, ref o);
  17. [color=Blue]//new a polyline[/color]
  18. IGeometryCollection pPolyline = new PolylineClass();
  19. pPolyline.AddGeometry((IGeometry)pPath, ref o, ref o);

复制代码

point\polyline\polygon的转化(转)的更多相关文章

  1. libgdx 裁剪多边形(clip polygon、masking polygon)

    直接放例子代码,代码中以任意四边形为例,如果需要做任意多边形,注意libgdx不能直接用ShapeRender填充多边形,需要先切割成三角形. public static void drawClip( ...

  2. svg标签

    在页面上画图无非有两种方法,一种是canvas,另外一种就是svg了,canvas之前已经介绍过了,现在来介绍一下svg吧. 其实早在svg出现以前几年,微软已经推出了类似的东西,叫做vml,早期是为 ...

  3. 百度地图API画多边型,测面积

    效果: 脚本: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  4. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能

    权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...

  5. 【305】◀▶ ArcPy 相关功能实现

    目录: 1. 同一图层的多个要素合并(2种方法) 2. 导入带经纬度坐标的 txt 文件 3. 栅格计算器的实现 4. 添加 shp 文件(显示在 ArcMap) 5. 通过经纬度坐标生成 Polyg ...

  6. 百度地图js判断点是否在圆形区域内

    /** * Created by LEGION on 2018/10/11. *//** * @fileoverview GeoUtils类提供若干几何算法,用来帮助用户判断点与矩形. * 圆形.多边 ...

  7. C# 实现 任意多边形切割折线算法

    1.    内容简介 本文旨在解决任意多边形切割折线,获取切割之后的折线集合. 本文实现的算法内容包括:判断两条线段是否相交,如若相交,获取交点集合.对线上的点集,按斜率方向排序.判断点是否在多边形内 ...

  8. WPF系列:画图

    Line 在两个坐标点之间画一条直线,通过四个属性设置它的起始和结束 <Line Stroke="Blue" StrokeThickness="3" X1 ...

  9. ArcGIS中的三种查询

    ArcGIS runtime SDK for WPF/Silverlight中的三种常用的查询:QueryTask.FindTask.IdentifyTask都是继承自ESRI.ArcGIS.Clie ...

随机推荐

  1. bootstrap入门-1.可视化布局

    下载地址:http://v3.bootcss.com/getting-started/#download   HTML模板: <!DOCTYPE html> <html> &l ...

  2. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  3. 移动端开发tips

    为什么使用touch click有300sm的延迟 touch支持多点触摸 手势操作

  4. CentOS7使用无线网卡

    1.安装CentOS7最小化时候,在网络连接功能项中设置WIFI的设备和密码. 2.进入系统,执行nmcli查看使用NetworkManager管理的网络 [root@seastar ~] nmcli ...

  5. array_merge注意细节

    array_merge:合并一个或多个数组,一个数组中的值加在前一个数组的后面,返回的新数组作为结果 如果输入的数组中有相同的字符串键名,则该键名后面的值覆盖前面的,如果数组包含相同的数字键名,后面的 ...

  6. Git Permission denied (publickey).

    有可能, jenkins slave service or jenkins service的logon 账户没有设置好

  7. 在win 7 vs2013下 web 调试 出现“ iis Express Worker Process 已停止工作”错误

    在win 7 vs2013下 web 调试 出现“ iis Express Worker Process 已停止工作”错误: 如下图:   最终解决方案如下: 用管理员身份运行CMD,输入netsh  ...

  8. cf 700 B Connecting Universities

    题意:现在给以一棵$n$个结点的树,并给你$2k$个结点,现在要求你把这些节点互相配对,使得互相配对的节点之间的距离(路径上经过边的数目)之和最大.数据范围$1 \leq n \leq 200000, ...

  9. Unity3D 材质球设置参数无效果的解决方法

    要设置shader里有下划线的属性名,而不是后面字符串的属性名. Color tmp = ,,,alpha); mat.SetColor("_Color", tmp);

  10. iOS开发中的内存分配(堆和栈)

    进程的内存分区 所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先 ...