ArcEngine创建缓冲区,并查询缓冲区内要素
来源:互联网 发布:java页面自动跳转代码 编辑:程序博客网 时间:2024/06/11 09:05
实现功能:
1.获取鼠标选中的要素
2.对选中要素设置缓冲距离,在地图上显示缓冲区
3.进行缓冲区查询,获得缓冲区内的要素,并放入TreeList展示
/// <summary> /// 创建缓冲区 /// </summary> private void CreateBuffer() { ITopologicalOperator pTopo = null; IElement pElement = null; IGeometry pBuffer = null; IGeometry pGeo = null; ISelection pSelection = null; IEnumFeatureSetup pEnumFeatureSetup = null; IEnumFeature pEnumFeature = null; IFillSymbol pFillSymbol = null; IRgbColor pRgbColor = null; IFeature pFea = null; IFeature pFeature = null; IFeatureLayer pFeaLayer = null; IFeatureClass pFeaClass = null; IFeatureCursor pFeaCursor = null; ISpatialFilter pSpatialfilter = null; try { if (m_pMap != null) { (m_pMap as IGraphicsContainer).DeleteAllElements(); } //// 获得选中要素 pSelection = m_pMap.FeatureSelection; pEnumFeatureSetup = pSelection as IEnumFeatureSetup; pEnumFeatureSetup.AllFields = true; pEnumFeature = pEnumFeatureSetup as IEnumFeature; pEnumFeature.Reset(); pFea = pEnumFeature.Next(); //// 遍历选中要素 while (pFea != null) { pGeo = pFea.ShapeCopy; pTopo = pGeo as ITopologicalOperator; pBuffer = pTopo.Buffer(m_dDistance); pElement = new PolygonElementClass(); pElement.Geometry = pBuffer; //// 设置缓冲区颜色 pFillSymbol = new SimpleFillSymbolClass(); pRgbColor = new RgbColorClass(); pRgbColor.Red = 255; pRgbColor.Green = 255; pRgbColor.Blue = 153; pRgbColor.Transparency = 1; pFillSymbol.Color = pRgbColor; (pElement as IFillShapeElement).Symbol = pFillSymbol; (m_pMap as IGraphicsContainer).AddElement(pElement, 0); //// 设置空间过滤器 pSpatialfilter = new SpatialFilterClass(); pSpatialfilter.Geometry = pBuffer; //// 遍历图层 for (int i = 0; i < m_pMap.LayerCount; i++) { pFeaLayer = m_pMap.get_Layer(i) as IFeatureLayer; pFeaClass = pFeaLayer.FeatureClass; switch (pFeaClass.ShapeType) { case esriGeometryType.esriGeometryPoint: { pSpatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; break; } case esriGeometryType.esriGeometryPolyline: { pSpatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; break; } case esriGeometryType.esriGeometryPolygon: { pSpatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; break; } } pSpatialfilter.GeometryField = pFeaClass.ShapeFieldName; pFeaCursor = pFeaClass.Search(pSpatialfilter, false); pFeature = pFeaCursor.NextFeature(); TreeListNode tlNode = null; //// 查询到的要素添加到TreeList while (pFeature != null) { //// 添加图层节点到TreeList bool bIsContainLayer = false; foreach (TreeListNode node in tlResult.Nodes) { if (node.GetDisplayText(0).Equals(pFeaLayer.Name)) { tlNode = node; bIsContainLayer = true; break; } } if (!bIsContainLayer) { tlNode = tlResult.AppendNode(new object[] { pFeaLayer.Name }, null); } //// 添加要素到图层节点下 bool bIsAdd = false; foreach (TreeListNode childnode in tlNode.Nodes) { if (childnode.GetDisplayText(0).Equals(pFeature.OID.ToString())) { bIsAdd = true; break; } } if (!bIsAdd) { tlResult.AppendNode(new object[] { pFeature.OID, GtMap.GxAEHelper.Feature.GetValue(pFeature, "NAME") }, tlNode); } pFeature = pFeaCursor.NextFeature(); } } pFea = pEnumFeature.Next(); } IActiveView pActiveView = m_pMap as IActiveView; pActiveView.Refresh(); } catch (Exception ex) { } }
0 0
- ArcEngine创建缓冲区,并查询缓冲区内要素
- ArcEngine创建要素
- ARCEngine 添加创建线要素
- ArcEngine c# 创建shp图层,并将要素写入图层保存
- ArcEngine c# 创建shp图层,并将要素写入图层保存
- ArcEngine c# 创建shp图层,并将要素写入图层保存
- ArcEngine创建要素类_线图层
- arcengine 缓冲区查询 (ITopologicalOperator ISpatialFilter接口 )
- ArcEngine选择要素闪烁,Mapcontrol刷新并取消闪烁
- arcengine创建要素类、图层的方法
- Arcengine创建内存工作空间,要素类(InMemoryWorkspaceFactory)
- Arcengine编辑要素属性
- ArcEngine要素闪烁
- ArcEngine 面要素类转点
- 利用postgresql进行缓冲区内对象检测过程中遇到的sql查询效率问题解决方案记录
- ArcEngine面要素转线要素
- ArcEngine数据编辑--选择要素
- arcengine 要素类的复制
- 在UIWebView中媒体文件的展示和HTML字符串的展示
- 在Mac OS X上安装Virtual Box 和 Vagrant
- 10.4 第十章小结
- 学习
- 一个过期的创业想法
- ArcEngine创建缓冲区,并查询缓冲区内要素
- 第二章 吸引你的眼球—UI编程(7)
- Android中的UI界面控制方式和自定义View
- 金融专业
- c# 释放组件所占用的内存 Dispose()
- Ubuntu 14.04 LTS VirtualBox 个人安装设置
- C/C++基本数据类型
- 第一部分 基础篇 第四章 MongoDB快速入门
- C语言快速排序的例子