Добрый день, уважаемые форумчане.
Только начинаю программировать в ArcGis.
Вопрос такой: необходимо открыть файл проекта (.mxd) с помощью скрипта на python'е, запущенного из-под AcMap и отрисовать этот проект на экране (т.е. выполнить программными средствами операцию, аналогичную операциям ArcMap: Файл -> Открыть.)
Пытаюсь делать это с помощью класса MapDocument:
mxd = arcpy.mapping.MapDocument('имя файла на диске .mxd')
Для перерисовки даю:
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
Файл открывается нормально, из скрипта вижу имена слоев и пр. Но вот экран как был пуст - так и остается пустым.
Что необходимо сделать, чтобы отобразить открытый проект на экране?
Возможно, вопрос не очень по теме данного форума - тогда, может быть, кто-то подскажет, куда его лучше поместить?
Заранее спасибо.
Как программно открыть файл проекта?
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 22 дек 2016, 15:12
- Репутация: 0
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Как программно открыть файл проекта?
Через arcpy этого сделать не получится. Нет в нем такой функции.
Несколько советов:
1) Пересмотреть весь алгоритм целиком. Может открытие файла и не нужно, или его можно заменить каким-то сочетанием функций, которые в arcpy таки есть.
2) В модуле os есть функция startfile. Проект откроется в новом ArcMap, но вдруг подойдет...
3) Использовать ArcObjects. Там есть такая возможность, но тогда язык программирования будет уже не Python.
Несколько советов:
1) Пересмотреть весь алгоритм целиком. Может открытие файла и не нужно, или его можно заменить каким-то сочетанием функций, которые в arcpy таки есть.
2) В модуле os есть функция startfile. Проект откроется в новом ArcMap, но вдруг подойдет...
3) Использовать ArcObjects. Там есть такая возможность, но тогда язык программирования будет уже не Python.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 22 дек 2016, 15:12
- Репутация: 0
Re: Как программно открыть файл проекта?
Спасибо.
Через 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.
Через 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.

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