Utiliser les pages dynamiques (DDP) pour créer un ensemble de cartes de même étendue mais de couches différentes?


9

Est-il possible d'utiliser l'outil Data Driven Pages (DDP) dans ArcMap ou ArcPy pour créer un ensemble de cartes avec la même étendue mais montrant différentes couches?

Pour clarifier, je crée régulièrement de grands ensembles de cartes pour des projets tous au même endroit, souvent avec les mêmes couches de base, mais modifiés pour se concentrer sur différents aspects de la section pertinente d'un rapport tels que les emplacements de surveillance, l'utilisation des terres, les principales caractéristiques, etc. nécessitent la création et la maintenance de .mxds distincts.

Un système de type DDP me permettrait d'utiliser le texte dynamique et d'assurer un modèle / sortie standard tout au long, cela faciliterait également la vie lors de la mise à jour d'un numéro ou d'un commentaire général car un rapport est écrit dans un .mxd plutôt que plusieurs pour un client.

J'utilise ArcMap 10.1, mais après avoir lu l' aide en ligne d'ArcGIS DDP, je suppose que cela devrait être fait avec ArcPy car je n'ai pas pu comprendre comment le faire dans ArcMap. Je sais que QGIS a le plugin Atlas , bien que je ne sois pas aussi familier avec ses capacités, mais je l'utiliserais volontiers comme alternative.


1
Je pense que ce que vous recherchez, c'est l'écriture de scripts pour vos modifications de document ArcMap en Python à l'aide du jeu d' outils arcpy.mapping . Voir la référence à la construction de cartogrammes complets , et plus spécifiquement dans le document, "Cartographe de série de référence simple".
RyanKDalton

Réponses:


4

Voici ma pensée en pseudocode: vous obtiendrez votre MapDocument, puis ListDataFrames, puis ListLayers. Ensuite, vous devriez pouvoir parcourir les calques, activer / désactiver la propriété de visibilité du calque, ExportToPDF (ou autre), puis désactiver à nouveau la visibilité et passer au calque suivant. Si vous souhaitez laisser certaines couches en tant que couches de base, vous pouvez peut-être regrouper celles que vous souhaitez modifier pour chaque carte et basculer uniquement la visibilité pour celles-ci en testant IsGroupLayer = True? Peut-être que quelqu'un d'autre a un exemple de code réel ...


Je n'ai jamais trouvé de solution Arc intégrée à cela, mais un collègue a maintenant développé un script python pour le processus qui suit la structure de base que vous proposez. Le script utilise des groupes pour créer une nouvelle page dans le pdf et peut être combiné avec DDP pour créer un livre de cartes avec un ensemble de cartes pour plusieurs sites.
MAJ742

5

Une méthode sans code

Lorsque vous activez les pages pilotées par les données, vous pouvez spécifier une requête de définition qui dépend du numéro de page. Utilisez simplement cette requête pour masquer toutes les fonctionnalités des couches que vous ne souhaitez pas afficher.

  1. Configurez vos cadres de carte pour qu'ils soient au même emplacement, mais avec un champ pour le numéro de page. Configurer les pages pilotées par les données avec le numéro de page comme champ de nom.
  2. Si vous souhaitez qu'une couche soit activée pour une page particulière, ajoutez un attribut "page" à sa table et définissez le numéro de page approprié.
  3. Ajoutez une requête de définition de page à la couche particulière avec votre champ nouvellement créé.

Lorsque la page est sélectionnée, les couches souhaitées deviennent visibles en fonction de la requête de définition de page.


2
Je pense que les requêtes de définition de page fonctionnent bien dans certains cas, mais le problème est que vous devez ajouter le numéro de page pertinent à chaque attribut du tableau de données et que vous ne pouvez pas afficher la même fonctionnalité sur plusieurs pages car vous ne pouvez en référencer qu'une page à la fois
MAJ742
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.