在AE中,更新Mxd文档的比例尺,比较特殊。写代码以记录,更新比例尺代码如图所示:

        [DllImport("User32.dll")]
public static extern int GetDesktopWindow();
/// <summary>
/// 更新比例尺
/// </summary>
/// <param name="pNewMxdFile"></param>
private void UpdataScale(string pNewMxdFile)
{
IMapDocument tMapDocument2 = new MapDocumentClass();
tMapDocument2.Open(pNewMxdFile);
IPageLayout pageLayout = tMapDocument2.PageLayout;
IActiveView activeView2 = (IActiveView)pageLayout;
IMap map = activeView2.FocusMap;
activeView2.Activate(GetDesktopWindow());
map.MapScale = _MapScale;
activeView2.Refresh();
tMapDocument2.Save(true, false);
tMapDocument2.Close();
}

注意事项:在这个方法中,好像只能用于更新比例尺的操作。除此之外,如果做其他操作,就会造成莫名奇妙的错误。例如:先让Map缩放到一个特性的Envelope中后,再更新一个比例尺,就有问题。Mxd打开图后,就看不见数据了。相当奇怪,不知道其他的操作会造成什么影响。主要怀疑是函数GetDesktopWindow在作怪。
所以一般把修改比例尺放到一个单独的函数中。如果Mxd中有多个Map,都要更新比例尺,则代码如下所示:

        private void UpdataScale(string pNewMxdFile)
{
IMapDocument mapDocument = new MapDocumentClass();
mapDocument.Open(pNewMxdFile); IPageLayout pageLayout = mapDocument.PageLayout;
IActiveView activeView = (IActiveView)pageLayout;
IMap map = activeView.FocusMap; activeView = (IActiveView)mapDocument.PageLayout;
activeView.Activate(GetDesktopWindow()); map.MapScale = _MapScale;
activeView.Refresh(); pageLayout.FocusNextMapFrame();
pageLayout = mapDocument.PageLayout;
activeView = (IActiveView)pageLayout;
map = activeView.FocusMap; activeView = (IActiveView)mapDocument.PageLayout;
activeView.Activate(GetDesktopWindow()); map.MapScale = _MapScale;
activeView.Refresh(); mapDocument.Save(true, true);
}

更新Mxd的范围代码如下:

        /// <summary>
/// 更新缩放范围
/// </summary>
/// <param name="pNewMxdFile"></param>
private void UpdataExtend(string pNewMxdFile,IEnvelope pEnvelope)
{
IMapDocument tMapDocument2 = new MapDocumentClass();
tMapDocument2.Open(pNewMxdFile);
IPageLayout pageLayout = tMapDocument2.PageLayout;
IActiveView activeView2 = (IActiveView)pageLayout;
IEnvelope pEnv = activeView2.Extent;
pEnv = pEnvelope;
//pEnv.CenterAt(point) //指向中心点
activeView2.Extent = pEnv;
activeView2.Refresh();
tMapDocument2.Save(true, false);
tMapDocument2.Close();
}

Mxd文档更新比例尺的更多相关文章

  1. Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本

     Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...

  2. 打开地图文件和shape文件代码加载Mxd文档

    代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary>  ...

  3. ElasticSearch查询 第二篇:文档更新

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

  4. MongoDB小结12 - update【多文档更新】

    当一次更新一个文档无法满足我们的脚步时,我们可以选择一次更新多个文档,及在update的第四个参数的位置添上true,及做多文档更新,建议就算不做多文档更新也显式的在第四个参数上置false,这样明确 ...

  5. 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson

    一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...

  6. Microsoft在8月7号发布的帮助文档更新中,HelpLibrary2安装Cab文档包出现签名问题

    在VS 2017 8月2号发布15.7.6版本后,在8月7号推送了helpview程序中的绝大部分更新文档,在本次推送中多数Cab文件出现了无法进行安装的签名问题, 不论是单个下载,还是删除本地所有已 ...

  7. 如何将arcgis的mxd文档存储为相对路径

    在默认情况下,ArcGIS 10中地图文件mxd中添加的图层所引用的文件路径均为绝对路径.这就意味着,如果你在地图中引用了“D:\data\DEM.shp”文件,那map.mxd文件中保存的该层文件路 ...

  8. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

  9. 更新日志 - BugHD 全面开放 API 文档

    Hey, 上周 BugHD 全面更新 API 文档,上线一些新的功能,让你可以轻松掌控 Crash ,更方便分享.定位和解决.同时,新版 fir.im 也有所优化,希望你们会喜欢. 具体如下: 开放 ...

随机推荐

  1. FBV和CBV装饰器

    FBV装饰器: def cook(request): err_msg="" if request.method == "GET": return render( ...

  2. Centos6.5 安装 RabbitMQ 3.7.11

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STO ...

  3. JavaScript中call和apply方法的使用

    acvaScript中的call()方法和apply()方法,在某些时候这两个方法还确实是十分重要的.1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法.2. 相同点:这两 ...

  4. linux date使用

    Linux date 格式化时间和日期 [root@linuxidc ~]# date -d today +"%Y-%m-%d"  2016-11-26 [root@linuxid ...

  5. tp5 删除服务器文件

    public function test(){ //ROOT_PATH . 'public' . DS . 'uploads' $filename = ROOT_PATH . 'public' . D ...

  6. JavaScript·DOM,BOM

    YI.DOM 1.创建DOM 2.删除DOM 3.文档碎片 文档碎片可以提高DOM操作性能(理论上) 文档碎片(类似于一个口袋,先将多个元素放在口袋里,放完之后,再将口袋放到最终要插入的元素中): d ...

  7. React事件绑定与解绑

    React中事件分类 React中事件绑定分为两种: 1.直接添加在React元素上的事件,这是React在基于Virtual DOM的基础上实现的符合w3c规范的合成事件(SyntheticEven ...

  8. 2019微软Power BI 每月功能更新系列——3月Power BI 新功能学习

    Power BI3月产品功能更新发布啦!本次新功能新增了热图和单选切片器:完善了新的DAX功能和对现有功能的改进(例如按钮和选择窗格):同时官方表示建模视图的全面改进也正在进行中~Woo~那么,本月更 ...

  9. Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成

    微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...

  10. Window10下RabbitMQ安装图文教程

    版权声明:本文为博主原创文章,未经博主允许欢迎转载,请注明原文链接.一起交流,共同进步. https://blog.csdn.net/newbie_907486852/article/details/ ...