ArcGIS Pro脚本工具(15)——按字段属性值分类导图

news2025/1/17 21:56:49

之前做了配合地图系列批量导图的脚本工具

ArcGIS Pro脚本工具(9)——配合地图系列批量导图_学学GIS的博客-CSDN博客_arcgispro批量导出地图pngPro的地图系列是批量制图的利器,但是有个不便的地方,就是设置完成地图系列后,只能批量导出为PDF,而不能批量导出为JPG、PNG这些通用的图片格式。以上脚本即可实现将地图系列批量导出为PNG图像文件,但是使用起来还不够简单。另外有一些功能还需要加入。在示例脚本的基础上,增加实现上述功能的代码,可制作脚本工具的完整Python代码如下。不过帮助文档还是很贴心的为我们准备了解决方案。.........https://blog.csdn.net/baidu_28157641/article/details/125841844?spm=1001.2014.3001.5502经过网友提醒发现,有一种情况这个工具是满足不了的,那就是按字段属性值分类导图。

比如,有江西省所有的县, 现在需要按市级(下图中用颜色区分)各导出一张图,之前的配合地图系列批量导图工具是做不到的,因为地图系列是索引图层中的每个要素,而不是一类要素。

因此,需要开发一个新的工具,它可以根据索引图层的某个字段,将属性值相同的要素导出在一张图上。下面江西省所有县为例,按市级分类导图。

工具演示

 

工具脚本

import arcpy
import re

aprx = arcpy.mp.ArcGISProject("CURRENT")
lyt = aprx.activeView
mf = lyt.listElements("MAPFRAME_ELEMENT")[0]
map = aprx.activeMap

lyrName = arcpy.GetParameterAsText(0)
lyr = map.listLayers(lyrName)[0]
field = arcpy.GetParameterAsText(1)

cursor = arcpy.da.SearchCursor(lyr, field)
uniqueList = []

for row in cursor:
    v = row[0]
    if v not in uniqueList:
        uniqueList.append(v)

del cursor

map.clearSelection()

dpi = arcpy.GetParameter(2)

viewRules = arcpy.GetParameterAsText(3)
margin = arcpy.GetParameter(4)
dirpath = arcpy.GetParameterAsText(5)


def clean_invalid(filename: str):
    invalid_chars = '[?,*,:,<,>,\,/,|]'
    replace_char = '_'
    return re.sub(invalid_chars, replace_char, filename)


if viewRules == "无":
    for uniqueValue in uniqueList:
        lyr.definitionQuery = field + " = '" + uniqueValue + "'"
        extent = mf.getLayerExtent(lyr)
        mf.camera.setExtent(extent)
        mf.camera.scale = mf.camera.scale/(1-margin)
        pngName = clean_invalid(uniqueValue)
        lyt.exportToJPEG(dirpath + "\\" + pngName,
                         resolution=dpi)

elif viewRules == "固定比例":
    for uniqueValue in uniqueList:
        lyr.definitionQuery = field + " = '" + uniqueValue + "'"
        extent = mf.getLayerExtent(lyr)
        mf.panToExtent(extent)
        pngName = clean_invalid(uniqueValue)
        lyt.exportToJPEG(dirpath + "\\" + pngName,
                         resolution=dpi)

else:
    for uniqueValue in uniqueList:
        lyr.definitionQuery = field + " = '" + uniqueValue + "'"
        pngName = clean_invalid(uniqueValue)
        lyt.exportToJPEG(dirpath + "\\" + pngName,
                         resolution=dpi)

lyr.updateDefinitionQueries([])

工具参数

参数验证

