【ArcGIS Pro二次开发】(52):布局导出图片(批量)

news2024/11/24 1:53:46

在ArcGIS Pro中设定好布局后,可以直接导出为各种类型的图片。

这是很基本的功能,但是如果你的布局很多,一张一张导图就有点费劲。

之前有网友提出希望可以批量导图,要实现起来并不难,于是就做了这个工具。


一、要实现的功能

如上图所示,点击【制图相关】面板下【导出布局(批量)】按钮,弹出工具框如下:

输入参数中:

1、要导出图片的文件夹位置。

2、导出图片类型。这里预置了PNG,JPG和PDF这三种常用的图片类型,如果还有需求可以再添加。

3、导出图片分辨率,默认设置为300,可手动调整。

示例工程中有2个布局,点击执行后生成结果如下:


二、实现流程

工具的核心代码并不多。

首先,获取当前工程的所有布局:

                // 获取当前工程中的所有LayoutProjectItem
                IEnumerable<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   // 图层  属性
                        };

导出时需要判断一下图片格式:

                        // 导出JPG
                        if (pic_type == "jpg")
                        {
                            layout.Export(JPG);
                        }
                        // 导出PNG
                        if (pic_type == "png")
                        {
                            layout.Export(PNG);
                        }
                        // 导出PDF
                        if (pic_type == "pdf")
                        {
                            layout.Export(PDF);
                        }

以上便实现了工具的主要功能。


三、工具文件分享

我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:

【ArcGIS Pro二次开发】:CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter系列(3):如何将Flutter项目打包成Android安装包

将Flutter项目打包成Android安装包&#xff0c;主要步骤如下&#xff1a; 一、生成key 进入jdk的bin目录下&#xff1a; keytool -genkey -v -keystore D:\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key 大概会有密码等参数&#xff0c;根据自身需要&#x…

软工导论知识框架(一)软件工程学概述

本贴为B站大连工业大学老师的网课笔记&#xff0c;教材为张海藩第6版&#xff0c;适用于考研和期末复习。 导图比较拥挤&#xff0c;看不清可以单独保存或者放大页面。 一.软件&#xff1a; 软件指的是计算机程序、文档运行程序必须的数据、方法与规则。 方法指的是软件开发…

SpringCloud-Alibaba之Sentinel熔断与限流

一、下载安装运行 http://localhost:8080进行访问 登录账号和密码均为sentinel 二、创建工程&#xff0c;并注册到nacos服务中心 依赖spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-alibaba-sentinel sentine-datasource-nacos (持久化)配置文件 se…

LAXCUS分布式操作系统:人工智能最后一公里

随着人工智能技术的飞速发展&#xff0c;越来越多的应用场景开始涌现。然而&#xff0c;在实际应用中&#xff0c;人工智能技术仍然面临着许多挑战&#xff0c;其中最大的挑战之一就是如何实现人工智能的“最后一公里”。这一问题主要体现在以下几个方面&#xff1a; 计算资源…

【UniApp开发小程序】”我的“界面实现+“信息修改“界面实现+登出账号实现+图片上传组件【基于若依管理系统开发】

文章目录 界面实现界面效果我的修改信息 “我的”界面实现api页面退出账号让自我介绍只显示一行&#xff0c;结尾多余的字使用...代替跳转到信息修改页面 信息修改界面实现api页面动态给对象设置属性名和值修改密码图片上传组件 部分后端代码Controller 界面实现 界面效果 我…

CTF PWN-攻防世界CGfsb格式化字符串漏洞

文章目录 前言格式化字符串漏洞格式化字符串漏洞基本原理简单典型案例 漏洞的危害与利用拒绝服务攻击内存数据读取内存数据覆盖 攻防世界&#xff1a;CGfsg题目思路简析任意地址覆写 总结 前言 距离 2021 年年底短暂接触学习 CTF PWN 相关知识&#xff08;CTF PWN-攻防世界XCT…

Matlab对FS32K144编程--CAN通讯

1、系统运行时间周期-10ms 2、配置CAN通讯初始化---波特率&#xff1a;500k&#xff0c;测试用CAN0 3、设置初始化配置优先级最高 4、清除CAN接受中断标志位初始化--仅运行一次&#xff0c;把要接受的CAN地址都要配置一下&#xff0c;如ID:0X245 5、建立全局变量--从单片机向外…

Android Studio安装和设置SDK、Gradle(国内源)、AVD下载目录详细教程

