ESRI作為GIS行業中的龍頭,代表產品ArcGIS也在不斷地優化和升級,從10.0開始已釋出了8個版本,其工具箱(ToolBox)是它一個特色,每個版本的工具箱數量是不相同的,為源地理來教您如何統計工具箱和工具個數和名稱。
使用統計工具數量工具,可統計ArcMap中預設的工具箱和工具個數。工具介面如下:
如果不設定路徑,僅輸出紀錄檔。
如果設定輸出檔案路徑,則可輸出當前版本的工具箱和工具全部名稱。
統計工具數量工具的完整程式碼如下:
# -- 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])
不同的人對版本需求和認識不同,下面僅代表我個人的觀點:
如果專案使用推薦:10.2.2 > 10.8 > 10.1
如果學生使用推薦:10.8 、 Pro