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);
  • 相关阅读:
    如何使用wei-ui框架,wei-ui框架有哪些组件
    微信小程序tabbar如何配置
    如何使用promise封装wx.request()、
    微信有哪些小程序内置组件,目录结构
    uni-app生命周期
    vue任意关系组件通信与跨组件监听状态 vue-communication
    vue父子组件状态同步的最佳方式续章(v-model篇)
    webstorm中emmet展开a标签和行内元素不换行的解决办法
    深入理解 vue 中 scoped 样式作用域的规则
    javascript事件环微任务和宏任务队列原理
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1394907.html
Copyright © 2011-2022 走看看