Преобразовать закладки в управляемые данными страницы в ArcGIS Desktop?

9

У нас есть большой проект в ArcGIS с 30 картами с различными экстентами, использующими закладки для перемещения между этими картами / страницами.

Теперь мы хотели бы использовать страницы, управляемые данными. Вопрос в том, можно ли конвертировать закладки в страницы, управляемые данными, или нам нужно создать много полигонов, охватывающих каждый экстент карты?

oskarlin
источник

Ответы:

7

Не напрямую, но вы можете сделать это с помощью python и модуля arcpy.mapping. Используйте arcpy.mapping.ListBookmarks, чтобы получить размер каждой закладки. Затем создайте элементы для каждого экстента. Теперь вы сможете использовать этот класс пространственных объектов в качестве индексного слоя для страниц, управляемых данными.

Джефф М
источник
Просто для ясности, ListBookmarks - это новая функция в ArcGIS 10.1
RyanKDalton
Хорошо, все еще на 10.0 здесь ... Я думаю, мы скоро обновим. Также я не очень хорошо знаю Python.
Оскарлин
Если вы все еще на 10.0 и знакомы с ArcObjects и Python - вы можете получить доступ к закладкам, используя ArcObjects, импортированные с comtypes. pierssen.com/arcgis/upload/misc/python_arcobjects.pdf
dklassen
3

Похоже, вы далеко не одиноки, желая использовать эту функциональность «из коробки». Существует как минимум три идеи ArcGIS, к которым я бы порекомендовал добавить ваше имя:

  • Закладки для MapBook - который находится на рассмотрении
  • Закладки для DataDriven Maps - с комментарием Криса Фокса: «На 10.1 вы сможете сделать это через python, поскольку вы можете использовать новую функцию ListBookmarks, чтобы возвращать список экстентов ваших закладок, и в цикле настраивать экстент Ваш фрейм данных на основе степени каждой закладки. "
  • Инструмент Layer to Bookmarks & Bookmarks to Layer

В то же время, если кто-то вдохновлен на написание инструмента BookMarks To Feature Class , то я уверен, что его вывод будет хорошо использован в качестве индексного класса объектов для страниц, управляемых данными.

Я закончил тем, что выполнил это в качестве учебного упражнения, основанного на некотором образце кода Онлайн-справки ArcGIS для ListBookmarks (arcpy.mapping).

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
PolyGeo
источник
Список Bookmarks не работает в версии 10.2.1. ESRI сегодня открыл дело: [# NIM099667 Пример 3 ListBookmarks (arcpy.mapping) (как и ответ PolyGeo) из справочной документации не работает должным образом и создает пустой вывод в версии ArcMap 10.2.1. ]
MapGuyMike
2

Нам удалось создать класс пространственных объектов, сохранив закладки в виде файла .dat, затем загрузите этот файл в инструмент « Мои метки» , затем выберите их в диалоговом окне «Мои метки», затем нажмите кнопку « Добавить в» и выберите « Однажды отобразить как графический объект» у вас есть изображение, затем выберите всю графику на карте и используйте функцию « Преобразовать графику в объекты», затем вы можете использовать класс объектов для управляемых данными страниц. Примечание: графика появилась в виде полигонов. Вся заслуга идет Сенека Фрэнсис.

Кэри Дженкинс
источник