답변:
직접적으로는 아니지만 python 및 arcpy.mapping 모듈 로이 작업을 수행 할 수 있습니다. 각 책갈피의 범위를 얻으려면 arcpy.mapping.ListBookmarks 를 사용하십시오 . 그런 다음 각 범위에 대한 기능을 작성하십시오. 이제이 기능 클래스를 데이터 기반 페이지의 인덱스 계층으로 사용할 수 있습니다.
이 기능을 Out-Of-The-Box 기능으로 사용하려는 데는 혼자가 아닙니다. 귀하의 이름을 다음에 추가하는 것이 좋습니다 ArcGIS Ideas가 3 개 이상 있습니다.
그 동안 누군가가 BookMarks To Feature Class 도구 를 작성하도록 영감을 받았다면 그 결과가 데이터 기반 페이지의 인덱스 피처 클래스로 잘 사용될 것이라고 확신합니다.
나는 이것을 ListBookmarks (arcpy.mapping)에 대한 ArcGIS Online Help의 일부 샘플 코드를 바탕으로 한 훈련 연습으로 끝냈습니다.
import arcpy
# The map with the bookmarks
mxd = arcpy.mapping.MapDocument(r"C:\polygeo\Maps\Bookmarks.mxd")
# Make sure that Training.gdb exists
fileGDBFolder = (r"C:\polygeo")
fileGDBName = ("Training.gdb")
fileGDB = fileGDBFolder + "\\" + fileGDBName
if not arcpy.Exists(fileGDB):
arcpy.CreateFileGDB_management(fileGDBFolder, fileGDBName)
# The output feature class to be created -
# This feature class will store the bookmarks as features
fcName = "Bookmarks"
outFC = fileGDB + "\\" + fcName
# Create new feature class and add a "Name" field to store the
# bookmark name. Provide it with the same Spatial reference as
# the data frame in which the bookmarks of the map are stored
if arcpy.Exists(outFC):
arcpy.Delete_management(outFC)
arcpy.CreateFeatureclass_management(fileGDB,
fcName,
"POLYGON",
spatial_reference=arcpy.SpatialReference(
"Geocentric Datum of Australia 1994"))
arcpy.AddField_management(outFC, "Name", "TEXT", "", "", 50)
# Use arcpy.mapping.ListBookmarks to read bookmark corners and names,
# then arcpy.da.InsertCursor to write arrays of Point geometries from
# that can be written as Polygon geometries to the Shape field of the
# new feature class (with their names).
cur = arcpy.da.InsertCursor(outFC, ["SHAPE@", "Name"])
array = arcpy.Array()
for bkmk in arcpy.mapping.ListBookmarks(mxd):
array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))
array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMax))
array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMax))
array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMin))
# To close the polygon, add the first point again
array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))
cur.insertRow([arcpy.Polygon(array), bkmk.name])
array.removeAll()
del bkmk,array,cur,mxd
print "Bookmarks feature class has been created in " + fileGDB