首页 > 其他分享 >ArcGIS工具 - 统计工具数量

ArcGIS工具 - 统计工具数量

时间:2023-01-09 20:47:57浏览次数:27  
标签:AddMessage ArcGIS toolbox 工具 csv arcpy 工具箱 统计

ESRI作为GIS行业中的龙头,代表产品ArcGIS也在不断地优化和升级,从10.0开始已发布了8个版本,其工具箱(ToolBox)是它一个特色,每个版本的工具箱数量是不相同的,为源地理来教您如何统计工具箱和工具个数和名称。

工具介绍

使用统计工具数量工具,可统计ArcMap中默认的工具箱和工具个数。工具界面如下:

img

如果不设置路径,仅输出日志。

img

如果设置输出文件路径,则可输出当前版本的工具箱和工具全部名称。

img

程序源码

统计工具数量工具的完整代码如下:

# -- coding:cp936 --
# ---------------------------------------------------------------------------
# 名称:PrintToolCount
# 功能:统计ArcMap中默认的工具箱和工具个数。
# 作者:为源地理
# 日期:2023.1.5
# 支持:wygis2022 1811335143
# 说明:同一软件版本,如果安装了其他扩展模块,统计的结果可能不同。
# ---------------------------------------------------------------------------

from imp import reload
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import codecs
import csv
import arcpy

try:
    # 参数1:输出CSV文件
    csv_file = arcpy.GetParameterAsText(0)

    f = None
    if len(csv_file) != 0:
        f = codecs.open(csv_file, 'w','utf_8_sig')
        csv_writer=csv.writer(f)
        
        # 写入标题行
        title=['工具箱名称','工具箱简称','工具名称']
        csv_writer.writerow(title)
    
    # 获取当前版本
    version= u"当前版本"
    infos = arcpy.GetInstallInfo()
    for key,value in infos.items():
        if key=="Version":
           version=  u"ArcMap{}".format(value)

    # 工具箱和工具数量统计
    toolboxes = arcpy.ListToolboxes()
    tools = arcpy.ListTools()
    arcpy.AddMessage(u"=========================")
    arcpy.AddMessage(u"{}共有{}个工具箱、{}工具。".format(version,len(toolboxes),len(tools)))
    arcpy.AddMessage(u"=========================")

    # 工具箱数量统计
    toolbox_dic={}
    arcpy.AddMessage(u"工具箱:")
    for toolbox in toolboxes:
        first=toolbox.index("(") 
        last = toolbox.index(")")
        toolboxName=toolbox[0:first]
        toolboxAlias=toolbox[first+1:last]
        toolbox_dic[toolboxAlias] =toolboxName 
        arcpy.AddMessage(u"工具箱:{0},别名:{1}".format(toolboxName,toolboxAlias))
    
    # 工具数量统计
    arcpy.AddMessage(u"工具:")
    for tool in tools:
        first=tool.index("_")
        toolName=tool[0:first]
        toolAlias=tool[first+1:]
        if toolAlias in toolbox_dic:
            arcpy.AddMessage(u"{}:{}".format(toolbox_dic[toolAlias],toolName))
            if len(csv_file) != 0:
                result=[toolbox_dic[toolAlias],toolAlias,toolName]
                csv_writer.writerow(result)
        else:
            arcpy.AddMessage(u"未知工具箱:{}".format(toolName))
            if len(csv_file) != 0:
                result=[u"未知工具箱","",toolName]
                csv_writer.writerow(result)
except arcpy.ExecuteError: 
    arcpy.AddError(arcpy.GetMessages(2))    
except: 
    e = sys.exc_info()[1]
    arcpy.AddError(e.args[0])  

版本选择

不同的人对版本需求和认识不同,下面仅代表我个人的观点:

  • 9.3:非常稳定,经典,英文版,有中文补丁,但淘汰;
  • 10.0:第一个中文版,最不稳定;
  • 10.2.2:功能全面,性能稳定,比较普遍之一;
  • 10.4:不太稳定。
  • 10.8:最后一个版本,不再有ArcMap10.9,解决了高分辨率屏显示、标注窗口卡顿问题;
  • Pro:全新的64位架构,话说会取代Desktop,但这个时间可能会有点久。就像CAD都出2023了,还是有人在使用CAD 2007.

如果项目使用推荐:10.2.2 > 10.8 > 10.1

如果学生使用推荐:10.8 、 Pro

标签:AddMessage,ArcGIS,toolbox,工具,csv,arcpy,工具箱,统计
From: https://www.cnblogs.com/wygeo/p/17038463.html

相关文章

  • 网卡IP地址信息一键查看工具V1.0-免费版
    1.简介:最近博主使用Python开发了一款小工具,它可以一键查看网卡的IP地址、子网掩码、默认网关和DNS信息以及MAC地址,简单方便!直接双击运行:2.下载地址:蓝奏云链接:https:/......
  • 用Java写一个PDF,Word文件转换工具
    前言前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具源码weloe/FileConversion(github.com)主要功能就......
  • 1月9日内容总结——linux相关知识简介、虚拟化软件vmware、远程链接工具xshell
    目录一、linux常见岗位二、计算机的种类与服务器三、服务器品牌四、服务器内部组成五、服务器磁盘阵列六、linux简介1、什么是linux2、linux发展史3、Linux系统的特点4、目......
  • 高通工具QXDM、QCAT和QPST的使用
    https://blog.csdn.net/qq_43804080/article/details/106121661QXDM,QPST和QCAT是Qualcomm高通公司针对高通芯片的抓包分析工具。QXDM抓包分析,QPST与手机com口连接,QCAT用......
  • [概率论与数理统计]笔记:3.1 随机向量的分布
    第三章随机向量3.1随机向量的分布随机向量及其分布函数概念\(X_1,X_2,\cdots,X_n\)是\(n\)个随机向量,则\((X_1,X_2,\cdots,X_n)\)是一个\(n\)维随机向量。\(n\)元......
  • 硬盘检测工具 Victoria 简单使用教程
    一、注意事项1.下载完成后不要在压缩包内运行软件直接使用,先解压;2.如果软件无法正常打开,请右键使用管理员模式运行。3.为确保检测结果准确(避免卡深灰块),运行Victo......
  • 内网通(局域网通信工具)
    内网通讯downloadhttps://pan.baidu.com/s/1HBbTay48eeSYLCsYE46Qrw?pwd=825t......
  • python实用工具
    日志记录工具代码(log_util.py)importosimportloggingimportlogging.configUSER_PATH=''#日志文件夹BASIC_PATH=os.path.join(os.path.dirname(os.path.......
  • MySQL统计一个数据库中所有表的数据量
    mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过selectcount再加起来也是可以的,不过表的数据有点多,不可能一个一个......
  • [VueJsDev] 基础知识 - asyncTool.js异步执行工具
    [VueJsDev]目录列表https://www.cnblogs.com/pengchenggang/p/17037320.htmlasyncTool.js异步执行工具:::details目录目录asyncTool.js异步执行工具Step.1:getA......