本机环境&#xff1a;win11家庭版 Android Studio版本&#xff1a;android-studio-2022.2.1.20-windows 文章目录 安装Android Studio官网下载安装Android Studio设置Android Studio的gradle使用的JDK版本设置Android Studio的SDK下载目录设置虚拟设备内存 设置Android Studio…

MySQL主从复制原理及实验

原理 1.环境搭建 1.需要两台服务器&#xff0c;如我的分别是&#xff1a; 1. -》 192.168.197.146---主库 2. -》 192.168.197.147---从库 2.分别关闭防火墙或者放行mysql端口号3306 如&#xff1a; systemctl stop firewalld systemctl disable firewalld 2.配置主库…

iOS pod EaseIMKit库如何放在本地使用

在使用环信EaseIMKit库的时候&#xff0c;发现有些开发者需要改动库中的一些逻辑&#xff0c;或者有UI上的一些调整&#xff0c;如果直接去改pods里面的库&#xff0c;在之后的库版本升级会把之前修改过的代码覆盖掉&#xff0c;这个时候我们就需要pod指向本地的库&#xff0c;…

vue父组件和子组件数据传递

vue --父组件向子组件传递数据 父组件&#xff1a; <template><div class"parent"><p>父组件&#xff1a;{{ msg }}</p><Child message"Hello, I am parent!"></Child></div> </template><script>…

NetSuite财务报表General Ledger Report的缺陷及改造案例

本周有用户提到一个特殊的业务场景&#xff0c;比较有代表性&#xff0c;在此分享。 问题 “如果在一张JE中&#xff0c;某个科目既有借又有贷&#xff0c;金额相同。那么在General Ledger Report中此JE的借贷都显示为0。这与事实不符&#xff0c;所以是不对的。” JE 155&a…

【JavaEE】Spring中注解的方式去存储Bean对象

Spring的开发要点总结 文章目录 【JavaEE】Spring的开发要点总结&#xff08;2&#xff09;1. 通过类注解的方式存储Bean对象1.1 五大 类注解1.1.1 Controller 控制器存储1.1.2 Service 服务存储1.1.3 Repository 仓库存储1.1.4 Component 组件存储1.1.5 Configuration 配置存储…

对比CahtGPT Bard Claude2对中文的理解

对比CahtGPT Bard Claude2对中文的理解 今天简单测试了一下目前这三个很火的模型对中文的理解能力 简单问题 鲁迅和周树人的关系 Bard CahtGPT Claude 介绍一下平凡的世界这本书 Bard CahtGPT

ES6 (js)

学习了很多vue的视频&#xff0c;还有nuxt的&#xff0c;还是不会。 还是要学ES6 本文的大部分出自小马老师的资料&#xff0c;还有曾大佬的文章 变量&#xff08;Let 和 const&#xff09; 在es6中&#xff0c;多用let 和const 来声明变量类型。因为var 会提前声明&#xff0…

【JDBC系列】- 核心API之preparedstatement用法

核心API之preparedstatement用法 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学习心得&#xff0c;…

docker学习笔记——狂神说视频学习笔记

Ubuntu上docker安装 UBUNTU 20.04 LTS 安装DOCKER看高博主的博文&#xff0c;一键复制命令安装即可。 docker命令 docker version查看你docker版本信息 docker info显示docker系统级别的信息 docker --helpdocker命令查询 docker docs的referrence介绍了docker的详细命令 …

chrome查看浏览器内核日志

由于经常在网页上调试播放音视频&#xff0c;但是总遇到一些未知原因&#xff0c;导致无法正常播放&#xff0c;亟需查看浏览器内核日志&#xff0c;分析原因&#xff0c;做一下笔记。 (1) 查看浏览器快捷键属性 &#xff08;2&#xff09;在快捷键启动位置补充参数 --enable-…

[ 容器 ] Docker 的数据管理

目录 一、Docker 的数据管理1.1 数据卷2. 数据卷容器 二、 端口映射三、容器互联&#xff08;使用centos镜像&#xff09;四、Docker 镜像的创建1&#xff0e;基于现有镜像创建2&#xff0e;基于本地模板创建3&#xff0e;基于Dockerfile 创建3.1 联合文件系统&#xff08;Unio…

vue3前端分页,全选翻页状态保持

直接贴代码&#xff0c;代码中有注释 <template><div class"viewer-container" id"viewer-container"><!-- 表格 --><el-table:row-key"getRowKeys":data"data.tableDataCopy"style"width: 100%"ref&…