• 线生成面


    生成面之前的截图:


    生成为面之后的截图:


    从线生成面的方法代码:

    /// <summary>
    /// 通过线创建面
    /// </summary>
    /// <param name="pPolyline">线</param>
    /// <returns></returns>
    IPolygon ConstructPolygonFromPolyline(IPolyline pPolyline)
    {
        IGeometryCollection pPolygonGeoCol 
    = new PolygonClass();

        
    if ((pPolyline != null&& (!pPolyline.IsEmpty))
        {
            IGeometryCollection pPolylineGeoCol 
    = pPolyline as IGeometryCollection;
            ISegmentCollection pSegCol 
    = new RingClass();
            ISegment pSegment 
    = null;
            
    object missing = Type.Missing;

            
    for (int i = 0; i < pPolylineGeoCol.GeometryCount; i++)
            {
                ISegmentCollection pPolylineSegCol 
    = pPolylineGeoCol.get_Geometry(i) as ISegmentCollection;
                
    for (int j = 0; j < pPolylineSegCol.SegmentCount; j++)
                {
                    pSegment 
    = pPolylineSegCol.get_Segment(j);
                    pSegCol.AddSegment(pSegment, 
    ref missing, ref missing);
                }
                pPolygonGeoCol.AddGeometry(pSegCol 
    as IGeometry, ref missing, ref missing);
            }
        }
        
    return pPolygonGeoCol as IPolygon;
    }

    调用示例:
    ILayer pLayer = axMapControl1.get_Layer(1);
    IFeatureLayer pFeatureLayer 
    = pLayer as IFeatureLayer;
    IFeatureClass pFeatureClass 
    = pFeatureLayer.FeatureClass;
    if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)
    {
        IFeatureCursor pFeatureCursor 
    = pFeatureClass.Search(nullfalse);
        IFeature pFeature 
    = pFeatureCursor.NextFeature();

        ILayer pTargetLayer 
    = axMapControl1.get_Layer(2);
        IFeatureLayer pTargetFeatureLayer 
    = pTargetLayer as IFeatureLayer;
        IFeatureClass pTargetFeatureClass 
    = pTargetFeatureLayer.FeatureClass;
        
    if (pTargetFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
        {
            IPolygon pPolygon 
    = null;
            
    while (pFeature != null)
            {
                IPolyline pPolyline 
    = pFeature.Shape as IPolyline;
                pPolygon 
    = ConstructPolygonFromPolyline(pPolyline);
                
    if ((pPolygon != null&& (!pPolygon.IsEmpty))
                {
                    
    if (!pPolygon.IsClosed)
                    {
                        pPolygon.Close();
                    }
                    IFeature pNewFeature 
    = pTargetFeatureClass.CreateFeature();
                    pNewFeature.Shape 
    = pPolygon;
                    pNewFeature.Store();
                    pFeature.Delete();
                }
                pFeature 
    = pFeatureCursor.NextFeature();
            }
        }
    }
    axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, 
    nullnull);
  • 相关阅读:
    loopback 03
    loopback 02
    loopback 01
    node.js整理 02文件操作-常用API
    node.js整理 01代码的组织和部署
    express-21 静态内容
    coffeeScript学习02
    coffeeScript学习01
    jade学习02
    Android 读取Assets中资源
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1394907.html
Copyright © 2020-2023  润新知