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