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);
  • 相关阅读:
    System path '/Users/hxy/Library/Caches/PyCharm2018.2' is invalid.
    HBase安装指南
    centos6.8下hadoop3.1.1完全分布式安装指南
    PHP服务化搭建之nginx动静分离实战
    Laravel6实现第三方 微信登录
    laravel开发大型电商网站之异常设计思路分析
    Laravel实现大型商城网站之用户注册短信发送项目实战功能开发
    Redis 实现美团的外卖派单系统“附近的人”筛选实战原理分析
    Navicat远程连接MySQL8,必知防坑策略
    laravel大量填充项目测试数据的正确方法
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1394907.html
Copyright © 2011-2022 走看看