日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ArcGIS AO中控制图层中要素可见状态的总结

發(fā)布時(shí)間:2024/9/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ArcGIS AO中控制图层中要素可见状态的总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

一、DefinitionExpression

實(shí)現(xiàn)新建查詢圖層,查詢結(jié)果要素為選中狀態(tài)

該接口可以通過兩種方法來控制要素的可見狀態(tài)。

思路1

通過該接口的?DefinitionExpression?方法,可以給圖層設(shè)置一個(gè)查詢條件,只有符合該查詢條件的圖層才會顯示。例如:我們只想顯示圖層中?Name?屬性為?’?北京?’?的要素,那么代碼如下:

ILayer?pLayer?=?axMapControl1?.get_Layer?(0);

IFeatureLayerDefinition?pFlDefinition?=?pLayer?as?IFeatureLayerDefinition?;

pFlDefinition?.DefinitionExpression?=?"Name = '?北京'"?;

該方適使用于按照作業(yè)屬性控制要素的可見狀態(tài)。

思路2

通過?CreateSelectionLayer?方法,可以將當(dāng)前圖層中選中的要素生成一個(gè)新的圖層,生成的新圖層中只有原圖層的選中要素是可見的。這種方法可以用于控制只顯示某一空間范圍內(nèi)的要素。其缺點(diǎn)就是如果我們對在該空間范圍內(nèi)增加了要素之后,新增加的要素是不顯示的。

該方適使用于按照作業(yè)空間范圍控制要素的可見狀態(tài)。


案例

新建IFeatureSelection接口,選中圖層要素,利用IQueryFilter創(chuàng)建過濾器,設(shè)置查詢條件,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;

主要實(shí)現(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(); //設(shè)置過濾器對象的查詢條件 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 = "查詢結(jié)果城市"; axMapControl1.AddLayer(pNewFeatureLayer as ILayer); axMapControl1.ActiveView.Refresh();

?

?

二、IGeoFeatureLayer

通過?IGeoFeatureLayer?接口的?ExclusionSet?可以排除圖層中的一些要素不可見。?ExclusionSet?屬性通過?IFeatureIDSet?接口來控制要排除顯示的要素,例如我們要控制?FID?為?2?、?5?、?8?的要素不顯示。可以用如下代碼實(shí)現(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 ;

該方法較為靈活,可以用于精確控制可見要素,缺點(diǎn)是無法保存到MXD?中,只能在程序運(yùn)行時(shí)動態(tài)進(jìn)行控制。

?

三、 唯一值符號法

該方法比較簡單,就是通過給圖層設(shè)置一個(gè)唯一值符號渲染,把不想顯示的要素符號設(shè)置為空。雖然簡單,這種方法有這很大的局限性,如果我們要控制某一個(gè)區(qū)域的要素可見狀態(tài),該方法無法實(shí)現(xiàn)。該方法只適用于按照作業(yè)屬性控制要素的可見狀態(tài)。

?

?

?

參考

IFeatureLayerDefinition接口查詢要素圖層方法匯總

AE控制圖層中要素可見狀態(tài)的幾種方法

總結(jié)

以上是生活随笔為你收集整理的ArcGIS AO中控制图层中要素可见状态的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。