Более

Используете ArcPy для экспорта отдельных mxd-файлов со страниц, управляемых данными?


Я пытаюсь создать индивидуальный mxds для каждой страницы на моих страницах, управляемых данными (которые я уже настроил). Всего у меня 38 страниц, поэтому мне нужно сгенерировать 38 mxds. Страницы названы в соответствии с зоной (A, B, C и т. Д.) И присвоенным номером (1,2,3 и т. Д.). Каждая страница будет называться как-то вроде A1, B2 или C13. Имя зоны записывается в таблице атрибутов под именем поля «DIST_NAME».

Я не очень знаком с python, и это мой первый набег на python в ArcGIS. Мне удалось собрать код. У меня есть две версии; ни чего не работает.

Версия 1:

В этой версии мне удалось сгенерировать отдельные mxd-файлы, но я не получил правильных имен файлов. Я дал мне 1, 2, 3 и т. Д., Когда я хотел A1, A2, A3 и т. Д.

для pageNum в диапазоне (1, mxd.dataDrivenPages.pageCount +1): mxd.dataDrivenPages.currentPageID = pageNum mxd.saveACopy (r "H:  Test " + str (pageNum) + ".mxd") mxd.dataDrivenPages .refresh ()

Версия 2:

Я удалил две строки pageID со справочного сайта. Это сгенерировало 1 mxd с неправильным именем.

для pageNum в диапазоне (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 ()

Может ли кто-нибудь указать, что я делаю неправильно в своем коде?


Параметр, который вы отправляетеmxd.dataDrivenPages.getPageIDFromName ()это неверно.

Если вы используете:mxd.dataDrivenPages.getPageIDFromName (str (pageNum))

Думаю, вы получите желаемый результат. (Когда я запустил его в своем тестовом документе с набором страниц, управляемых данными, из 6 полигонов, у меня получилось 6 MXD, каждый с другим именем. Я думаю, это то, что вы собираетесь делать.)

mxd.dataDrivenPages.getPageIDFromName ()возвращает идентификатор записи с именем, которое передается ей в качестве аргумента. (Используя поля, которые вы указали в качестве имени и идентификатора при первоначальной настройке управляемых данных для документа.) Вы передавали строку («DIST_NAME»), которая не соответствует ни одной записи, поэтому она не возвращает действительный название. (Это то, что вызвало у меня первоначальное замешательство по этому поводу, у меня все было наоборот - я думал, что значение из поля Name было извлечено вместо идентификатора.)

Затем ваш код просто создал группу MXD с одинаковыми именами, а не по одному для каждого.

РЕДАКТИРОВАТЬ --

После некоторой дополнительной работы я добрался сюда:

для pageNum в диапазоне (1, mxd.dataDrivenPages.pageCount +1): mxd.dataDrivenPages.currentPageID = pageNum print "Экспорт страницы {0} из {1}". формат (str (mxd.dataDrivenPages.currentPageID), str (mxd .dataDrivenPages.pageCount)) pageName = mxd.dataDrivenPages.pageRow.getValue ("Другое") mxd.saveACopy ("C: Test " + str (pageNum) + "_" + pageName + ".mxd") mxd.dataDrivenPages.refresh ()

Это экспортирует mxd с именем, которое является текущим значением pageNum, а затем значением имени поля, которое передается вmxd.dataDrivenPages.pageRow.getValue («Другое»)- вы, вероятно, захотите изменить "Другое" на "DIST_NAME" и настроить другие биты в соответствии с вашими предпочтениями.


Смотреть видео: ORACOL RUSESC saptamana 2-9 AUGUST - Alege o carte (September 2021).