• 按内环(孔洞)面积删除内环


     1 /// <summary>
     2 /// 按内环(孔洞)面积删除内环
     3 /// </summary>
     4 /// <param name="pPolygon"></param>
     5 /// <param name="Area">删除小于此值的内环,当值小于等于0时全部删除</param>
     6 /// <returns></returns>
     7 public IPolygon Delete_InteriorRingBag(IPolygon pPolygon,double Area)
     8 {
     9     IPolygon4 pPolygon4 = pPolygon as IPolygon4;
    10     //外环
    11     IGeometry pGeoExter = (pPolygon4.ExteriorRingBag as IGeometryCollection).get_Geometry(0);
    12 
    13 
    14     
    15     //内环
    16     IGeometryCollection pGeos = pPolygon4.get_InteriorRingBag(pGeoExter as IRing) as IGeometryCollection;
    17 
    18 
    19     for (int i = 0; i < pGeos.GeometryCount; i++)//遍历内环,对满足要求的内环Union至输入polygon
    20     {
    21         IGeometry pGeoInter = pGeos.get_Geometry(i);
    22 
    23         if (Math.Abs((pGeoInter as IArea).Area) > (Area<=0?double.MaxValue:Area))
    24         {
    25             ITopologicalOperator pTopo = pPolygon as ITopologicalOperator;
    26             IPointCollection pinterPoints = pGeoInter as IPointCollection;
    27 
    28             IPointCollection pPointsNew = new PolygonClass();
    29             pPointsNew.AddPointCollection(pinterPoints);                    
    30             IPolygon pU = pPointsNew as IPolygon;
    31 
    32             ITopologicalOperator pTopoSim = pU as ITopologicalOperator;
    33             pTopoSim.Simplify();
    34 
    35             pPolygon = pTopo.Union(pU) as IPolygon;
    36         }
    37     }
    38     return pPolygon;
    39 }
  • 相关阅读:
    ListNode Java创建链表
    Remove Nth Node From End of List LeetCode Java
    Rotate List LeetCode Java
    LeetCode刷题感想
    Swap Nodes in Pairs LeetCode Java
    Reverse Nodes in k-Group LeetCode Java
    334. Increasing Triplet Subsequence
    300. Longest Increasing Subsequence
    130. Surrounded Regions
    200. Number of Islands
  • 原文地址:https://www.cnblogs.com/clgis/p/14771677.html
Copyright © 2020-2023  润新知