Transformer les signets en pages pilotées par les données dans ArcGIS Desktop?


9

Nous avons ce grand projet dans ArcGIS avec 30 cartes de différentes étendues utilisant des signets pour parcourir ces cartes / pages.

Maintenant, nous aimerions plutôt utiliser les pages basées sur les données. La question est, est-il possible de convertir des signets en pages axées sur les données ou devons-nous créer beaucoup de polygones couvrant chaque étendue de carte?

Réponses:


7

Pas directement, mais vous pouvez le faire avec python et le module arcpy.mapping. Utilisez arcpy.mapping.ListBookmarks pour obtenir l'étendue de chaque signet. Créez ensuite des entités pour chaque étendue. Vous pourrez désormais utiliser cette classe d'entités comme couche d'index pour les pages dynamiques.


Pour plus de clarté, ListBookmarks est une nouvelle fonction dans ArcGIS 10.1
RyanKDalton

OK, toujours sur 10.0 ici ... Je suppose que nous mettrons à jour bientôt. De plus, je ne connais pas du tout Python.
oskarlin

Si vous êtes encore sur 10.0 et connaissez ArcObjects et Python - vous pouvez accéder aux signets à l'aide d'ArcObjects importés avec des types de comtés. pierssen.com/arcgis/upload/misc/python_arcobjects.pdf
dklassen

3

Vous semblez loin d'être le seul à vouloir cela comme une fonctionnalité prête à l'emploi. Il y a au moins trois idées ArcGIS auxquelles je vous recommanderais d'ajouter votre nom:

En attendant, si quelqu'un est inspiré pour écrire un outil BookMarks To Feature Class , alors je suis sûr que sa sortie serait bien utilisée comme classe d'entités index pour les pages pilotées par les données.

J'ai fini par le faire comme un exercice de formation basé sur un exemple de code l'aide d'ArcGIS Online pour 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

ListBookmarks est cassé dans la version 10.2.1. ESRI a ouvert un dossier aujourd'hui: [# NIM099667 L'exemple 3 de ListBookmarks (arcpy.mapping) (comme la réponse de PolyGeo) de la documentation d'aide ne fonctionne pas correctement et crée une sortie vide dans la version ArcMap 10.2.1. ]
MapGuyMike

2

Nous avons pu créer une classe d'entités en enregistrant les signets en tant que fichier .dat, puis en chargeant ce fichier dans l' outil Mes lieux , puis en les sélectionnant dans la boîte de dialogue Mes lieux, puis en cliquant sur le bouton Ajouter à et en choisissant Mapper comme graphique une fois vous avez un graphique, puis sélectionnez tous les graphiques dans la carte et utilisez Convertir les graphiques en entités, puis vous pouvez utiliser la classe d'entités pour les pages pilotées par les données. Remarque: les graphiques sont apparus sous forme de polygones. Tout le mérite revient à Seneca Francis.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.