AE中地图查询方式
櫻木?原文?AE中地圖查詢方式
?
地圖查詢主要有兩種查詢:空間查詢和屬性查詢
所用到知識點:
1? Cursor(游標)對象
?? 本質上是一個指向數據的指針,本身不包含數據內容,提供一個連接到ROW對象或者要素對象(Feature)的橋梁而已。
?? 游標有三種類型,即查詢游標、插入游標和更新游標。每一種游標都是通過與之相適應的方法來獲得的,如Search、Insert和Update方法。更新和插入游標都需要使用一個過濾器(Filter)對象,因為它們首先必須獲得需要進行操作的要素。
?? FeatureCursor是Cursor的一個子類,指向一個或多個要素,它實現了IFeatureCursor接口,ArcGIS Engine開發所對矢量圖層實現查詢功能都是實行IFeatureCursor;
?? 其實凡是Search方法,如ILayer::Search、ITable::Search等都可以返回一個游標對象。這個Cursor指向了那些符合選擇條件的要素
IFeatureCursor接口重要成員:
NextFeature(方法,將游標向前跳到下一個位置,并且返回該位置的Feature)
UpdateFeature(Feature) (方法,對當前游標位置的Feature進行更新)
InsertFeature(buffer) (方法,用參數傳進來的屬性值插入一個新的要素到數據庫中,返回該插入新的Feature的ID值,其中參數類型為IFeatureBuffer)
2 ?QueryFilter和SpatialFilter對象
?ArcGIS Engine提供了QueryFilter和SpatialFilter兩個過濾器對象來配合完成查詢條件的設置,從而查詢到想要的數據。 QueryFilter過濾器主要用于對屬性數據查詢條件的設置,它主要實現IQueryFilter接口從而實現屬性查詢功能。
IQueryFilter接口成員:
WhereClause(讀寫屬性,為過濾器設置條件語句)
注意!各種不同的數據,設置條件查詢語句的語法是不相同的,如一個shp文件在設置字段的時候要加“””雙引號,而在SDE數據連接中,則什么都不加;在gdb文件的語句中,符號是“*”,而在SDE或者shp文件查詢中則是“%”
SubFields(讀寫,為過濾器設置提供賽選的字段,用逗號來分隔每一個逗號,如果不設置該屬性,則當做所有字段均為查找字段)
SpatialFilter過濾器主要用于空間范圍查詢條件的設置,它主要實現ISpatialFilter(繼承 IQueryFilter接口)接口從而實現空間查詢功能。
其中SpatialRel屬性是一個確定查詢幾何對象與目標要素幾何對象關系的枚舉值。
3 要素選擇集(FeatureSelection)對象
?? 獲得符合某種條件的數據,一般有兩種不同的手段:
一種使用Search方法,它返回一個指向數據的查詢Cursor對象:
? IFeatureCursor pFeatCursor = pFeatureLayer.Search(pFilter,false);
??IFeature pFeature=pFeatCursor.NextFeature();
另一種是使用SelectFeatures方法構造一個選擇集(SelectionSet),然后在選擇集中得到Cursor,后者麻煩了點,但是得到的要素選擇集在Map上會高亮度顯示。
????? ?IFeatureSelection pFSelection=pFeatureLayer as IFeatureSelection;
?????? pFSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,false);
??? ???ISelectionSet pSelectionset=pFSelection.SelectionSet;
?????? ICursor pCursor;
???? ??pSelectionset.Search(null,true,out pCursor);
?????? IFeatureCursor pFeatCursor=pCursor as IFeatureCursor;
????? ?IFeature pFeature=pFeatCursor.NextFeature();
IFeatureSelection接口重要成員:
SelectFeatures (Filter, Method, justOne ) (方法,根據指定的標準過濾器filter和方法,選擇要素,第一個參數為QueryFilter類型的變量,第二個參數為esriSelectionResultEnum類型的變量,第三個參數為布爾型變量,通常為false)
當然還有設置顏色的SelectionColor屬性等;
4 SelectionSet對象
???? 支持ISelectionSet接口,用于管理和查詢一個選擇集。
Search(IQueryFilter,bool,ref ICursor)用于在選擇集內進行再選擇,
?
沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的框架所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如別人所關心你的。理想的騰飛與實現,沒有別人的支持與幫助,是萬萬不能的。本文轉自wenglabs博客園博客,原文鏈接:http://www.cnblogs.com/arxive/p/6113412.html,如需轉載請自行聯系原作者
總結
- 上一篇: 从容稳进,高通正扎实推进5G
- 下一篇: Linux MTD系统剖析【转】