AE | 地图及相关对象

目录

 

地图对象

IMAP

IActiveView

IActiveViewEvents

IGraphicsContainer

IMapBookmark

ITableCollection

地图对象的获取

图层对象

ILAYER

IFeatureLayer2

IGeoFeaturelayer

IGeoDataset

IFeatureSelection

ScreenDisplay对象


地图对象

地图对象上能显示的图形有两类:数据地理元素状语从句:
主要数据接口:

IMAP

数据的管理,很多地图处理工作的起始点,可以用于添加,删除,打开图层,包括要素图层和图形图层,得到感兴趣区域的地图的不同属性
selectfeature-选择要素
特征选择- 特征选择地图

IActiveView

数据的显示功能,主要的应用窗口和所有的绘制操作
包括两种不同的视图:图层视图和数据视图
IMxDocument :: ActiveView
拥有当前活动视图对象的一个​​指针
.1,如果处于布局视图状态,那么IMxDocument :: ActiveView返回的IActiveView对象是指向PageLayout对象的;
2,如果处于在数据视图状态,那么这个属性就会返回一个当前使用的地图对象的指针
.IrctiveView :: PartialRefresh
可以让视图对象使用不同的方式来局部(单个图层,所有图层,选择要素,文本,图形元素等)刷新以重绘地图。

IActiveViewEvents

事件的接口,监听与活动视图(ActiveView)相关的事件并做出相应的响应

IGraphicsContainer

负责地图元素的操作
AddElement方法用于将一个元素放入Map对象中
DeleteElement方法用于删除Map对象中的一个给定的元素。 
UpdateElement用于更新图形元素。
LocateElementsByEnvelope方法,它和SelectByShape方法类同,是使用鼠标拖曳一个矩形区域,从而选择到这个区域内所有的元素。

IMapBookmark

负责管理地图书签对象

ITableCollection

管理属性表

地图对象的获取

1,通过MapDocument获得Map对象
 IMapDocument pMapDocument = new MapDocumentClass pMapDocument.Open(path,null); 
 IMap pMap = pMapDocument.get_Map(i); 
2,通过MxDocument获得Map对象
 m_application = hook作为IApplication;
 IDocument document = m_application.Document;
 IMxDocument mapDocument = document as IMxDocument;
 IMap map = mapDocument .FocusMap;
3,通过MapControl获得Map对象
 IMap pMap = axMapControl1.Map;
 IActiveView pActiveView = pMap as IActiveView;
 或pActiveView = axMapControl1.ActiveView;
4,通过PageLayoutControl获得Map对象    
 IActiveView pActiveView = axPageLayoutControl1.PageLayout作为IActiveView;
 或者pActiveView = axPageLayoutControl1.ActiveView;
 pMap = pActiveView.FocusMap;
5,在命令,工具类中获得Map对象
 IHookHelper m_hookHelper = null;
 IMap m_Map;
 IActiveView m_ActiveView;
 public override void OnCreate(object hook)
   {if(hook == null)return;
      m_hookHelper = new HookHelperClass();
      m_hookHelper.Hook = hook;
      m_Map = m_hookHelper.FocusMap;
      m_ActiveView = m_hookHelper.ActiveView;
   }

图层对象

图层对象本身不包含数据,仅仅是为了获得数据的引用,是用于管理数据源的连接;还保存着符号化信息


ILayer

所有图层类都实现了的一般接口,它定义了所有图层的公共方法和属性。

IFeatureLayer2

要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息,该接口用于管理要素图层的数据源,即要素类(Featureclass)。
DataSourceType属性返回要素图层的数据源的类型。 

IGeoFeaturelayer

继承了ILayer和IFeatureLayer两个接口,用于控制要素图层中与地理相关的内容,例如要素的着色和标注等功能。
Renderer属性用于设置图层的着色对象;
DisplayAnnotation属性可以设置要素图层是否出现标注,当它为true的时候,用户可以在这个要素图层上依据要素类的某个字段进行标注。

IGeoDataset

仅有两个属性,用于管理地理要素集的范围和空间参考。所有的图层和数据集实现了该接口。
Extent可以返回当前数据集的范围,是一个IEnvelope类型的对象;
SpatialReference属性则可以让用户获得这个数据集的空间参考。

IFeatureSelection

管理一个图层中的要素的选择集的方法和属性。
Add方法可以把本图层上的一个要素添加到图层的选择集中;
SelectFeatures方法则可以使用一个过滤器把符合要求的要素放入图层的选择集中;
Clear方法用于清除图层要素选择集。
在要素图层中SelectFeatures (IFeatureSelection)和Search(IFeatureLayer)要素的区别:
要素图层的Search方法返回的是ICursor对象,它仅仅是一个指向要素的指针;
使用IFeatureSelection::SelectFeatures方法,则符合要求的要素会被标记为“被选择的要素集”,这个选择集是一个ISelectionSet对象,可以用SelectionSet属性返回,如:
          IFeatureSelection  pSel = pFeatureLayer as IFeatureSelection;
         ISelectionSet pSelectionSet = pSel.SelectionSet;

ScreenDisplay对象

ScreenDisplay是与一个窗体相联系的显示设备,除了管理窗体屏幕的显示属性外,还管理发生在显示背后的对象和行为,如缓存和屏幕变化等。
对于地图或页面布局对象,可以通过IActiveView: :ScreenDisplay属性获得ScreenDisplay对象
 .IActiveView pActiveView = axMapControl1.ActiveView;
 IScreenDisplay screenDisplay = pActiveView.ScreenDisplay;
IDisplay用于画点,线,面,长方形和文本
 

猜你喜欢

转载自blog.csdn.net/weixin_41340063/article/details/84135489
AE