I would like to read and edit the Extent Values of each Layer in a MXD-file.

My code:

import arcpy

mxd = arcpy.mapping.MapDocument(r"D:\Work\myInFile.mxd")

for lyr in arcpy.mapping.ListLayers(mxd):

    if lyr.isFeatureLayer:

         # read
         print lyr.getExtent

         # write
         lyr.getExtent = ({XMin}, {YMin}, {XMax}, {YMax})

del mxd

The getExtent method is described here But I'm not sure whether this is in any way the correct method.


from your code there is no problem listing layers and getting the extent of layers but i dont think writing method is correct. try the following code with Extent method:

import arcpy

arcpy.env.extent = arcpy.Extent(XMin,YMin,XMax,YMax)

i hope it helps you...


@KorporalNobbs getExtent is read only.

Il you want zoom on all featureclass you can run

df = arcpy.mapping.ListDataFrames(mxd, "Bloc1")[0]  # or ingore name and get the first df

Extract from latest Desktop Help

This performs the same ArcMap operation as Selection > Zoom To Selected Features. One difference is that if no features are selected, it will zoom to the full extent of all layers. If you want to zoom to the extent of selected features for a specific layer, try using the Layer.getSelectedExtent method.

In addition the result get extent with labelling

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.