我有一个进程,从lyrx文件添加一个层到地图上的组层。我需要在我的脚本中添加一些东西来检查它是否已经存在,这样它就不会再添加它了,但我很难在网上找到关于ArcGIS Pro的任何东西。以下是我目前拥有的(对不起,我是新手):
LyrDir=“C: \ \ mydir \ \”off_pk=“离线组层\\”近似=arcpy.国会议员.ArcGISProject(“当前”)aprxMap=近似.listMaps(“地图”)[0]offGrp=aprxMap.listLayers(“离线群组层”)[0]my_lyr=arcpy.国会议员.LayerFile(LyrDir+“myfile.lyrx”)aprxMap.addLayerToGroup(offGrp,my_lyr,[2])offlyr=aprxMap.listLayers(off_pk+“我层”)为层在offlyr:层.可见=假
我希望它能像输入以下内容一样简单:
如果层.存在(mylayer)= =假:aprxMap.addLayerToGroup(offGrp,my_lyr,[2])offlyr=aprxMap.listLayers(off_pk+“我层”)为层在offlyr:层.可见=假
如果有人能帮忙,先谢谢你。
我认为会这样做,但你需要提供路径
听起来你必须检查这个层是否是一个组层,或者检查每个层的“longName”属性来获得它的完整路径
longName
(只读) |
一个层的完整路径,包括组层文件夹结构。 |
抱歉,我可能没解释清楚。
我有一个来自ArcGIS online的在线版本的功能层,位于组层“在线组层”中。然后我有了这个层的离线版本(一个文件gdb),它位于本地,作为组层“离线组层”中的一个层存在。
该过程之前将在线层的数据复制到文件gdb中,并且没有发生任何太复杂的事情,然而,从ArcGIS Pro 2.2版本开始,由于一个现在Esri已经知道的错误,基于gdb的层在被覆盖时从地图中删除。
我必须做的是在gdb更新后使用lyrx文件将它添加回来。在某些情况下,该层的离线版本有可能没有从地图中删除,为了确保它不会再次添加,我想做一个检查,告诉它只添加到lyrx文件中的“离线组层”,如果它已经不在离线组层中。
所有的名称都是静态的,所以地图内容大致如下所示:
v地图
v离线组层
>我的层
v在线组层
>我的层
因此,“离线组层”中的“我的层”来自gdb文件/从lyrx文件插入,“在线组层”中的“我的层”来自ArcGIS Online
谢谢
我认为丹斯回答检查在地理数据库中的特征类。要在地图中检查层,使用for循环遍历层。
currentProject = arcpy.mp.ArcGISProject("CURRENT")
我认为这假设只有一个映射
layers = currenmap . listlayers ()
For layer in layers:
if layer.name == "Property_LYR":
#对图层做一些事情
arcpy.management。ApplySymbologyFromLayer (PROPERTY_LYR PROPERTY_LYRX)
其他:
#做其他事情