[922] Implementation of zooming to selected features by Python

发布时间 2023-10-20 14:33:09作者: McDelfino

ref: ArcPy.mp Get Selected Features Extent

ref: Python/ArcPy classes/Geometry


# Set the path to your project file (.aprx)
project_file = r"Map 1.3 Heritage.aprx"
 
# Reference the project
aprx = arcpy.mp.ArcGISProject(project_file)
 
# get the sitebuffer layer
m = aprx.listMaps()[0]
lyr = m.listLayers()[3]
 
# selete the features
with arcpy.da.SearchCursor(lyr, "SHAPE@", "distance = 500") as cur:
    fullExtent = reduce(arcpy.Geometry.union, [row[0] for row in cur]).extent

# get the Map element of the layout
lyt = aprx.listLayouts()[0]
mf = lyt.listElements()[-1]
 
# set the extent to the selected features' extent
mf.camera.setExtent(fullExtent)
 
# export to PDF
lyt.exportToPDF(lyt.name)

del aprx

Some methods...


The reduce function in Python, which is part of the functools module, is used to iteratively apply a function to the elements of an iterable in a cumulative way. It returns a single accumulated result. 

Here's a simple example using the reduce function to find the product of all elements in a list:

from functools import reduce

# Define a function to multiply two numbers
def multiply(x, y):
    return x * y

# Create a list of numbers
numbers = [1, 2, 3, 4, 5]

# Use reduce to find the product of all numbers in the list
product = reduce(multiply, numbers)

print("Product of the numbers:", product)

In this example, the reduce function applies the multiply function cumulatively to the elements of the numbers list. The result will be the product of all the numbers in the list.