ArcEngine开发与ArcGIS基础知识 - 1
<!--本文仅供初学者学习使用。如有错误,敬请指正。-->
一、IMapDocument
mxd文件对应的接口,可通过此接口新建,打开,保存,另存mxd文件
示例代码:
IMapDocument pMapDocument = new MapDocumentClass();
pMapDocument.Open(string mxdPath);
pMapDocument.Save();
二、IMap
对应的是地图(图框),这里的IMapDocument与IMap是一对多的关系,下面进行详细说明:
(1)打开ArcMap 10.2,在没有加载任何mxd的情况下,默认会有一个Map,红框中的"Layers"就代表一个Map
(2)在Insert中也可以插入另一张Map,值得注意的是ArcMap中显示的是Data Frame,但在代码中就是指一个Map(也有可能用其他接口也可以获取DataFrame而我没有用过
(3)添加新的Data Frame后,当前的MapDocument中就有两个Map了,而后通过遍历可以任意的Map了,示例代码:
for (int i = 0; i < pMapDocument.MapCount; i++)
{
IMap pMap = pMapDocument.Map[i];
}
三、ILayer
此接口对应的就是图层了,图层是加在图框下的,所以,同样地,Map与Layer也是一对多的关系。
(1)同样地,可以向图框(Map)中添加多个图层,只不过现在这些图层还没有数据
(2)同样的也可以通过代码获取Layer,这里主要有两种方法,第一种与Map获取方法类似就不赘述了;另一种方法需要IEnumLayer接口,这个接口相当于一组Layer的指针,示例代码如下:
ILayer pLayer = null;
IEnumLayer pEnumLayer = pMap.Layers;
pEnumLayer.Reset();
while ((pLayer = pEnumLayer.Next()) != null)
{
//// 对pLayer进行操作
}
(3)值得注意的是这个ILayer是一个总的接口,有很多其他接口都继承于它,例如IFeatureLayer、IRasterLayer等等,本系列文章将主要围绕IFeatureLayer展开
(4)如果要通过代码向地图中添加或删除图层,就可以这样写了:
ILayer pLayer = null;//想要添加或删除的图层
//// 添加
pMap.AddLayer(pLayer);
//// 删除
pMap.DeleteLayer(pLayer);
//// 删除全部
pMap.ClearLayers();
本文到这里就结束了,文章写得很肤浅,接口里的有很多接口与属性都没有介绍到,如有需要可以自行查看ArcGIS的帮助文档。如有错误,也欢迎各位大佬的指正,谢谢!