版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、ArcEngine方法之查詢(一)查詢是GIS不可或缺的功能,今天我寫一下我近期對查詢的理解。先說說屬性查詢;A查詢主要涉及接口:1. IQueryFilter通過設(shè)置這個接口的WhereClause屬性來作 為查詢條件,本屬性的語句為SQL的where后的條件語 句。2. IFeatureLayer矢量圖層,一般由I Layer進行轉(zhuǎn)化。 該接口的Search方法進行查詢,Search方法的參數(shù)有兩 個,前面的 是IQueryFilter對象,后面的是bool值,一 般設(shè)為false. 3. IFeature要素接口,用來接收查詢出來的要 素。4. IFeatureCursor游標接口,通過
2、Search進行查詢,可以講結(jié)果保存在這里,從而利用NextFeature方法,遍歷所有要素。B基本的思想獲取圖層,設(shè)置條件,進行查詢,顯示要素 類。C如何獲取IFeatureLayer地圖的圖層的 索引從0開始,一般通過get_Layer方法或者Layer屬性 獲取ILayer ,然后將ILayer強制轉(zhuǎn)換為IFeatureLayero D舉例下面是一個整體的過程。首先定義一個方法:/ /查詢并高亮顯示III III為WhereClause賦值/圖 層, ILayer 對象 pub lie void QueryAndHight (string sql, ILayer pLayer) / 查詢
3、this. axMapControll. Map. ClearSelection() ;/ 清除地圖的選 擇 IFeatureLayer pFeatureLayer = pLayer asIFeatureLayer;/ 定義 矢量圖層 IQueryFilter pQueryFilter =newQueryFilter() ;/實例化一個查詢條件對象pQueryFilter. WhereClause = sql;/ 將查詢條件賦值IFeatureCursor pFeatureCursor =pFeatureLayer. Search(pQueryFi 11er, false) ;/ 進行查詢IF
4、eature pFeature; pFeature =pFeatureCursor. NextFeature() ; ff此步是將游標中的第一個交 給 pFeatureif (pFeature 二二 null)/ 判斷是否查到結(jié)果如果沒有查到報錯并結(jié)束MessageBox. Show(,沒有查詢到地物!','查詢提示', MessageBoxButtons. OK, MessageBoxIcon. Information); return;axMapControll. Map. SelectFeature(pLayer, pFeature);/ X等 查詢到的地物作為選
5、擇對象高亮顯示在地圖上axMapControll. CenterAt(pFeature. Shape asESRI. ArcGIS. Geometry. IPoint) ;/設(shè)置當前查詢到的要素為 地 圖的中心axMapControll. MapScale =pLayer. MinimumScale;/將當前地圖的比例尺設(shè)置為ILayer 的最小顯示比例尺axMapControll. ActiveView. RefreshO ;/ 刷新地圖,這樣才 能顯示出地物下面我們進行方法的調(diào)用:Ilayer pLayer=axMa.pControl 1. Map. get_Layer (0) ;/ 第一
6、個圖層, 在 地 圖中第一個圖層是醫(yī)院QueryAndHight ('name二'市一醫(yī)院 '',pLayer); 調(diào)用函數(shù),在醫(yī)院的圖層上查詢name為市一 醫(yī)院的要素并高量顯示在地圖上。上面的例子有一個問題, 假 設(shè)我們只知道圖層的名字,而不知道索引為多少,這就比 較 復雜了。所以我們可以提前寫一個方法 通過名字獲得 ILayer 對象。 public ILayer GetLayerByName (string strLayerName)ILayer pLayer = null; for (int i =0; i if (strLayerName =axMa
7、pControll. get_Layer(i). Name) pLayer axMapControll. get_Layer(i);break; return這樣,我們就可以用以下的方法獲得ILayer 對象進行查詢:ILayer pLayer=GetLayerByName ('醫(yī) 院);。上面我們只是進行單要素的查詢與顯示,但是我 們有時候需要獲得多個查詢結(jié)果,這樣就需要用到 NextFeature方法進行遍歷搜索顯示,我們在進行高亮顯示 的時候也能獲取要素的屬性 可以將其保存起來。下面就是一個例子:一 strName=new List () ;/用來保存name屬性,這個可以換成l
8、istBox或者comoBox來接受要素的 name IFeatureLayerpFeatureLayer = mainfrm. GetLayerByName (?此處為圖層的名字 ')as IFeatureLayer; IQueryFilter pQueryFilter = newQueryFilter () pQueryFilter. WhereClause = 'name like 'txtName. Text +模糊查詢 IFeatureCursor pFeatureCursor = pFeatureLayer. Search(pQueryFliter, fal
9、se); IFeature pFeature; pFeature = pFeatureCursor. NextFeature () ;/ 獲取第一個要素 if(pFeature = null) /如果要素為空,則提 示并返回MessageBox. Show('沒有查詢到txtName. Text +,','查詢提示',MessageBoxButtons. OK,MessageBoxIcon. Information); return; while (pFeature != null) strName. Add (pFeature. get_Va.lue (pFeature.Fields. FindField(, name,). ToStringO) ;/ 將查詢出的要素 的name屬性加到strName中如果是listbox則可以用 listBoxl. items. add();來將 name 添加到 listbox 中。mainfrm. a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分裂情感性精神病
- 防震疏散演練主題班會
- 2024年非公路礦用車項目投資申請報告代可行性研究報告
- 3.3.2鹽類的水解影響因素及應用 課件 高二上學期化學人教版(2019)選擇性必修1
- 智慧航安培訓方案
- 吉林省2024七年級數(shù)學上冊第1章有理數(shù)階段綜合訓練范圍1.9~1.14課件新版華東師大版
- 生命安全教育我的煩惱
- 草原上教案及教學反思
- 食堂食品安全培訓
- 水利資源利用審批管理辦法
- 化學方程式的配平-完整版PPT
- 糖尿病個案相關(guān)護理課件
- 五年級上冊心理健康教育課件-情緒卡片 全國通用(共13張PPT)
- 新部編人教版高中歷史必修下冊 第12課 資本主義世界殖民體系的形成 教案(教學設(shè)計)
- 幼兒園適用1100的數(shù)字描紅(可打印)
- 跨海大橋工程案例專項安全風險評估
- 簡單零件鉗加工完整版課件
- 登高車檢查表
- 露天礦崗位責任制
- 最新現(xiàn)代智力七巧板PPT課件
- 山西省經(jīng)信版信息技術(shù)學科項目四展示班級風采教學設(shè)計
評論
0/150
提交評論