在ArcGIS Pro中设定好布局后,可以直接导出为各种类型的图片。
这是很基本的功能,但是如果你的布局很多,一张一张导图就有点费劲。
之前有网友提出希望可以批量导图,要实现起来并不难,于是就做了这个工具。
一、要实现的功能
如上图所示,点击【制图相关】面板下【导出布局(批量)】按钮,弹出工具框如下:
输入参数中:
1、要导出图片的文件夹位置。
2、导出图片类型。这里预置了PNG,JPG和PDF这三种常用的图片类型,如果还有需求可以再添加。
3、导出图片分辨率,默认设置为300,可手动调整。
示例工程中有2个布局,点击执行后生成结果如下:
二、实现流程
工具的核心代码并不多。
首先,获取当前工程的所有布局:
// 获取当前工程中的所有LayoutProjectItemIEnumerable<LayoutProjectItem> layoutProjects = Project.Current.GetItems<LayoutProjectItem>();await QueuedTask.Run(() =>{foreach (LayoutProjectItem layoutProject in layoutProjects){// 获取layout Layout layout = layoutProject.GetLayout();// TODO});
然后就可以导出了,不过要先设置好导出的图片格式:
// JPG图片属性JPEGFormat JPG = new JPEGFormat(){HasWorldFile = true,Resolution = dpi, // 分辨率OutputFileName = filePath + @"\" + layout.Name + @".jpg", // 输出路径};// PNG图片属性PNGFormat PNG = new PNGFormat(){HasWorldFile = true,Resolution = dpi, // 分辨率OutputFileName = filePath + @"\" + layout.Name + @".png", // 输出路径};// PDF图片属性PDFFormat PDF = new PDFFormat(){OutputFileName = filePath + @"\" + layout.Name + @".pdf", // 输出路径Resolution = dpi, // 分辨率DoCompressVectorGraphics = true, // 是否压缩矢量图形DoEmbedFonts = true, // 是否执行嵌入字体 HasGeoRefInfo = true, // 是否具有地理参考信息ImageCompression = ImageCompression.Adaptive, // 图形压缩.自适应ImageQuality = ImageQuality.Best, // 图形质量.最好LayersAndAttributes = LayersAndAttributes.LayersAndAttributes // 图层 属性};
导出时需要判断一下图片格式:
// 导出JPGif (pic_type == "jpg"){layout.Export(JPG);}// 导出PNGif (pic_type == "png"){layout.Export(PNG);}// 导出PDFif (pic_type == "pdf"){layout.Export(PDF);}
以上便实现了工具的主要功能。
三、工具文件分享
我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:
【ArcGIS Pro二次开发】:CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。