I am trying to get the extent from all bookmarks in an aprx-document - when ArcGISA Pro is NOT open.
I am able to get the X,Y,Z and scale, but not the extent. I have tried 2 approached which both fails, and a third approach where I doubt the result.
Is it possible to calculate the extent using the camera-properties as it is done in GetBookMarks3?
# -*- coding: utf-8 -*-
import arcpy
from arcpy._mp import Map, ArcGISProject, Camera, MapView, Bookmark
from arcpy.cim.CIMMap import CIMMap, CIMBookmark, CIMViewCamera
def GetBookMarks1(aprxDocument:str😞
ap = ArcGISProject(aprxDocument)
for ma in ap.listMaps():
m:Map = ma
mv:MapView = m.defaultView
mapCam:Camera = mv.camera
mapDef:CIMMap = m.getDefinition("V3")
for bo in mapDef.bookmarks:
b:CIMBookmark = bo
bookmarkCam:CIMViewCamera = b.camera
mapCam.heading = bookmarkCam.heading
mapCam.pitch = bookmarkCam.pitch
mapCam.roll = bookmarkCam.roll
mapCam.scale = bookmarkCam.scale
mapCam.X = bookmarkCam.x
mapCam.Y = bookmarkCam.y
mapCam.Z = bookmarkCam.z
extent = mapCam.getExtent()
print(f"extent: {extent}")
def GetBookMarks2(aprxDocument:str😞
ap = ArcGISProject(aprxDocument)
for ma in ap.listMaps():
m:Map = ma
mv:MapView = m.defaultView
for bo in m.listBookmarks():
b:Bookmark = bo
mv.zoomToBookmark(b)
mapCam:Camera = mv.camera
extent = mapCam.getExtent()
print(f"extent: {extent}")
def GetBookMarks3(aprxDocument:str😞
ap = ArcGISProject(aprxDocument)
for ma in ap.listMaps():
m:Map = ma
mapDef:CIMMap = m.getDefinition("V3")
for bo in mapDef.bookmarks:
b:CIMBookmark = bo
bookmarkCam:CIMViewCamera = b.camera
xMin = bookmarkCam.x - bookmarkCam.viewportWidth / 2
xMax = bookmarkCam.x + bookmarkCam.viewportWidth / 2
yMin = bookmarkCam.y - bookmarkCam.viewportHeight / 2
yMax = bookmarkCam.y + bookmarkCam.viewportHeight / 2
sr = arcpy.SpatialReference(mapDef.spatialReference["wkid"])
array:arcpy.Array = arcpy.Array()
array.add(arcpy.Point(xMin, yMin))
array.add(arcpy.Point(xMax, yMax))
polyline:arcpy.Polyline = arcpy.Polyline(array, sr)
extent:arcpy.Extent = polyline.extent
sr2 = extent.spatialReference
print(f"extent:{extent}")
aprxDocument:str = r"C:\Users\bog\AppData\Local\Temp\ltm_publishing\LtmPub_20221007_180824\Ltm\Ltm.aprx"
# GetBookMarks1(aprxDocument)
# GetBookMarks2(aprxDocument)
GetBookMarks3(aprxDocument)