class ToolValidator:
  # Class to add custom behavior and properties to the tool and tool parameters.

    def __init__(self):
        # set self.params for use in other function
        self.params = arcpy.GetParameterInfo()

    def initializeParameters(self):
        # Customize parameter properties. 
        # This gets called when the tool is opened.
        return

    def updateParameters(self):
        # Modify parameter values and properties.
        # This gets called each time a parameter is modified, before 
        # standard validation.
        if self.params[3].value=="无":
            self.params[4].enabled = True
        else:
            self.params[4].enabled = False
        return

    def updateMessages(self):
        # Customize messages for the parameters.
        # This gets called after standard validation.
        return

    # def isLicensed(self):
    #     # set tool isLicensed.
    # return True

    # def postExecute(self):
    #     # This method takes place after outputs are processed and
    #     # added to the display.
    # return

工具说明

  1. 需要先制作布局,布局只放置一个地图框
  2. 工具运行前请切换至布局视图

工具获取

代码可自取,需要完整工具请私信联系

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

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

相关文章

机器学习实战教程(13篇)

机器学习实战教程(13篇)这些网址非常适合想学习机器学习&#xff0c;却苦于没有项目&#xff08;尤其缺少数据&#xff09;的人。无意中看到&#xff0c;给自己做一个记录。机器学习实战教程&#xff08;一&#xff09;&#xff1a;K-近邻算法&#xff08;史诗级干货长文&#…

2022年度外设产品行业增长分析:鼠标、键盘同比增长27%

近年来&#xff0c;信息技术迅速发展&#xff0c;网民数量不断增长&#xff0c;深刻改变着社会的运作方式&#xff0c;对社会生产、商业运作模式等方面产生重大影响。广泛的行业应用为网络设备品牌商、制造商带来了差异化的细分市场&#xff0c;各类互联网设备接入数量也快速增…

混合空间增强

混合图像增强是一种图像处理技术&#xff0c;用于在不损失图像细节的情况下增强图像的对比度和亮度。它通常通过将图像拆分成多个通道&#xff0c;然后对每个通道进行独立处理来实现。 综合利用平滑滤波&#xff0c;锐化滤波&#xff0c;灰度拉伸等技术对图像进行处理&#xff…

【Linux】sudo给某条指令提权

sudo1.为什么要有sudo2.使用sudo提权的前提2. 在root下添加普通用户到信任列表3.验证4.总结1.为什么要有sudo 首先我们要知道&#xff0c;普通用户是受Linux的权限约束的。就比如普通用户对自己的家目录有完全管理的权限&#xff0c;但是不能随意查看其他人的家目录&#xff0c…

1.机器学习中的关键组件

1.机器学习中的关键组件 无论什么类型的机器学习问题&#xff0c;都会遇到这些组件&#xff1a; 可以用来学习的_数据_&#xff08;data&#xff09;&#xff1b;如何转换数据的_模型_&#xff08;model&#xff09;&#xff1b;一个_目标函数_&#xff08;objective function…

JavaScript 输出

文章目录JavaScript 输出JavaScript 显示数据使用 window.alert()操作 HTML 元素在本教程中写到 HTML 文档写到控制台您知道吗?JavaScript 输出 JavaScript 没有任何打印或者输出的函数。 JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据&#xff1a; 使用 wi…

TiDB 6.5 LTS 发版

在 2023 伊始&#xff0c;我们很高兴向大家宣布&#xff0c;TiDB 6.5 LTS 版本已经发布了。这是 TiDB V6 的第二个长期支持版&#xff08;上一个是 TiDB 6.1&#xff09;&#xff0c;除了携带了诸多备受期待的新特性&#xff0c;同时也将得到 TiDB 开发社区的长期维护&#xff…

设计模式(一):DDD领域驱动设计

DDD重架构&#xff0c;轻业务&#xff01; – 从单体架构开始快速验证DDD设计模式 贫血模型充血模型防腐层 DDD四层架构规范DDD单体架构和微服务架构隔离 本地单体SPI 插拔式扩展业务模式Nacos 插拔式扩展业务模式 ---- 服务名作为服务service code DDD清晰架构 – 构建领域仓库…

