Suite

Utiliser ArcPy pour exporter des mxd individuels à partir de pages pilotées par les données ?

Utiliser ArcPy pour exporter des mxd individuels à partir de pages pilotées par les données ?


J'essaie de générer des individus mxd pour chaque page de mes pages pilotées par les données (que j'ai déjà configurées). J'ai 38 pages au total, j'aurais donc besoin de générer 38 mxds. Les pages sont nommées en fonction de la zone (A, B, C etc.) et du numéro attribué (1,2,3 etc.). Chaque page serait nommée quelque chose comme A1, B2 ou C13. Le nom de la zone est enregistré dans la table attributaire sous le nom de champ "DIST_NAME".

Je ne connais pas très bien python, et c'est ma première incursion dans python dans ArcGIS. J'ai réussi à reconstituer du code. J'ai deux versions; ni l'un ni l'autre ne fonctionne.

Version 1:

J'ai pu générer des mxd individuels avec cette version, mais je n'ai pas obtenu les noms de fichiers appropriés. Je m'ai donné 1, 2, 3 etc. quand je voulais A1, A2, A3 etc.

pour pageNum dans la plage (1, mxd.dataDrivenPages.pageCount +1) : mxd.dataDrivenPages.currentPageID = pageNum mxd.saveACopy(r"H:Test" + str(pageNum) + ".mxd") mxd.dataDrivenPages .rafraîchir()

Version 2:

J'ai obtenu les deux lignes de pageID sur le site d'aide. Cela a généré 1 mxd avec un nom incorrect.

pour pageNum dans la plage (1, mxd.dataDrivenPages.pageCount +1) : pageID = mxd.dataDrivenPages.getPageIDFromName("DIST_NAME") mxd.dataDrivenPages.currentPageID = pageID mxd.saveACopy(r"H:Test" + str (pageID) + ".mxd") mxd.dataDrivenPages.refresh()

Quelqu'un peut-il s'il vous plaît indiquer ce que je fais mal dans mon code?


Le paramètre que vous envoyez àmxd.dataDrivenPages.getPageIDFromName()est incorrect.

Si tu utilises:mxd.dataDrivenPages.getPageIDFromName(str(pageNum))

Je pense que vous obtiendrez le résultat que vous recherchez. (Quand je l'ai exécuté sur mon document de test, avec un ensemble de pages de données de 6 polygones, je me suis retrouvé avec 6 MXD, chacun avec un nom différent. Je pense que c'est ce que vous recherchez.)

mxd.dataDrivenPages.getPageIDFromName()renvoie l'ID de l'enregistrement avec le nom qui lui est transmis en tant qu'argument. (En utilisant les champs que vous avez spécifiés comme nom et ID lorsque vous avez initialement configuré les pages dynamiques pour le document.) Vous avez transmis une chaîne ("DIST_NAME"), qui ne correspond à aucun enregistrement, elle ne renvoie donc pas un Nom. (C'est ce qui a causé ma confusion initiale à ce sujet, je l'avais à l'envers - pensant que la valeur du champ Nom était extraite au lieu de l'ID.)

Ensuite, votre code vient de créer un tas de MXD qui ont tous le même nom - au lieu d'un pour chacun.

ÉDITER --

Après quelques travaux supplémentaires, j'en suis arrivé là :

pour pageNum dans la plage (1, mxd.dataDrivenPages.pageCount +1) : mxd.dataDrivenPages.currentPageID = pageNum print "Exportation de la page {0} de {1}".format(str(mxd.dataDrivenPages.currentPageID), str(mxd .dataDrivenPages.pageCount)) pageName = mxd.dataDrivenPages.pageRow.getValue("Autre") mxd.saveACopy("C:Test" + str(pageNum) + "_" + pageName + ".mxd") mxd.dataDrivenPages.refresh()

Cela exporte un mxd avec un nom qui est la valeur actuelle de pageNum, puis la valeur du nom de champ qui est passé àmxd.dataDrivenPages.pageRow.getValue("Autre")- vous voudrez probablement remplacer "Autre" par "DIST_NAME" et ajuster les autres bits à vos préférences.