免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 4603|回复: 30
收起左侧

[二次开发] ArcGIS工具 - 统计工具数量

    [复制链接]

4

主题

1122

铜板

10

好友

技术员

Rank: 3Rank: 3

积分
87
QQ
发表于 2023-1-9 20:50 | 显示全部楼层 |阅读模式
本帖最后由 wygeo 于 2023-1-9 20:52 编辑

ESRI作为GIS行业中的龙头,代表产品ArcGIS也在不断地优化和升级,从10.0开始已发布了8个版本,其工具箱(ToolBox)是它一个特色,每个版本的工具箱数量是不相同的,为源地理来教您如何统计工具箱和工具个数和名称。一、工具介绍
使用统计工具数量工具,可统计ArcMap中默认的工具箱和工具个数。工具界面如下:
工具参数.png
如果不设置路径,仅输出日志。
执行结果.png
如果设置输出文件路径,则可输出当前版本的工具箱和工具全部名称。
输出表格.gif
二、程序源码
统计工具数量工具的完整代码如下:
  1. # -- coding:cp936 --
  2. # ---------------------------------------------------------------------------
  3. # 名称:PrintToolCount
  4. # 功能:统计ArcMap中默认的工具箱和工具个数。
  5. # 作者:为源地理
  6. # 日期:2023.1.5
  7. # 支持:wygis2022 1811335143
  8. # 说明:同一软件版本,如果安装了其他扩展模块,统计的结果可能不同。
  9. # ---------------------------------------------------------------------------

  10. from imp import reload
  11. import sys
  12. reload(sys)
  13. sys.setdefaultencoding( "utf-8" )
  14. import codecs
  15. import csv
  16. import arcpy

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

  20.     f = None
  21.     if len(csv_file) != 0:
  22.         f = codecs.open(csv_file, 'w','utf_8_sig')
  23.         csv_writer=csv.writer(f)
  24.         
  25.         # 写入标题行
  26.         title=['工具箱名称','工具箱简称','工具名称']
  27.         csv_writer.writerow(title)
  28.    
  29.     # 获取当前版本
  30.     version= u"当前版本"
  31.     infos = arcpy.GetInstallInfo()
  32.     for key,value in infos.items():
  33.         if key=="Version":
  34.            version=  u"ArcMap{}".format(value)

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

  41.     # 工具箱数量统计
  42.     toolbox_dic={}
  43.     arcpy.AddMessage(u"工具箱:")
  44.     for toolbox in toolboxes:
  45.         first=toolbox.index("(")
  46.         last = toolbox.index(")")
  47.         toolboxName=toolbox[0:first]
  48.         toolboxAlias=toolbox[first+1:last]
  49.         toolbox_dic[toolboxAlias] =toolboxName
  50.         arcpy.AddMessage(u"工具箱:{0},别名:{1}".format(toolboxName,toolboxAlias))
  51.    
  52.     # 工具数量统计
  53.     arcpy.AddMessage(u"工具:")
  54.     for tool in tools:
  55.         first=tool.index("_")
  56.         toolName=tool[0:first]
  57.         toolAlias=tool[first+1:]
  58.         if toolAlias in toolbox_dic:
  59.             arcpy.AddMessage(u"{}:{}".format(toolbox_dic[toolAlias],toolName))
  60.             if len(csv_file) != 0:
  61.                 result=[toolbox_dic[toolAlias],toolAlias,toolName]
  62.                 csv_writer.writerow(result)
  63.         else:
  64.             arcpy.AddMessage(u"未知工具箱:{}".format(toolName))
  65.             if len(csv_file) != 0:
  66.                 result=[u"未知工具箱","",toolName]
  67.                 csv_writer.writerow(result)
  68. except arcpy.ExecuteError:
  69.     arcpy.AddError(arcpy.GetMessages(2))   
  70. except:
  71.     e = sys.exc_info()[1]
  72.     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


评分

参与人数 2铜板 +65 收起 理由
steelwire + 10 赞!
b176877840 + 55 地信网的成长离不开您的支持!

查看全部评分

53

主题

1万

铜板

28

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2469
发表于 2023-1-10 10:01 | 显示全部楼层
学习了。。。
回复

使用道具 举报

33

主题

4万

铜板

24

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
11766

活跃勋章

发表于 2023-1-10 11:45 | 显示全部楼层
学习了。
回复

使用道具 举报

0

主题

1万

铜板

3

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3290
发表于 2023-1-10 13:53 | 显示全部楼层
谢谢楼主!
回复

使用道具 举报

21

主题

9万

铜板

83

好友

地信学员

开开心心每一天

Rank: 12Rank: 12Rank: 12

积分
12839
发表于 2023-1-10 20:51 | 显示全部楼层
谢谢提供分享学习一下
回复 支持 反对

使用道具 举报

26

主题

2万

铜板

104

好友

地信贵宾

Rank: 13Rank: 13Rank: 13Rank: 13

积分
474895

精华勋章宣传勋章爱心勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章

QQ
发表于 2023-1-11 08:08 手机频道 | 显示全部楼层
看一看,学习一下
回复 支持 反对

使用道具 举报

0

主题

6266

铜板

4

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2141
发表于 2023-1-11 14:12 | 显示全部楼层
看看,学习学习
回复 支持 反对

使用道具 举报

1

主题

4497

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
293
发表于 2023-1-11 15:12 | 显示全部楼层
学习了,学习了啊
回复 支持 反对

使用道具 举报

1

主题

2347

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
334
发表于 2023-1-12 08:59 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

26

主题

2万

铜板

104

好友

地信贵宾

Rank: 13Rank: 13Rank: 13Rank: 13

积分
474895

精华勋章宣传勋章爱心勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章

QQ
发表于 2023-1-12 09:23 手机频道 | 显示全部楼层
我来了解一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表