Как программно открыть файл проекта?

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
alskr
Новоприбывший
Сообщения: 2
Зарегистрирован: 22 дек 2016, 15:12
Репутация: 0

Как программно открыть файл проекта?

Сообщение alskr » 22 дек 2016, 16:18

Добрый день, уважаемые форумчане.
Только начинаю программировать в ArcGis.
Вопрос такой: необходимо открыть файл проекта (.mxd) с помощью скрипта на python'е, запущенного из-под AcMap и отрисовать этот проект на экране (т.е. выполнить программными средствами операцию, аналогичную операциям ArcMap: Файл -> Открыть.)
Пытаюсь делать это с помощью класса MapDocument:
mxd = arcpy.mapping.MapDocument('имя файла на диске .mxd')

Для перерисовки даю:
arcpy.RefreshTOC()
arcpy.RefreshActiveView()

Файл открывается нормально, из скрипта вижу имена слоев и пр. Но вот экран как был пуст - так и остается пустым.
Что необходимо сделать, чтобы отобразить открытый проект на экране?
Возможно, вопрос не очень по теме данного форума - тогда, может быть, кто-то подскажет, куда его лучше поместить?
Заранее спасибо.

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Как программно открыть файл проекта?

Сообщение doujin » 23 дек 2016, 05:46

Через arcpy этого сделать не получится. Нет в нем такой функции.
Несколько советов:
1) Пересмотреть весь алгоритм целиком. Может открытие файла и не нужно, или его можно заменить каким-то сочетанием функций, которые в arcpy таки есть.
2) В модуле os есть функция startfile. Проект откроется в новом ArcMap, но вдруг подойдет...
3) Использовать ArcObjects. Там есть такая возможность, но тогда язык программирования будет уже не Python.

alskr
Новоприбывший
Сообщения: 2
Зарегистрирован: 22 дек 2016, 15:12
Репутация: 0

Re: Как программно открыть файл проекта?

Сообщение alskr » 23 дек 2016, 09:52

Спасибо.
Через startfile я пробовал - да, действительно, открывается новый экземпляр ArcMap.
Но ощущение, что все же можно как-то загрузить .mxd на экран. По крайней мере, с файлом .lyr у меня это проходит, вот так:
base_layer = r'D:\GRAV10.lyr'
base_layer_name = 'GRAV33.GRD'
mxd = arcpy.mapping.MapDocument('CURRENT')
active_view = mxd.activeView
df2 = arcpy.mapping.ListDataFrames(mxd, active_view)[0]
arcpy.mapping.AddLayer(df2, arcpy.mapping.Layer(base_layer))
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
А с файлом .mxd такая петрушка работать не хочет. Но, возможно, есть для него нечто сходное?
Попробую еще глянуть, что за зверь ArcObject. :roll:

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя