ArcGIS AO中控制图层中要素可见状态的总结
?
一、DefinitionExpression
實現(xiàn)新建查詢圖層,查詢結果要素為選中狀態(tài)
該接口可以通過兩種方法來控制要素的可見狀態(tài)。
思路1
通過該接口的?DefinitionExpression?方法,可以給圖層設置一個查詢條件,只有符合該查詢條件的圖層才會顯示。例如:我們只想顯示圖層中?Name?屬性為?’?北京?’?的要素,那么代碼如下:
ILayer?pLayer?=?axMapControl1?.get_Layer?(0);
IFeatureLayerDefinition?pFlDefinition?=?pLayer?as?IFeatureLayerDefinition?;
pFlDefinition?.DefinitionExpression?=?"Name = '?北京'"?;
該方適使用于按照作業(yè)屬性控制要素的可見狀態(tài)。
思路2
通過?CreateSelectionLayer?方法,可以將當前圖層中選中的要素生成一個新的圖層,生成的新圖層中只有原圖層的選中要素是可見的。這種方法可以用于控制只顯示某一空間范圍內(nèi)的要素。其缺點就是如果我們對在該空間范圍內(nèi)增加了要素之后,新增加的要素是不顯示的。
該方適使用于按照作業(yè)空間范圍控制要素的可見狀態(tài)。
案例
新建IFeatureSelection接口,選中圖層要素,利用IQueryFilter創(chuàng)建過濾器,設置查詢條件,IFeatureLayerDefinition創(chuàng)建查詢圖層,最后添加到map中去
引用
using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using
ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using
ESRI.ArcGIS.SystemUI; using System; using System.IO;
usingSystem.Windows.Forms;
主要實現(xiàn)代碼:
ILayer pLayer = (ILayer)axMapControl1.Map.get_Layer(0); IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; //QI到FeatureSelection IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection; //創(chuàng)建過濾器 IQueryFilter pQueryFilter = new QueryFilterClass(); //設置過濾器對象的查詢條件 pQueryFilter.WhereClause = "FID > 20"; //根據(jù)查詢條件選擇要素 pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); IFeatureLayerDefinition pFDefinition = pFeatureLayer as IFeatureLayerDefinition; //創(chuàng)建新圖層 IFeatureLayer pNewFeatureLayer = pFDefinition.CreateSelectionLayer(pFeatureLayer.Name, false, null, null);//若為true,則未選中要素不顯示 pNewFeatureLayer.Name = "查詢結果城市"; axMapControl1.AddLayer(pNewFeatureLayer as ILayer); axMapControl1.ActiveView.Refresh();?
?
二、IGeoFeatureLayer
通過?IGeoFeatureLayer?接口的?ExclusionSet?可以排除圖層中的一些要素不可見。?ExclusionSet?屬性通過?IFeatureIDSet?接口來控制要排除顯示的要素,例如我們要控制?FID?為?2?、?5?、?8?的要素不顯示。可以用如下代碼實現(xiàn):
ILayer pLayer = axMapControl1 .get_Layer (0); IGeoFeatureLayer pGeoFl = pLayer as IGeoFeatureLayer ; IFeatureIDSet pIdSet = new FeatureIDSetClass (); pIdSet .Add (2); pIdSet .Add (5); pIdSet .Add (8); pGeoFl .ExclusionSet = pIdSet ;該方法較為靈活,可以用于精確控制可見要素,缺點是無法保存到MXD?中,只能在程序運行時動態(tài)進行控制。
?
三、 唯一值符號法
該方法比較簡單,就是通過給圖層設置一個唯一值符號渲染,把不想顯示的要素符號設置為空。雖然簡單,這種方法有這很大的局限性,如果我們要控制某一個區(qū)域的要素可見狀態(tài),該方法無法實現(xiàn)。該方法只適用于按照作業(yè)屬性控制要素的可見狀態(tài)。
?
?
?
參考
IFeatureLayerDefinition接口查詢要素圖層方法匯總
AE控制圖層中要素可見狀態(tài)的幾種方法
總結
以上是生活随笔為你收集整理的ArcGIS AO中控制图层中要素可见状态的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 使用RabbitMQ
- 下一篇: React 中使用sass