Engine中如何在布局视图下固定地图的Extent?

Engine中如何在布局视图下固定地图的Extent?ArcMap中操作:在Data Frame Properties->Data Frame->Extent 下选择Fixed Extent,然后手动设置Extent。
已邀请:

朱新颖

赞同来自:

【解决办法】:
可以通过以下步骤:
1,获取IMapFrame;
2,将IMapFrame.ExtentType设置为esriExtentTypeEnum.esriExtentBounds;
3,自定义Envelope,将其赋予IMapFrame.MapBounds,刷新即可。


IGraphicsContainer pGraphicsContainer = axPageLayoutControl1.GraphicsContainer; 
IMapFrame pMapFrame = pGraphicsContainer.FindFrame(axPageLayoutControl1.ActiveView.FocusMap) as IMapFrame; 
pMapFrame.ExtentType = esriExtentTypeEnum.esriExtentBounds; 
IEnvelope env = new EnvelopeClass(); 
env.PutCoords(111939.3058, 27729.6982, 131821.6658, 41643.6886); //地理坐标系下的坐标,即范围
pMapFrame.MapBounds = env; 
axPageLayoutControl1.Refresh();

countsun - 80后土管员

赞同来自:

用Python怎么操作或者给个函数 啥的,dataframe 没有这个属性,不知道怎么操作。我就需求:按某个extent导出图片,但是手工设置extent 会按长短比例自动变化;dataframe里边的帮助写的很明白,extent可以被赋值 ,但是赋值后再次调用,可能数据不一致,但是帮助没有说明变化的逻辑。
我自己试验了几把,三种思路解决问题。
第一种:还是导出df,手动调整了布局,比如手动调整内容列表窗口的大小,最终会影响df的extent;
还不知道怎么用程序调整内容列表窗口,也不知道df的extent自动变换的逻辑;
第二种:还是导出df的图片(一般左右留空白),用python去切这个图片。这个比较适合图片大小一致的,适用性比较窄;
第三种:导出页面布局(手工设置df的长宽等于页面布局的长宽),
arcpy.mapping.ExportToJPEG(mxd,r"G:\abc\\"+layer.name+"",resolution=500)
反正我只有横向和纵向两种情况,我就做2个mxd;我是按第三种方式解决的。
 

要回复问题请先登录注册