point\polyline\polygon的转化(转)
首先你要明白Polyline是由path对象构成,Polygon是由ring对象构成,因此实现polyline向polygon的转换,思路如下:
1.提取polyline中的所有path对象
2.将path对象转换成ring对象,由于IRing继承自IPath,因此该转换是合理的
3.利用IGeometryCollection.AddGeometry添加ring对象,构成polygon
示例如下:
- //cast the polyline object to the polygon
- ISegmentCollection pRing;
- IGeometryCollection pPolygon = new PolygonClass();
- object o = Type.Missing;
- for (int i = 0; i < pPolyline.GeometryCount;i++ )
- {
- pRing = new RingClass();
- pRing.AddSegmentCollection(pPolyline.get_Geometry(i) as ISegmentCollection);
- pPolygon.AddGeometry(pRing as IGeometry, ref o, ref o);
- }
复制代码
point转为polyline,思路如下:
polyline是由path构成,path是由segment构成,因此首先构建segment对象,然后利用ISegmentCollection.AddSegment构造path,最后利用IGeometryCollection.AddGeometry构造polyline
示例如下:
- IPoint point1 = new PointClass();
- point1.PutCoords(100, 200);
- IPoint point2 = new PointClass();
- point2.PutCoords(600, 700);
- IPoint point3 = new PointClass();
- point3.PutCoords(450, 800);
- [color=Blue]//new a line object[/color]
- ILine pLine = new LineClass();
- object o = Type.Missing;
- pLine.PutCoords(point1, point2);
- [color=Blue]//new a path[/color]
- ISegmentCollection pPath = new PathClass();
- pPath.AddSegment((ISegment)pLine, ref o, ref o);
- pLine = new LineClass();
- pLine.PutCoords(point2, point3);
- pPath.AddSegment((ISegment)pLine, ref o, ref o);
- [color=Blue]//new a polyline[/color]
- IGeometryCollection pPolyline = new PolylineClass();
- pPolyline.AddGeometry((IGeometry)pPath, ref o, ref o);
复制代码
point\polyline\polygon的转化(转)的更多相关文章
- libgdx 裁剪多边形(clip polygon、masking polygon)
直接放例子代码,代码中以任意四边形为例,如果需要做任意多边形,注意libgdx不能直接用ShapeRender填充多边形,需要先切割成三角形. public static void drawClip( ...
- svg标签
在页面上画图无非有两种方法,一种是canvas,另外一种就是svg了,canvas之前已经介绍过了,现在来介绍一下svg吧. 其实早在svg出现以前几年,微软已经推出了类似的东西,叫做vml,早期是为 ...
- 百度地图API画多边型,测面积
效果: 脚本: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...
- 【305】◀▶ ArcPy 相关功能实现
目录: 1. 同一图层的多个要素合并(2种方法) 2. 导入带经纬度坐标的 txt 文件 3. 栅格计算器的实现 4. 添加 shp 文件(显示在 ArcMap) 5. 通过经纬度坐标生成 Polyg ...
- 百度地图js判断点是否在圆形区域内
/** * Created by LEGION on 2018/10/11. *//** * @fileoverview GeoUtils类提供若干几何算法,用来帮助用户判断点与矩形. * 圆形.多边 ...
- C# 实现 任意多边形切割折线算法
1. 内容简介 本文旨在解决任意多边形切割折线,获取切割之后的折线集合. 本文实现的算法内容包括:判断两条线段是否相交,如若相交,获取交点集合.对线上的点集,按斜率方向排序.判断点是否在多边形内 ...
- WPF系列:画图
Line 在两个坐标点之间画一条直线,通过四个属性设置它的起始和结束 <Line Stroke="Blue" StrokeThickness="3" X1 ...
- ArcGIS中的三种查询
ArcGIS runtime SDK for WPF/Silverlight中的三种常用的查询:QueryTask.FindTask.IdentifyTask都是继承自ESRI.ArcGIS.Clie ...
随机推荐
- bootstrap入门-1.可视化布局
下载地址:http://v3.bootcss.com/getting-started/#download HTML模板: <!DOCTYPE html> <html> &l ...
- Android APK反编译详解(附图)
转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...
- 移动端开发tips
为什么使用touch click有300sm的延迟 touch支持多点触摸 手势操作
- CentOS7使用无线网卡
1.安装CentOS7最小化时候,在网络连接功能项中设置WIFI的设备和密码. 2.进入系统,执行nmcli查看使用NetworkManager管理的网络 [root@seastar ~] nmcli ...
- array_merge注意细节
array_merge:合并一个或多个数组,一个数组中的值加在前一个数组的后面,返回的新数组作为结果 如果输入的数组中有相同的字符串键名,则该键名后面的值覆盖前面的,如果数组包含相同的数字键名,后面的 ...
- Git Permission denied (publickey).
有可能, jenkins slave service or jenkins service的logon 账户没有设置好
- 在win 7 vs2013下 web 调试 出现“ iis Express Worker Process 已停止工作”错误
在win 7 vs2013下 web 调试 出现“ iis Express Worker Process 已停止工作”错误: 如下图: 最终解决方案如下: 用管理员身份运行CMD,输入netsh ...
- cf 700 B Connecting Universities
题意:现在给以一棵$n$个结点的树,并给你$2k$个结点,现在要求你把这些节点互相配对,使得互相配对的节点之间的距离(路径上经过边的数目)之和最大.数据范围$1 \leq n \leq 200000, ...
- Unity3D 材质球设置参数无效果的解决方法
要设置shader里有下划线的属性名,而不是后面字符串的属性名. Color tmp = ,,,alpha); mat.SetColor("_Color", tmp);
- iOS开发中的内存分配(堆和栈)
进程的内存分区 所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先 ...