arcgisengine如何获取图层,遇到同名图层该怎么获取想要的那个图层

网上大部分是把图层名称作为每个图层的唯一标志,根据图层名称来获取想要的图层。但是有时候会有同名的图层(不在同一文件夹下的两个文件),这时候根据图层名不能准确的获取到想取到的图层,怎么办呢???
已邀请:

cannel

赞同来自:

图层(layer)可以重名
但要清楚要素类(featureClass)和要素图层(FeatureLayer)的区别,前者是指数据库里的一个表,是真实的物理存在,后者是指把featureClass添加到地图(arcmap的地图)显示的一个对象,因此,同一个featureClass可以添加多个FeatureLayer到同一个地图,因此存在重名的可能

xiaosi9524 - GISER

赞同来自:

你加载的数据是gdb还是shp ,gdb数据中的图层是有路径信息的,可以区分。另外你具体的需求是?

柚子 - ArcGIS/WebAPI

赞同来自:

我的意思是不同文件夹下的两个不同的图层,图层名相同,我们把这两个图层添加到axmapcontrol中,在axtoccontrol上显示的名字是一样的。当我们用的时候该如何获取。如果只根据图层名来获取肯定不行,能获取到其中一个,不能保证就是想获取的那个图层。
具体的例子比如图层更新,  模仿arcmap里的,
TIM截图20180308093630.png

这是两个路径的不同图层,如何做区分?
我之前没考虑同名的情况,思路是:先将图层名放在listbox中列出,当点击选中listbox中的图层名时,获取到名字,然后根据图层名去匹配并获取到图层,代码如下:
  public ILayer GetLayerByLyrName(AxMapControl axmap, string layername)
        {
            for (int i = 0; i < axmap.LayerCount; i++)
            {
                ILayer layer = axmap.get_Layer(i);

                if (layer != null)
                {
                    if (layer.Name == layername)
                    {
                        return layer;
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            return null;
        }
这样无法区分同名的情况。

朱新颖

赞同来自:

只能根据数据源的位置来区分了,比如获取到相同名称的图层,然后分别获取其数据源,判断其位置是否是你想要的,使用IDataLayer接口

豆腐的大大

赞同来自:

如果是这样的话,只能通过一楼讲的IDataLayer来获取数据源,通过数据源的异同来区分不同的图层,从而达到后续操作的目的,这样比较稳妥,或者在要素中用字段值加以区分,比如需要更新的字段值为1,不需要的为0。

要回复问题请先登录注册