<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Obtain Index of Layer Within a Group Layer in Python in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567296#M44445</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This should do it, but you would need to put it in a loop to go through your mxds&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy

inMXD = r'c:\test.mxd'
outMXD = r'c:\test1.mxd'
rLayer = 'test3' #Name of reference layer
mLayer = 'test4' #Name of layer to be replaced and moved
lyrFile = arcpy.mapping.Layer(r'c:\Test4.lyr') #Layer file used to replace layer

mxd = arcpy.mapping.MapDocument(inMXD)
for df in arcpy.mapping.ListDataFrames(mxd):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #loop data frames
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd,"",df):&amp;nbsp;&amp;nbsp;&amp;nbsp; #loop layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.isGroupLayer == 1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Is layer a group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for glyr in arcpy.mapping.ListLayers(lyr): #loop layer in group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr != lyr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Not Group Layer Name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr.name.lower() == mLayer:&amp;nbsp;&amp;nbsp;&amp;nbsp; #Layer to be replaced and moved
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.RemoveLayer(df, glyr) #Remove the layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.AddLayer(df, lyrFile) #Add layer based on Layer File

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr.name.lower() == rLayer:&amp;nbsp;&amp;nbsp;&amp;nbsp; #Layer to be used to reference position of move layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; refLayer = glyr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Set ref layer

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Have to loop through layers again as layer is added outside the group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd,"",df): #Start new loop of layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.name.lower() == mLayer:&amp;nbsp; #Is move layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveLyr = glyr&amp;nbsp; #Set move layer

#Move layer to required position
arcpy.mapping.MoveLayer(df, refLayer, moveLyr, "BEFORE") 

mxd.saveACopy(outMXD)
del mxd&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Ben&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 00:26:54 GMT</pubDate>
    <dc:creator>BenHolmes</dc:creator>
    <dc:date>2021-12-12T00:26:54Z</dc:date>
    <item>
      <title>Obtain Index of Layer Within a Group Layer in Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567293#M44442</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;To All ArcGIS Python Users:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like to create a python script where I can remove a layer from an mxd and replace it with a new layer that is placed in the exact same location.&amp;nbsp; It is essential that this script would be able to replace the layer in a Group Layer as this is how it exists in hundreds of mxds.&amp;nbsp; I had a VBA script that performed this type of task, but it did not work with Group Layers as I was unable to get the layer index within the Group Layer.&amp;nbsp; As such I had to perform the Group Layer individual layer replacement manually which was quite time consuming.&amp;nbsp; Does python give you the ability to obtain the index of a specific layer within a Group Layer?&amp;nbsp; Any help or hints regarding this topic are greatly appreciated.&amp;nbsp; Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2012 11:55:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567293#M44442</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2012-02-14T11:55:43Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain Index of Layer Within a Group Layer in Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567294#M44443</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Something along these lines?&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/AddLayerToGroup/00s300000004000000/"&gt;http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/AddLayerToGroup/00s300000004000000/&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2012 12:42:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567294#M44443</guid>
      <dc:creator>MathewCoyle</dc:creator>
      <dc:date>2012-02-14T12:42:12Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain Index of Layer Within a Group Layer in Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567295#M44444</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you Mathew, but this solution does not solve my problem.&amp;nbsp; But you did point me to an area in the Help documentation where the InsertLayer method is found.&amp;nbsp; I believe the InsertLayer method might work for me as it works with Group Layers, according to the Help documentation, and you can insert it before or after a target layer anywhere in the Group, not just at the top or bottom.&amp;nbsp; In my scenario I can have a group layer with 5 layers in it and I want to replace either the 2nd, 3rd, or 4th layer.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2012 13:01:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567295#M44444</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2012-02-14T13:01:42Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain Index of Layer Within a Group Layer in Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567296#M44445</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This should do it, but you would need to put it in a loop to go through your mxds&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy

inMXD = r'c:\test.mxd'
outMXD = r'c:\test1.mxd'
rLayer = 'test3' #Name of reference layer
mLayer = 'test4' #Name of layer to be replaced and moved
lyrFile = arcpy.mapping.Layer(r'c:\Test4.lyr') #Layer file used to replace layer

mxd = arcpy.mapping.MapDocument(inMXD)
for df in arcpy.mapping.ListDataFrames(mxd):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #loop data frames
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd,"",df):&amp;nbsp;&amp;nbsp;&amp;nbsp; #loop layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.isGroupLayer == 1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Is layer a group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for glyr in arcpy.mapping.ListLayers(lyr): #loop layer in group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr != lyr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Not Group Layer Name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr.name.lower() == mLayer:&amp;nbsp;&amp;nbsp;&amp;nbsp; #Layer to be replaced and moved
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.RemoveLayer(df, glyr) #Remove the layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.AddLayer(df, lyrFile) #Add layer based on Layer File

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if glyr.name.lower() == rLayer:&amp;nbsp;&amp;nbsp;&amp;nbsp; #Layer to be used to reference position of move layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; refLayer = glyr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Set ref layer

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Have to loop through layers again as layer is added outside the group layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd,"",df): #Start new loop of layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.name.lower() == mLayer:&amp;nbsp; #Is move layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveLyr = glyr&amp;nbsp; #Set move layer

#Move layer to required position
arcpy.mapping.MoveLayer(df, refLayer, moveLyr, "BEFORE") 

mxd.saveACopy(outMXD)
del mxd&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Ben&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 00:26:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567296#M44445</guid>
      <dc:creator>BenHolmes</dc:creator>
      <dc:date>2021-12-12T00:26:54Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain Index of Layer Within a Group Layer in Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567297#M44446</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for your reply with code Ben.&amp;nbsp; I believe that might work, but I think the following Post has a better solution:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;replaceDataSource not working in the same python forum&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The method that appears to work best is the UpdateLayer method.&amp;nbsp; This incorporates RemoveLayer and AddLayer in the same method and the task of tracking the index of the layer is bundled up for free with this method.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2012 16:08:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-index-of-layer-within-a-group-layer-in/m-p/567297#M44446</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2012-02-14T16:08:27Z</dc:date>
    </item>
  </channel>
</rss>

