ArcGIS工具 - 統計工具數量

為源地理發表於2023-01-09

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

相關文章