選擇乙個要素或者乙個要素集(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 g2 拉框選擇=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
);
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問題解決,最後馬上發上來,主要是因為在網上找這類似的功能相當少,就寫出來...
微服務間如何選擇推送和拉取資料
在現在的系統架構中,服務間會大量採用訊息來進行通訊。在訊息系統中,一般有兩種消費模式 生產端推送和消費端拉取。那麼在什麼情況下,我們採用生產端推送,什麼情況下換為消費端拉取呢?今天本篇文章就針對這個話題談談我個人的想法,希望對大家有用。簡單來說,是由實際業務決定 包括通訊間的雙方系統的技術實現 雙方...
微服務間如何選擇推送和拉取資料
在現在的系統架構中,服務間會大量採用訊息來進行通訊。在訊息系統中,一般有兩種消費模式 生產端推送和消費端拉取。那麼在什麼情況下,我們採用生產端推送,什麼情況下換為消費端拉取呢?今天本篇文章就針對這個話題談談我個人的想法,希望對大家有用。簡單來說,是由實際業務決定 包括通訊間的雙方系統的技術實現 雙方...