AE开发基础实验二(空间查询之按属性查询)
? ? ? ?通過空間數據查詢快速實現空間數據選擇、查詢與統計是GIS數據操作的基本功能,同時也是對特定數據子集進行應用和空間分析的基礎。按屬性查詢是根據屬性條件,對某個要素圖層查詢滿足條件的地理要素。本次實驗針對空間數據查詢中的按屬性查詢功能開發設計了相應的界面,構造了按屬性查詢的條件。實驗的開發環境為visio studio 2010,arcgis engine10.2。實驗的完整代碼鏈接置于文末,方便大家參考學習。
目錄
1、將主窗體的MAP屬性賦值給按屬性查詢窗體,完成主窗體對查詢窗體的調用。
2、?設計一個通過屬性查詢的窗體,設置一系列按鈕,并設置按鈕響應;
3、按屬性空間查詢及屬性值獲取的主要代碼
1、主窗體對查詢窗體的調用
在主窗體中添加名為“按屬性查詢”的按鈕,并添加按鈕響應事件。
通過建立CurrentMap屬性得到MapControl的Map對象的屬性,并加入實現調用子窗體的代碼:
2、按屬性查詢的窗體設計
? ? ? 新建一個windows窗體,按需求添加相應的控件。按屬性查詢的窗體中需包含圖層名稱的選擇框(對應工具箱中的comboBox),選擇方式的選擇框(選擇方式包含四種,添加到字符串集合),顯示圖層要素屬性字段的listbox,以及圖層屬性值的listbox(如圖所示)。同時還需要有相關篩選要素條件按鈕,都為button控件。最后,還需要有包含篩選要素查詢條件表達式(where 語句)的textbox控件。
? ? ? ?界面設計完成后注意設置相應控件的事件響應,操作的總體思路是:窗體的Load事件中加載當前地圖對象中的要素圖層到圖層下拉列表框ComboBox 中,默認選擇是第一個圖層;將ComboBox中默認圖層的字段讀取出來放置于屬性字段的ListBox里面,通過條件按鈕(“=”、“>”等)構建查詢的where語句傳入包含篩選要素查詢條件表達式(where 語句)的textbox控件中。當點擊應用時執行查詢。
3、按屬性空間查詢及屬性值獲取的相關代碼編寫
?在事件下添加對應的代碼,其中用于選擇要素的代碼如下:
private void SelectFeaturesByAttribute(){//使用FeatureLayer對象的IFeatureSelection接口來執行查詢操作。這里有一個接口轉換操作。IFeatureSelection featureSelection = currentFeatureLayer as IFeatureSelection;//新建IQueryFilter接口的對象來進行where語句的定義IQueryFilter queryFilter = new QueryFilterClass();//設置where語句內容queryFilter.WhereClause = textBoxWhere.Text;//通過接口轉換使用Map對象的IActiveView接口來部分刷新地圖窗口,從而高亮顯示查詢的結果IActiveView activeView = currentMap as IActiveView;//根據查詢選擇方式的不同,得到不同的選擇集switch (comboBoxSelectMethod.SelectedIndex){//在新建選擇集的情況下case 0://首先使用IMap接口的ClearSelection()方法清空地圖選擇集currentMap.ClearSelection();//根據定義的where語句使用IFeatureSelection接口的SelectFeatures方法選擇要素,并將其添加到選擇集中featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); break;//添加到當前選擇集的情況case 1:featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultAdd, false);break;//從當前選擇集中刪除的情況case 2:featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultXOR, false);break;//從當前選擇集中選擇的情況case 3:featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultAnd, false);break;//默認為新建選擇集的情況default:currentMap.ClearSelection();featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);break;}其中,根據定義的where語句使用IFeatureSelection接口的SelectFeatures方法選擇要素,并將其添加到選擇集中,通過接口轉換使用Map對象的IActiveView接口來部分刷新地圖窗口,從而高亮顯示查詢的結果。
屬性值的獲取:
整體運行結果:
?可以看到按屬性查詢的結果被高亮顯示了出來。
本文完整代碼鏈接:鏈接:https://pan.baidu.com/s/1LulV1m15OKIMNKGHKAQuIQ?
提取碼:1234
如果有充足時間的話, 接下來的幾期會持續更新AE空間查詢及數據操作的一些內容。
總結
以上是生活随笔為你收集整理的AE开发基础实验二(空间查询之按属性查询)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式数据库架构的演变之路
- 下一篇: nfc 简单卡模拟demo