1、前言

在利用ArcEngine导出地图的时候,一般有两种情况:全图导出区域导出,下面分别介绍两种导出地图的方法。首先搭建如下图所示的界面:

2、全图导出

2.1、利用IPrintAndExport接口

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Output;
using System;
using System.Text;
using System.Windows.Forms;namespace Win
{public partial class MainForm : Form{public MainForm(){InitializeComponent();axMapControl1.LoadMxFile(@"C:\Users\DSF\Desktop\data\Untitled.mxd");}/// <summary>/// 导出按钮/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnExport_Click(object sender, EventArgs e){StringBuilder filter = new StringBuilder();filter.Append("PDF(*.pdf)|*.pdf|");filter.Append("SVG(*.svg)|*.svg|");filter.Append("AI(*.ai)|*.ai|");filter.Append("EMF(*.emf)|*.emf|");filter.Append("EPS(*.eps)|*.eps|");filter.Append("BMP(*.bmp)|*.bmp|");filter.Append("PNG(*.png)|*.png|");filter.Append("JPEG(*.jpeg)|*.jpeg|");filter.Append("TIFF(*.tif)|*.tif|");filter.Append("GIF(*.gif)|*.gif");// 保存文件SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Title = "导出";saveFileDialog.Filter = filter.ToString();saveFileDialog.RestoreDirectory = true;if (saveFileDialog.ShowDialog() == DialogResult.OK){ExportMap(saveFileDialog.FileName, 300, 1);}}/// <summary>/// 导出地图方法/// </summary>/// <param name="filePath">导出路径</param>/// <param name="resolution">导出分辨率</param>/// <param name="resample">重采样登记</param>private void ExportMap(string filePath, double resolution, int resample){IExport pExport = null;switch (System.IO.Path.GetExtension(filePath)){case ".pdf":pExport = new ExportPDF() as IExport;break;case ".svg":pExport = new ExportSVG() as IExport;break;case ".ai":pExport = new ExportAI() as IExport;break;case ".emf":pExport = new ExportEMF() as IExport;break;case ".eps":pExport = new ExportPS() as IExport;break;case ".bmp":pExport = new ExportBMP() as IExport;break;case ".png":pExport = new ExportPNG() as IExport;break;case ".jpeg":pExport = new ExportJPEG() as IExport;break;case ".tif":pExport = new ExportTIFF() as IExport;break;case ".gif":pExport = new ExportGIF() as IExport;break;default:pExport = new ExportPDF() as IExport;break;}// 设置导出路径pExport.ExportFileName = filePath;// 若导出图片,则设置重采样等级if (pExport is IOutputRasterSettings){IOutputRasterSettings pOutputRasterSettings = pExport as IOutputRasterSettings;pOutputRasterSettings.ResampleRatio = resample;}// 若导出TIFF,则设置坐标信息if (pExport is IExportTIFF){IExportTIFF pExportTIFF = pExport as IExportTIFF;pExportTIFF.GeoTiff = true;pExportTIFF.CompressionType = esriTIFFCompression.esriTIFFCompressionJPEG;}// 若导出PDF,则设置PDF格式if (pExport is IExportPDF){IExportPDF pExportPDF = pExport as IExportPDF;pExportPDF.Compressed = true;pExportPDF.EmbedFonts = true;pExportPDF.ImageCompression = esriExportImageCompression.esriExportImageCompressionNone;}// 导出地图IPrintAndExport pPrintAndExport = new PrintAndExport();pPrintAndExport.Export(axMapControl1.ActiveView, pExport, resolution, false, null);}}
}

2.2、利用IActiveView接口

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using System;
using System.Text;
using System.Windows.Forms;namespace Win
{public partial class MainForm : Form{public MainForm(){InitializeComponent();axMapControl1.LoadMxFile(@"C:\Users\DSF\Desktop\data\Untitled.mxd");}/// <summary>/// 导出按钮/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnExport_Click(object sender, EventArgs e){StringBuilder filter = new StringBuilder();filter.Append("PDF(*.pdf)|*.pdf|");filter.Append("SVG(*.svg)|*.svg|");filter.Append("AI(*.ai)|*.ai|");filter.Append("EMF(*.emf)|*.emf|");filter.Append("EPS(*.eps)|*.eps|");filter.Append("BMP(*.bmp)|*.bmp|");filter.Append("PNG(*.png)|*.png|");filter.Append("JPEG(*.jpeg)|*.jpeg|");filter.Append("TIFF(*.tif)|*.tif|");filter.Append("GIF(*.gif)|*.gif");// 保存文件SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Title = "导出";saveFileDialog.Filter = filter.ToString();saveFileDialog.RestoreDirectory = true;if (saveFileDialog.ShowDialog() == DialogResult.OK){ExportMap(saveFileDialog.FileName, 300, 1);}}/// <summary>/// 导出地图方法/// </summary>/// <param name="filePath">导出路径</param>/// <param name="resolution">导出分辨率</param>/// <param name="resample">重采样登记</param>private void ExportMap(string filePath, double resolution, int resample){IExport pExport = null;switch (System.IO.Path.GetExtension(filePath)){case ".pdf":pExport = new ExportPDF() as IExport;break;case ".svg":pExport = new ExportSVG() as IExport;break;case ".ai":pExport = new ExportAI() as IExport;break;case ".emf":pExport = new ExportEMF() as IExport;break;case ".eps":pExport = new ExportPS() as IExport;break;case ".bmp":pExport = new ExportBMP() as IExport;break;case ".png":pExport = new ExportPNG() as IExport;break;case ".jpeg":pExport = new ExportJPEG() as IExport;break;case ".tif":pExport = new ExportTIFF() as IExport;break;case ".gif":pExport = new ExportGIF() as IExport;break;default:pExport = new ExportPDF() as IExport;break;}// 若导出图片,则设置重采样等级if (pExport is IOutputRasterSettings){IOutputRasterSettings pOutputRasterSettings = pExport as IOutputRasterSettings;pOutputRasterSettings.ResampleRatio = resample;}// 若导出TIFF,则设置坐标信息if (pExport is IExportTIFF){IExportTIFF pExportTIFF = pExport as IExportTIFF;pExportTIFF.GeoTiff = true;pExportTIFF.CompressionType = esriTIFFCompression.esriTIFFCompressionJPEG;IWorldFileSettings pWorldFileSettings = pExport as IWorldFileSettings;pWorldFileSettings.MapExtent = axMapControl1.Extent;}// 若导出PDF,则设置PDF格式if (pExport is IExportPDF){IExportPDF pExportPDF = pExport as IExportPDF;pExportPDF.Compressed = true;pExportPDF.EmbedFonts = true;pExportPDF.ImageCompression = esriExportImageCompression.esriExportImageCompressionNone;}// 获取分辨率IActiveView pActiveView = axMapControl1.ActiveView;int screenResolution = (int)axMapControl1.ActiveView.ScreenDisplay.DisplayTransformation.Resolution;int outputResolution = (int)resolution;// 计算导出范围tagRECT rect = new tagRECT();rect.left = 0;rect.top = 0;rect.right = (int)(1.0 * pActiveView.ExportFrame.right * outputResolution / screenResolution);rect.bottom = (int)(1.0 * pActiveView.ExportFrame.bottom * outputResolution / screenResolution);// 设置导出范围IEnvelope pEnvelope = new Envelope() as IEnvelope;pEnvelope.PutCoords(rect.left, rect.bottom, rect.right, rect.top);// 导出参数pExport.Resolution = outputResolution;pExport.ExportFileName = filePath;pExport.PixelBounds = pEnvelope;// 导出pActiveView.Output(pExport.StartExporting(), outputResolution, ref rect, pActiveView.Extent, null);pExport.FinishExporting();pExport.Cleanup();}}
}

运行结果如下图所示:

3、区域导出

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using System.Text;
using System.Windows.Forms;namespace Win
{public partial class MainForm : Form{public MainForm(){InitializeComponent();axMapControl1.LoadMxFile(@"C:\Users\DSF\Desktop\data\Untitled.mxd");}/// <summary>/// 区域导出/// </summary>/// <param name="pTrackEnvelope">绘制的矩形</param>/// <param name="filePath">导出路径</param>/// <param name="resolution">导出分辨率</param>/// <param name="resample">重采样等级</param>private void ExportMap(IEnvelope pTrackEnvelope, string filePath, double resolution, int resample){IExport pExport = null;switch (System.IO.Path.GetExtension(filePath)){case ".pdf":pExport = new ExportPDF() as IExport;break;case ".svg":pExport = new ExportSVG() as IExport;break;case ".ai":pExport = new ExportAI() as IExport;break;case ".emf":pExport = new ExportEMF() as IExport;break;case ".eps":pExport = new ExportPS() as IExport;break;case ".bmp":pExport = new ExportBMP() as IExport;break;case ".png":pExport = new ExportPNG() as IExport;break;case ".jpeg":pExport = new ExportJPEG() as IExport;break;case ".tif":pExport = new ExportTIFF() as IExport;break;case ".gif":pExport = new ExportGIF() as IExport;break;default:pExport = new ExportPDF() as IExport;break;}// 若导出图片,则设置重采样等级if (pExport is IOutputRasterSettings){IOutputRasterSettings pOutputRasterSettings = pExport as IOutputRasterSettings;pOutputRasterSettings.ResampleRatio = resample;}// 若导出TIFF,则设置坐标信息if (pExport is IExportTIFF){IExportTIFF pExportTIFF = pExport as IExportTIFF;pExportTIFF.GeoTiff = true;pExportTIFF.CompressionType = esriTIFFCompression.esriTIFFCompressionJPEG;IWorldFileSettings pWorldFileSettings = pExport as IWorldFileSettings;pWorldFileSettings.MapExtent = axMapControl1.Extent;}// 若导出PDF,则设置PDF格式if (pExport is IExportPDF){IExportPDF pExportPDF = pExport as IExportPDF;pExportPDF.Compressed = true;pExportPDF.EmbedFonts = true;pExportPDF.ImageCompression = esriExportImageCompression.esriExportImageCompressionNone;}// 分辨率IActiveView pActiveView = axMapControl1.ActiveView;int screenResolution = (int)axMapControl1.ActiveView.ScreenDisplay.DisplayTransformation.Resolution;int outputResulotion = (int)resolution;// 计算导出区域tagRECT rect = new tagRECT();pActiveView.ScreenDisplay.DisplayTransformation.TransformRect(pTrackEnvelope, ref rect, 8);rect.right = (int)(1.0 * (rect.right - rect.left) * outputResulotion / screenResolution);rect.bottom = (int)(1.0 * (rect.bottom - rect.top) * outputResulotion / screenResolution);rect.left = 0;rect.top = 0;// 设置导出区域IEnvelope pEnvelope = new Envelope() as IEnvelope;pEnvelope.PutCoords(rect.left, rect.top, rect.right, rect.bottom);pExport.ExportFileName = filePath;pExport.PixelBounds = pEnvelope;// 导出pActiveView.Output(pExport.StartExporting(), outputResulotion, ref rect, pTrackEnvelope, null);pExport.FinishExporting();pExport.Cleanup();}/// <summary>/// axMapControl1_OnMouseDown/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){// 绘制一个矩形框IEnvelope pTrackEnvelope = axMapControl1.TrackRectangle();if (pTrackEnvelope.IsEmpty){return;}// 导出文件类型dStringBuilder filter = new StringBuilder();filter.Append("PDF(*.pdf)|*.pdf|");filter.Append("SVG(*.svg)|*.svg|");filter.Append("AI(*.ai)|*.ai|");filter.Append("EMF(*.emf)|*.emf|");filter.Append("EPS(*.eps)|*.eps|");filter.Append("BMP(*.bmp)|*.bmp|");filter.Append("PNG(*.png)|*.png|");filter.Append("JPEG(*.jpeg)|*.jpeg|");filter.Append("TIFF(*.tif)|*.tif|");filter.Append("GIF(*.gif)|*.gif");// 保存文件SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Title = "导出";saveFileDialog.Filter = filter.ToString();saveFileDialog.RestoreDirectory = true;if (saveFileDialog.ShowDialog() == DialogResult.OK){ExportMap(pTrackEnvelope, saveFileDialog.FileName, 300, 1);}}}
}

运行结果如下图所示:

ArcEngine导出地图相关推荐

  1. arcgis server发布服务地图不显示_ArcGIS API for JS 导出地图,不限制尺寸

    最近在研究 ArcGIS 导出地图功能,折腾了许久,终于完成了. ArcGIS 自带的打印功能 ArcGIS Server 自带了一个打印地图服务. ArcGIS Server 自带打印地图服务 Ar ...

  2. arcgis直方图导出地图_利用Arcgis地图工具自动输出报告地图图纸

    大家在日常工作中经常会用到arcgis进行矢量的绘制,以完成规划,设计,以及测绘,监测一类的工作.这些工作的需要往往也伴随着需要完成项目报告,项目报告中会涉及到各种利用arcgis绘制的矢量图纸,这个 ...

  3. arcgis 界线外 遮盖_ArcGIS按行政界线批量导出地图

    准备材料:行政界线.地类图斑和栅格影像数据 第一步: 将行政界线和地类图斑的符号样式改成空心 这里我将行政区界线的宽度改成 1 地类图斑的线宽改成 0.3 (根据需要设置) 第二步: 打开地类图斑属性 ...

  4. ArcMap 通过瓦片导出地图

    1.加载瓦片后,切换到布局视图-会看到这个布局工具条 2.文件-页面和打印设置,设置好准备输出地图的宽度和高度 3.在布局视图中,移动地图到输出范围,放到地图到适合的比例尺 4.文件---导出地图,设 ...

  5. 基于C#的AE二次开发导出地图为JPG、TIF、PDF图片

    基于C#的AE二次开发导出地图为JPG.TIF.PDF图片 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.创建一个菜单或按钮,创建一个点击事件,粘贴代码即可实 ...

  6. vue-element-admin中导出excel和导出地图图片

    目录 一.导出excle 1.没有固定列的表格 2.表格中有固定列的表格(按1中导出,导出数据会重复) 二. 导出地图图片 一.导出excle 借助以下插件,框架中已存在(其他框架暂未测试,测试后会更 ...

  7. 【Arcmap导出地图】可控制影像精度

    今天发现用arcmap导出地图特别快,比globalmapper快了很多倍,先介绍如何操作,最后讲优缺点 导入影像,修改窗口 这里数据涉密问题,只用样例数据演示操作步骤 调整前 调整后 可以看到调整后 ...

  8. ArcGIS二次开发基础教程(03):保存文档和导出地图

    ArcGIS二次开发基础教程(03):保存文档和导出地图 保存文档 保存: //这里的path为全局变量 在打开文件获添加数据时赋值原路径 //判断打开文件是否为mxd文件 是则保存 不是则另存为 i ...

  9. 使用GeoServer导出地图数据GeoJSON并应用

    在项目中,需要使用乡镇街道的地图边界,之前一直使用的是百度地图或Echarts地图,其没有这部分行政区的数据,需要在第三方购买数据,其提供的是shp文件 主文件:counties.shp 索引文件:c ...

最新文章

  1. CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)
  2. 【网络安全】 利用 EHole 进行红队快速批量打点
  3. python多线程gil_Python 多线程、多进程 (一)之 源码执行流程、GIL
  4. 【Linux】一步一步学Linux——bzip2命令(65)
  5. android 第三方登录界面,Android App集成第三方登录与换肤指南
  6. 解读设计模式----单例模式(Singleton Pattern)
  7. 揭开HTTPS的神秘面纱
  8. 特殊的栈GetMin
  9. JS魔法堂:LINK元素深入详解
  10. 聊一聊我常用的6种绘制地图的方法
  11. python猜字游戏
  12. 手机电脑怎么上P站-国内版pixiv你可知晓
  13. 如何批量删除电脑上的空文件夹?
  14. 人脸识别实践(2) - 人脸识别系统展示
  15. Towards Two-Dimensional Sequence to Sequence Model和Two-Way Neural Machine Translation两篇论文简单分析
  16. Java笔记09——常用类
  17. Python abs()函数
  18. 大专生学Java找得到工作吗_工资如何?
  19. pdf编辑阅读器PDF Reader Pro for Mac
  20. windows7显示摄像头图标的方法

热门文章

  1. 前端框架UMI3基础知识和快速上手
  2. 【机器学习】泛化误差上界
  3. POJ 1625 Censored!
  4. amp;#9733;色盲悖论正解!
  5. 1-4 CAD 圆弧(arc)
  6. java神雕侠侣1古墓情缘游戏攻略_神雕侠侣古墓派后期攻略讲解
  7. 时间序列平稳性检验—R语言KPSS检验
  8. Android 学习笔记之二 Netspeed
  9. 移植u-boot v2018
  10. 《文明之光》第六章读书笔记