zoukankan      html  css  js  c++  java
  • 线生成面

    生成面之前的截图:


    生成为面之后的截图:


    从线生成面的方法代码:

    /// <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);
  • 相关阅读:
    [你必须知道的.NET]第三十四回,object成员,不见了!
    [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴
    [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二
    [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
    C#中String跟string的“区别”
    [你必须知道的.NET]第三十回:.NET十年(下)
    log4j.properties 详解与配置步骤
    Linux下进程数量的限制pid_max的配置方法
    解决OutOfMemoryError: unable to create new native thread问题
    ORA-12518: TNS:listener could not hand off client connection
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1394907.html
Copyright © 2011-2022 走看看