天天看點

ArcEngine IMap接口的用法

使用IMap接口顯示各種資料源的資料。

IMap接口的成員

ActiveGraphicsLayer:活動圖形圖層,如果沒有将建立一個基本memory graphics layer。

AddLayer:向地圖中添加單個圖層。

AddLayers:向地圖中添加多個圖層。

AddMapSurround:向地圖中添加map surround。

AnnotationEngine:地圖使用的注記(标簽)引擎。

AreaOfInterest:地圖的感興趣區域。

Barriers:barriers清單和标簽權重。

BasicGraphicsLayer:基本圖形層。

ClearLayers:從地圖中移除所有圖層。

ClearMapSurrounds:從地圖中移除所有旁注。

ClearSelection:清除地圖選擇。

ClipBorder:ClipGeometry周圍一個可選邊界。

ClipGeometry:地圖圖層中一個要剪切的形狀。

ComputeDistance:計算地圖上兩個點的距離并傳回結果。

CreateMapSurround:建立并初始化一個map surround。從樣式集中指定一個可選樣式。

DelayDrawing:暫停繪制。

DelayEvents:将操作按批組合來減少通知。

DeletLayer:從map中删除圖層。

DeleteMapSurround:從地圖中删除map surround。

Description:地圖描述。

DistanceUnits:地圖的距離機關。

Expanded:指出地圖是否可以擴張。

FeatureSelection:地圖中選擇的要素。

GetPageSize:獲得地圖的頁面大小。

IsFramed:指出地圖是否在一個架構内而不是在整個視窗中繪制。

Layer:給定序号的layer。

LayerCount:地圖中圖層的數目。

Layers:以uid表明類型的地圖圖層。如果recursive是true,将以layers的形式傳回layers。

MapScale:數字形式的地圖比例尺。

MapSurroundCount:與地圖相關的旁注數量。

MapUnits:地圖機關。

MoveLayer:将一個圖層移到其他位置。

Name:地圖名稱。

RecalcFullExtent:重新計算全幅範圍。

ReferenceScale:分數形式的地圖參考比例尺。

SelectByShape:用一個幾何形狀和選擇環境(可選)在地圖中選擇要素。

SelectFeature:選擇一個要素。

SelectionCount:選擇的要素的數目。

SetPageSize:設定地圖(可選)的頁面大小。

SpatialReference:地圖的空間參考。

SpatialReferenceLocked:指出是否允許改變空間參考。

UseSymbolLevels:指出是否使用symbol levels繪制地圖。

AnnotationEngine:map使用的annotion(label)引擎。

AreaOfInterest:地圖的感興趣區域。

類Map實作接口IMap。

每個地圖檔案包含至少一個Map對象。但每次隻有一個Map能夠獲得焦點,這個Map稱作focus map(焦點地圖)。使用IMxDocument可以通路可以通路文檔中的所有地圖對象;IMxDocument::FocusMap傳回目前具有焦點的地圖引用。IMxDocument:Maps傳回指向所有地圖對象的引用(IMaps)。一個地圖文檔可以包含任意數目的Map對象--資料視圖中隻顯示焦點地圖。

地圖對象,管理一系列圖層對象。每個圖層有一個空間參考。一個空間參考定義一個分辨率(1/精度)和一個坐标系統。地圖坐标系統自動設定為第一個圖層的坐标系統,根據所有的圖層範圍計算分辨率。

幾種常用屬性和方法:

IMap.AddLayer Method(向map中添加layer)

[Visual Basic.NET] Public Sub AddLayer(ByVal Layer as ILayer)

[C#] public void AddLayer(Ilayer Layer)

AddLayer方法向地圖中添加圖層。使用LayerCount屬性獲得地圖中圖層的總數。如果map沒有設定坐标系統,AddLayer自動設定地圖的SpatialReference屬性。當地圖的空間參考屬性設定後,地圖的MapUnits和DistanceUnits屬性也就設定了。AddLayer同時也設定layer的空間參考。

IMap.DeleteLayer Method(從Map中删除圖層)

[Visual Basic.NET] Public Sub DeleteLayer(ByVal Layer as ILayer)

[C#] public void DeleteLayer(ILayer Layer)

如果一個圖層在TOC視窗中被選中(IMxDocument::SelectedLayer),可以将其傳遞到DeleteLayer方法中。當删除一個引用要素類的圖層時,如FeatureLayer,執行IDataLayer2::Disconnect能清楚對要素類的引用。

IMap.FeatureSelection Property(IMap.FeatureSelection屬性)

[Visual Basic.NET] Public Property FeatureSelection as Iselection

[C#] public ISelection FeatureSelection{get;set;}

ArcMap有兩個不同的選擇集,feature selection和element selection。兩種不同的對象表示了這些選擇并且都實作了ISelection接口。feature selection對象還實作了IEnumFeature接口,element selection還實作了IEnumElement。ISelection接口用于clipboard類型的操作,IEnum接口針對集合中的項目。

當你從IMap中通路FeatureSelection時,傳回一個ISelection。當你通過IActiveView::Selection選擇時,既可以是元素選擇,也可以是要素選擇,取決于哪一個處于活動狀态--一次隻能有一個處于活動狀态。使用要素選擇確定引用到正确的選擇。

IEnumFeature在所有要素圖層上工作。每個FeatureLayer有一個ISelectionSet和IEnumFeature。IEnumFeature工作在所有FeatureLayer上,不能用它周遊某一個圖層的要素。

注意,隻有shape字段能確定用于選擇。IMap::FeatureSelection屬性用于繪制地圖選擇,而不是通路要素屬性。在shapefiles、coverage和geodatabases中要注意。如果想周遊地圖選擇執行一個操作,最好通路每個圖層的選擇集而不是整個地圖的。

IMap.Layer Property(IMap.Layer屬性)

[Visual Basic.NET] Public Function get_Layer(ByVal Index As Integer) As ILayer

[C#] Public ILayer get_Layer(int Index);

Maps是由各種資料源中的無數圖層組成。使用Layer屬性來通路地圖的特定圖層。圖層集從0開始。使用Layer屬性和LayerCount屬性在地圖中周遊各個圖層。

Layer屬性傳回一個ILayer引用。常用if(player is IFeatureLayer)進行判斷。例如,不要認為地圖中的所有圖層都是FeatureLayers。實作ILayer和IDataLayer接口的圖層是有效圖層。

每個地圖也有一個basic graphics layer,但并不包含在這個屬性傳回的圖層集中。通過BasicGraphicsLayer屬性可以獲得對這個圖層的引用。

IMap.SelectByShape Method

通過幾何圖形和選擇環境(可選)選擇要素

[Visual Basic.NET] Public Sub SelectByShape(ByVal Shape As IGeometry,ByVal env As ISelectionEnviroment,Byval justOne as Boolean)

[C#] public void SelectByShape(IGeometry Shape,ISelectionEnvironment env,bool justOne);

SelectByShape在所有IFeatureLayer中搜尋與輸入圖形相交的要素,隻有IFeatureLayer::Selectable屬性設為TRUE時才可搜尋該圖層。

ISelectionEnvironment決定選擇結果。例如,建立一個新的選擇或向已存在的選擇集中添加要素。通過IMxApplication::SelectionEnviroment使用應用程式的選擇環境。

justOne變量控制找到一個要素後是否停止搜尋。

搜尋完成後調用IActiveViewEvents::SelectionChanged通知選擇已改變。

(轉自http://www.cnblogs.com/qiernonstop/archive/2013/05/05/3061560.html)

繼續閱讀