获取Polyline自相交点

  • 背景:

    成都创新互联公司专业为企业提供乌恰网站建设、乌恰做网站、乌恰网站设计、乌恰网站制作等企业网站建设、网页设计与制作、乌恰企业网站模板建站服务,十年乌恰做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

       如果Polyline不为简单的几何图形,则求出其自相交的点。如果FromPoint和ToPoint重合也一并返回。


  • 实现逻辑:

       一、创建IMulitPoint pTargetPoint

       二、判断Polyline是否首尾相接,如果首尾相接,将点加入到pTargetPoint;

       三、判断Polyline是否为简单的几何图形,如果不是则进行以下步骤:

            1)得出Polyline中所有Path的起点和终点,List lstOrigin;

            2)将Polyline简单化,得出所有Path在LstOrigin中找不到的起点和终点,添加到pTargetPoint中


  • 第三步的代码:

private IMultipoint getInersectPoint(IPolyline pPolyline)
{
IGeometryCollection pGeoColl = pPolyline as IGeometryCollection;
List lstPoint = new List();
for (int i = 0; i < pGeoColl.GeometryCount; i++)
{
IPath pPath = pGeoColl.get_Geometry(i) as IPath;
IPoint pTemp = lstPoint.Find(p => (p.X == pPath.FromPoint.X && p.Y == pPath.FromPoint.Y));
if (pTemp == null) lstPoint.Add(pPath.FromPoint);
pTemp = lstPoint.Find(p => (p.X == pPath.ToPoint.X && p.Y == pPath.ToPoint.Y));
if (pTemp == null) lstPoint.Add(pPath.ToPoint);
}
ITopologicalOperator2 ptopo = pPolyline as ITopologicalOperator2;
ptopo.IsKnownSimple_2 = false;
ptopo.Simplify();
IMultipoint pMultipoint = new MultipointClass();
IPointCollection pPointColl = pMultipoint as IPointCollection;
for (int i = 0; i < pGeoColl.GeometryCount; i++)
{
IPath pPath = pGeoColl.get_Geometry(i) as IPath;
IPoint pTemp = lstPoint.Find(p => (p.X == pPath.FromPoint.X && p.Y == pPath.FromPoint.Y));
if (pTemp == null) pPointColl.AddPoint(pPath.FromPoint);
pTemp = lstPoint.Find(p => (p.X == pPath.ToPoint.X && p.Y == pPath.ToPoint.Y));
if (pTemp == null) pPointColl.AddPoint(pPath.ToPoint);
}
return pMultipoint;
}

 


网页名称:获取Polyline自相交点
本文地址:http://bzwzjz.com/article/jcepoh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 企业网站制作 成都网站设计 成都网站建设 企业网站建设 外贸网站建设 成都网站设计制作公司 高端网站设计推广 定制网站建设多少钱 高端定制网站设计 成都商城网站建设 响应式网站建设 手机网站制作 达州网站设计 成都网站设计 成都定制网站建设 宜宾网站设计 成都网站建设公司 成都网站设计 app网站建设 成都企业网站设计 品牌网站建设 手机网站制作