C# AE缓冲区分析 (转)

  public string[] strfname;    //得到地图内所有缓冲区内的地物名称
        public int n;//得到缓冲区内的个数
        public void CreatBuffer(AxMapControl mc, double x, double y, double Dist, string sLayerName)//创造缓冲区函数
      {
            IMap pMap = mc.Map;
            IActiveView pActiveView = (IActiveView)pMap;
            IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)pMap;
            ISimpleFillSymbol pFillSym = new SimpleFillSymbolClass();
            IRgbColor pColor = new RgbColorClass();
            pColor = getcolor(255, 255, 0, 255);
            ILineSymbol pOutline = new SimpleLineSymbolClass();
            pOutline.Width = 1;
            pOutline.Color = pColor;
            pFillSym.Style = esriSimpleFillStyle.esriSFSCross;
            pFillSym.Color = pColor;
            pFillSym.Outline = pOutline;
            IPoint pPoint = new PointClass();
            pPoint.PutCoords(x, y);
            ITopologicalOperator pTopol = (ITopologicalOperator)pPoint;
            IGeometry pBuffer = pTopol.Buffer(Dist);
            IFillShapeElement pFillEle = new CircleElementClass();
            pFillEle.Symbol = pFillSym;
            IElement pEle = (IElement)pFillEle;
            pEle.Geometry = pBuffer;
            pGraphicsContainer.AddElement(pEle, 0);//画出缓冲区图形
            ISpatialFilter pFilter=new SpatialFilter();
            pFilter.Geometry=pBuffer;
            pFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
            IQueryFilter pQueryFilter=pFilter as QueryFilter;
            IFeatureLayer pFeatureLayer;
            pFeatureLayer = mc.get_Layer(GetLayerFromName(sLayerName, mc)) as IFeatureLayer;
            if (pFeatureLayer == null)
                return;
            mc.Map.ClearSelection();
            IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
            IFeatureCursor pFeatureCursor = pFeatureClass.Search(pQueryFilter, false);
            
            IFeature pFeature = pFeatureCursor.NextFeature();
            IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
            pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
            ISelectionSet pSelection = pFeatureSelection.SelectionSet;
            n=pSelection.Count;
            strfname = new string[n];
            int namenumber = 0;
            while (pFeature != null)
            {
                
                mc.FlashShape(pFeature.Shape, 1, 100, null);
                mc.DrawShape(pFeature.Shape);
                strfname[namenumber]=pFeature.get_Value(2).ToString();
                
                mc.Map.SelectFeature(mc.get_Layer(GetLayerFromName(sLayerName, mc)), pFeature);
                pFeature = pFeatureCursor.NextFeature();
                namenumber++;

            }
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
        }

  更多GIS开发相关问题请加入 GIS开发学习QQ交流群 192251607 共同交流学习!

转载于:https://www.cnblogs.com/hl137510705/p/9266793.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值