AE二次开发中,过滤后的图层,实现缩放至图层效果
//featureClass是自己获取的featureClass,也可是sde中获取的。 public void FilterAndZoomToLayer(IFeatureClass featureClass) { IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; IFeatureLayerDefinition featureLayerDefinition = featureLayer as IFeatureLayerDefinition; //获取符合条件的图层要素 featureLayerDefinition.DefinitionExpression = "XZQDM like '" + xz_xzqdm + "%'"; IFeatureLayer newFeatureLayer = featureLayerDefinition.CreateSelectionLayer(featureClass.AliasName, false, null, featureLayerDefinition.DefinitionExpression); ILayer newLayer = newFeatureLayer as ILayer; mcView.AddLayer(newLayer); //实现过滤后的图层,缩放到图层 IEnvelope envelope = new EnvelopeClass(); ILayer layer = mcView.get_Layer(0); IFeatureLayer featureLayer = layer as IFeatureLayer; IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = ""; IFeatureCursor featureCursor = featureLayer.FeatureClass.Search(queryFilter, true); IFeature feature = featureCursor.NextFeature(); while (feature != null) { IGeometry geometry = feature.Shape; IEnvelope featureExtent = geometry.Envelope; envelope.Union(featureExtent); System.Runtime.InteropServices.Marshal.ReleaseComObject(feature); feature = featureCursor.NextFeature(); } mcView.ActiveView.FullExtent = envelope; } //上面方法对于数据量较少的矢量是可以接受的,但对于一个县或一个市的数据,则加载比较慢。 //经过研究和尝试,整理了一种新的缩放至图层的方式,如下 //实现过滤后的图层,缩放到图层 IEnvelope pEnvelope = new EnvelopeClass(); //关键代码,替换了要素遍历,提高效率 IEnumGeometryBind enumGeometryBind = new EnumFeatureGeometryClass(); enumGeometryBind.BindGeometrySource(null, pFeatureClassDLTB); IEnumGeometry enumGeometry = (IEnumGeometry)enumGeometryBind; IGeometryFactory geoFactory = new GeometryEnvironment() as IGeometryFactory; IGeometry geo = geoFactory.CreateGeometryFromEnumerator(enumGeometry); pEnvelope.Union(geo.Envelope); System.Runtime.InteropServices.Marshal.ReleaseComObject(geo); System.Runtime.InteropServices.Marshal.ReleaseComObject(geoFactory); System.Runtime.InteropServices.Marshal.ReleaseComObject(enumGeometry); mcView.ActiveView.FullExtent = pEnvelope; 转自:http://blog.csdn.net/u011116642/article/details/12562929
来自:https://www.cnblogs.com/ParanoiaApe/p/8065127.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-02-17 ArcGIS Pro学习加我的微信号和微信公众号
2021-02-17 ArcGIS Pro版超级工具基本完成
2020-02-17 ArcGIS API for Python和ArcPy区别
2016-02-17 Android 颜色Color
2012-02-17 arcgis 如何改变字段的别名
2012-02-17 arcgis 判断要素是否被编辑