AE要素選擇(點選和拉框選擇)

2022-07-20 02:21:10 字數 3567 閱讀 2245

選擇乙個要素或者乙個要素集(featureselection)的方法很多,如imap::selectbyshape、ilayer::search、ifeaturesection::selectfeature等方法

主要用到的方法:

imap介面的selectfeature(layer, feature) (方法,從乙個layer中選擇乙個feature);

imap介面selectbyshape(shape, env, justone) (方法,從layer中依靠乙個圖形的範圍shape和乙個選擇的環境env來選擇要素,而在所有圖層中只從ifeaturelayer的圖層中進行選擇)

ifeatureselection介面selectfeatures (filter, method, justone ) (方法,根據指定的標準過濾器filter和方法,選擇要素,第乙個引數為queryfilter型別的變數,第二個引數為esriselectionresultenum型別的變數,第三個引數為布林型變數,通常為false)

ifeaturelayer介面search (iqueryfilter, book ) (方法,建立乙個游標去查詢相應設定的過濾器的查詢)

1 點選法獲取要素

廢話少說先看**:

view code

private

double

convertpixelstomapunits(iactiveview pactiveview,

double

pixelunits)

imap pmap

=axmapcontrol1.map;

iactiveview pactiveview

=pmap

asiactiveview;

ifeaturelayer pfeaturelayer

=pmap.get_layer(0)

asifeaturelayer;

ifeatureclass pfeatureclass

=pfeaturelayer.featureclass;

//設定點選點的位置

ipoint point ==

point

asitopologicaloperator;

double

length;

length

=convertpixelstomapunits(pactiveview, 4);

igeometry pbuffer

=ptopo.buffer(length);

igeometry pgeomentry

=pbuffer.envelope;

//空間濾過器

ispatialfilter pspatialfilter

=new

spatialfilterclass();

pspatialfilter.geometry

=pgeomentry;

//根據被選擇要素的不同,設定不同的空間濾過關係

switch

(pfeatureclass.shapetype)

ifeatureselection pfselection

=pfeaturelayer

asifeatureselection;

pfselection.selectfeatures(pspatialfilter,esriselectionresultenum.esriselectionresultnew,

false

);iselectionset pselectionset

=pfselection.selectionset;

icursor pcursor;

pselectionset.search(

null

,true

,out

pcursor);

ifeaturecursor pfeatcursor

=pcursor

asifeaturecursor;

ifeature pfeature

=pfeatcursor.nextfeature();

while

(pfeature

!=null

)pactiveview.partialrefresh(esriviewdrawphase.esriviewgraphicselection,

null

,null

);//

另外的改寫:

pspatialfilter.geometryfield

=pfeatureclass.shapefieldname;

iqueryfilter pfilter

=pspatialfilter;

ifeaturecursor pfeatcursor

=pfeaturelayer.search(pfilter,

false

);ifeature pfeature

=pfeatcursor.nextfeature();

while

(pfeature

!=null

)pactiveview.partialrefresh(esriviewdrawphase.esriviewgraphicselection,

null

,null

);

另外還有一種比較簡單的點選方法:

view code

igeometry g 

=null

;ienvelope penv;

iactiveview pactiveview

=axmapcontrol1.activeview;

imap pmap

=axmapcontrol1.map;

penv

=axmapcontrol1.trackrectangle();

if(penv.isempty

==true)g

=penv

asigeometry;

axmapcontrol1.map.selectbyshape(g,

null

, false

);axmapcontrol1.refresh(esriviewdrawphase.esriviewgeoselection,

null

, null

);

2 拉框選擇

view code

imap pmap 

=axmapcontrol1.map;

iactiveview pactiveview

=pmap

asiactiveview;

ienvelope penv

=axmapcontrol1.trackrectangle();

pmap.selectbyshape(penv,

null

, false

);pactiveview.partialrefresh(esriviewdrawphase.esriviewgeoselection,

null

, null

);

JQuery 仿360雲盤拉框選擇

最近專案需要類似xp系統拉框選擇多個檔案功能,進行批量操作,遇到乙個最大的難點就是怎樣判斷物件被框選中,想半天沒想出來,google了半天最後看到有人說 利用物件的left和top位置跟框選層的left,top位置進行匹配,ok問題解決,最後馬上發上來,主要是因為在網上找這類似的功能相當少,就寫出來...

微服務間如何選擇推送和拉取資料

在現在的系統架構中,服務間會大量採用訊息來進行通訊。在訊息系統中,一般有兩種消費模式 生產端推送和消費端拉取。那麼在什麼情況下,我們採用生產端推送,什麼情況下換為消費端拉取呢?今天本篇文章就針對這個話題談談我個人的想法,希望對大家有用。簡單來說,是由實際業務決定 包括通訊間的雙方系統的技術實現 雙方...

微服務間如何選擇推送和拉取資料

在現在的系統架構中,服務間會大量採用訊息來進行通訊。在訊息系統中,一般有兩種消費模式 生產端推送和消費端拉取。那麼在什麼情況下,我們採用生產端推送,什麼情況下換為消費端拉取呢?今天本篇文章就針對這個話題談談我個人的想法,希望對大家有用。簡單來說,是由實際業務決定 包括通訊間的雙方系統的技術實現 雙方...