加解密与HTTPS(5)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;咱们大学读完之后有毕业证书&#xff0c;并且这个证书可以在学信网查询。专业上有注会、CCIE、律师证等&#xff0c;可以在国家职业认证机构或委托机构的网站上查…

【UCIe】UCIe DLP/DLLP 介绍

&#x1f525;点击查看精选 UCIe 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0…

DNS协议——域名解析

DNS协议 DNS协议是一个应用层协议&#xff0c;作用是域名解析   使用DNS协议的原因&#xff0c;就是因为哪怕是点分十进制&#xff0c;对于我们都不太友好&#xff0c;因此使用域名来代替IP地址&#xff0c;比如www.baidu.com   最开始的时候&#xff0c;DNS系统只是一个普…

java基于ssm的个人博客系统个人博客网站个人博客项目源码

简介 Java ssm开发的个人博客系统&#xff0c;可以发布博客&#xff0c;照片&#xff0c;站长留言。 演示视频 https://www.bilibili.com/video/BV1sf4y1y7Ne/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 技术 mysql,SSM,css,js,jq 功能 简单…

laravel5.5之laravel-admin的使用

目录 一、首先确保安装好了laravel&#xff0c;并且数据库连接设置正确 二、运行下面的命令来发布资源 三 、后台项目文件 四、静态文件 五、访问后台 六、参考文档 一、首先确保安装好了laravel&#xff0c;并且数据库连接设置正确 composer require encore/laravel-adm…

Verilog语法笔记(夏宇闻第三版)-简单的Verilog HDL模块

目录 简单的Verilog HDL程序介绍&#xff1a; 模块的结构 &#xff1a; 模块的端口定义&#xff1a; 模块内容&#xff1a; I/O说明的格式&#xff1a; 内部信号说明&#xff1a; 功能定义&#xff1a; 简单的Verilog HDL程序介绍&#xff1a; 下面先介绍几个简单的Veri…

高可用Keepalived在Linux中的应用

一、高可用 1.高可用介绍 &#xff08;1&#xff09;普通理解 两台服务器启动相同的业务系统&#xff0c;当有一台机器宕机&#xff0c;另外一台服务器快速接管服务&#xff0c;对于用户来讲是无感知的。 &#xff08;2&#xff09;专业理解 高可用是分布式系统架构设计中必…

Linux安装Docker与基本使用

Docker 常用于服务部署的一种方案 准备 1.云服务器或者虚拟机 2.Centos 系统 3.下载XFtp 和 XShell 安装Docker 首先删除系统中旧版本Docker或者残留文件 #卸载所有 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-lo…

Spring从入门到精通 | 动力节点老杜

目录 一、Spring启示录 1、OCP开闭原则 2、依赖倒置原则&#xff08;DIP原则&#xff09; 3、控制反转&#xff08;重点&#xff09; 4、Spring框架&#xff08;重点&#xff09; 二、Spring概述 Spring的8大模块 ​编辑 Spring特点 1、轻量 2、控制反转IOC 3、面向…

Qt Mac阻止和启用休眠

阻止电脑休眠&#xff0c;在win下是使用win api实现的&#xff0c;用Qt跨平台开发&#xff0c;实现Mac的阻止休眠&#xff0c;也需要Mac本身的api来实现。经过网上查资料&#xff0c;找到了一个能用的&#xff0c;链接如下。原生mac开发用的是Object-c&#xff0c;所以该实现用…

Kyligence 客户案例“泰康集团精细化经营分析与运营平台”获评数据智能最佳实践案例

近日&#xff0c;“2022 爱分析中国数据智能最佳实践案例”评选结果正式揭晓。Kyligence 携手泰康集团申报的“泰康集团精细化经营分析与运营平台”项目经过多轮角逐脱颖而出&#xff0c;最终获评“中国数据智能最佳实践案例”。同时&#xff0c;Kyligence 通过综合能力评估&am…

Linux Shell脚本编程提高

Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应…