आप इसे आउट-ऑफ-द-बॉक्स कार्यक्षमता के रूप में चाहते हैं, अकेले दूर से प्रतीत होता है। कम से कम तीन आर्कजीआईएस विचार हैं जो मैं आपको अपना नाम जोड़ने की सलाह दूंगा:
इस बीच यदि किसी को BookMarks To Feature Class टूल लिखने के लिए प्रेरित किया जाता है , तो मुझे यकीन है कि इसका आउटपुट डेटा ड्रिवेन पेजों के लिए एक इंडेक्स फ़ीचर क्लास के रूप में अच्छी तरह से उपयोग किया जाएगा।
मैंने कुछ नमूना कोड आर्कगिस ऑनलाइन हेल्प फॉर लिस्टबुकमार्क्स (आर्कपीपिंग) पर आधारित प्रशिक्षण अभ्यास के रूप में इसे पूरा किया।
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