ArcObjects SDK开发 009 Map-Layer的结构

1、Map-Layer主干结构

一个mxd文件可以包含多个地图,但我们常用的大部分都是包含一个地图。一个地图可以包含多个图层组和图层,而图层指向的则是实际数据。图层可以控制数据是否显示、显示样式、最大最小显示比例尺等。Map可以设置自己的空间参考,在渲染的时候,各图层会投影到地图的空间参考下显示。

我们可以通过打开mxd获取map,从而获取图层对象。也可以通过ArcObjects SDK打开各类数据源,实例化图层。图层也可以单独保存成lyr文件,和mxd文件一样,只是保存了图层信息,并不保存图层指向的数据。

Map-Layer这个部分我认为是ArcObjects SDK中最核心、最重要的部分。我们在开发的时候,经常就是围绕这块的内容展开。从Map-Layer这两个点可以引出一大批重要的接口,例如IFeatureClass、IFeatureSelection、IFeatureCursor、IField、IFeature、IFeatureRenderer、IRaster、IRasterRenderer等,这些都是非常重要且使用频率非常高的接口。Map-Layer引申出来的关系网如下图所示。

 

截图.png

2、Map

对于Map的话,我们需要了解以下内容。

1、一个mxd文件是可以包含多个地图文件的,但只能有一个处于激活状态,也就是在MapControl控件中,只能显示一个Map。

2、Map中包含的图层的空间参考可以各种各样,Map也可以设置自己的空间参考,显示的时候,会把图层的转换到Map的空间参考上显示。

3、 如果地图是地理空间参考的话,ArcGIS会默认以Plate_Carree投影显示。

打开ArcGIS自带的地图USA.mxd文件,如下图所示。

image2.png

从图层树以及布局模式下的MapFrame可以看出,当前一共有三个地图,Conterminous United States、Hawaii和Alaska,分别对应布局模式下的三个MapFrame,每个MapFrame都有自己的显示比例以及比例尺元素。

有时候我们在做中国地图的时候,为了省事,南海那部分就用一张图片代替,放到地图的右小角。但把南海部分也做成一个Map,使用两个MapFarme是最规范的做法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章