首页 > 其他分享 >ArcObject SDK开发 015 出图

ArcObject SDK开发 015 出图

时间:2022-12-14 22:15:05浏览次数:48  
标签:string mytagRECT2 出图 Export 015 ._ ArcObject myMapDocument

1、核心出图代码

出图主要是靠IExport接口,继承该接口的类如下图所示。

image1.png

出不同格式的图,实例化不同的类即可。例如导出jpg格式的图片的代码如下。

private void Export(string pMxdFilePath, string pResultFolderPath)
{
    //获取参数
    string myFileNameWithoutEx = System.IO.Path.GetFileNameWithoutExtension(pMxdFilePath);
    string myImageFilePath = pResultFolderPath + "\\" + myFileNameWithoutEx + ".jpg";
    //打开地图
    var myMapDocument = new MapDocumentClass();
    myMapDocument.Open(pMxdFilePath);
    IPage myPage = myMapDocument.PageLayout.Page;
    myPage.Border = null;
    var myActiveView = myMapDocument.PageLayout as IActiveView;
    //得到使用屏幕分辨率的合适尺寸
    var mytagRECT2 = new tagRECT
    {
        left = 0,
        top = 0
    };
    double myRatio = this._Export.Resolution / 96;
    mytagRECT2.right = Convert.ToInt32(myActiveView.ExportFrame.right * myRatio);
    mytagRECT2.bottom = Convert.ToInt32(myActiveView.ExportFrame.bottom * myRatio);
    //设置输出范围
    var myEnvelope = new EnvelopeClass();
    myEnvelope.PutCoords(mytagRECT2.left, mytagRECT2.top, mytagRECT2.right, mytagRECT2.bottom);
    this._Export.PixelBounds = myEnvelope;
    this._Export.ExportFileName = myImageFilePath;
    //输出
    int myHDC = this._Export.StartExporting();
    myActiveView.Output(myHDC, Convert.ToInt32(this._Export.Resolution), ref mytagRECT2, null, null);
    this._Export.FinishExporting();
    this._Export.Cleanup();
    //清空资源
    myMapDocument.Close();
}

 2、复杂的批量出图

如何进行复杂批量出图呢?例如我们有以下需求,我们按天处理了一年的地质灾害风险数据,需要把他们按照指定的格式做成专题图并导出成图片。

我们分析这个需求。

1、数据是有底图的,底图可能包含行政区边界、地名、水系、主要道路等。

2、专题图的格式都是一样的,只是需要天当日的实际数据以及日期。

我们的解决方案如下。

1、根据要求创建一个Mxd文件,把底图数据添加到地图中,并设置好渲染样式等;

2、添加一个实际的业务数据,并设置好图层名称、渲染方式等;

3、添加辅助元素,例如标题、日期以及图例等,并且给需要在代码中修改的Element元素命名。

4、获取一年的实际业务数据列表,开始循环处理,循环处理的流程如下。

  (1)拷贝模板Mxd文件,并重新命名;

  (2)打开拷贝后的mxd文件,找到第一个图层,把数据源替换成目标数据源;

  (3)循环所有Element,找到指定名称的Element,把其内容修改成正确日期;

  (4)调用导出函数,把当前布局导出成图片;

  (5)按照相对路径,保存mxd文件。

标签:string,mytagRECT2,出图,Export,015,._,ArcObject,myMapDocument
From: https://www.cnblogs.com/mytudousi/p/16983745.html

相关文章

  • [JSOI2015]地铁线路
    链接:https://www.luogu.com.cn/problem/P6096题目描述:给定\(n\)条线路,每一条线路可以贯通若干个点,若每座一个地铁就要付\(1\)元。求:\(1.\)\(s\)到\(t\)最少要付多少钱。......
  • [JSOI2015]最小表示
    链接:https://www.luogu.com.cn/problem/P6134题目描述:给定一个\(DAG\),求最多删多条边能使任意两点的连通性不会发生改变。题解:手玩几组数据可以发现答案就是图中去掉边\(......
  • [TJOI2015]组合数学
    [\(TJOI2015\)]组合数学链接:https://www.luogu.com.cn/problem/P3974题面:有一个\(n\timesm\)的网格,有些格子里有财宝,每次从左上角出发,只能往右或下走且每一次经过一......
  • [JSOI2015]最大公约数
    链接:https://www.luogu.com.cn/problem/P5502题目描述:对于一个序列$a$,求$\sum_{i=l}^{r}gcd(a_{l},....,a_r)\times(r-l+1)$的最大值。题解:利用"签到游戏"的知识,我们......
  • [JSOI2015]symmetry
    链接:https://www.luogu.com.cn/problem/P6083题目描述:这个题则么这么卡常。我们可以先想到一个$O(n^3)$的$dp$,令$dp_{i,j,k}$表示以$(i,j)$为左上角边长为$k$的正方形......
  • [SCOI2015]小凸玩矩阵
    [SCOI2015]小凸玩矩阵链接:https://www.luogu.com.cn/problem/P4251题解:可以发现去掉了$k$的限制之后,原问题是一个二分图的最大独立集的问题,加上了$k$的限制就可以......
  • 卷积神经网络之ResNet(2015)
    文章目录​​ResNet(2015)​​​​前言​​​​概要​​​​构思​​​​深度​​​​收敛​​​​退化​​​​解决​​​​相关工作​​​​残差表示​​​​快捷链接​​......
  • ES2015+ 代码编译成 ES5
    需要将[email protected]编译成ES5,找了一圈没有合适的,自己弄了个,记录下package.json配置。{"private":true,"scripts":{"build":"npmrunbabel&&npmrun......
  • VS2008(SP1)资源编译错误:fatal error RC1015: cannot open include file 'afxres.h'.
    只要一改动资源,按F7编译就会出现两个错误:errorRC2001:newlineinconstantfatalerrorRC1015:cannotopenincludefile'afxres.h'.打开rc文件发现 #include"afxr......
  • P2661 [NOIP2015 提高组] 信息传递
    P2661[NOIP2015提高组]信息传递题目简述第i个人可以将自己的信息传给第\(t_i\)个人,当有人从别人那里得到自己信息时就结束,问最少要进行多少轮思路这题感觉真的很巧......