這篇文章主要介紹自定義腳本文件以及腳本共享的一些知識點。
目錄
1. 自定義腳本工具
1.1 零散知識點
- ModelBuilder創建的模型工具被保存在
工具箱文件(.tbx)
中,因此模型只能在arcmap或者arccatalog的內部運行。 - 一個工具箱對應一個.tbx文件,它既可以放在
文件夾
中,也可以放在數據庫
中。 - 只有當工具箱具有
寫權限
時,才能向工具箱中添加工具。因此對於arcgis提供的arctoolbox系統工具,它是被封裝了的,我們不能向裏面隨意添加工具。 - 在添加腳本工具時(右鍵工具箱—Add—Script),嚮導中的
腳本描述(Description)文本
將自動添加到該工具箱的help面板中。
“Always run in foreground”
複選框選中後,即使我們在arcmap或者arccatalog中的【Geoprocessing】—【Optional】中選擇了後臺處理,該腳本工具也將在前臺運行
。(後臺運行的意思是允許工具在運行的同時繼續操作arcgis軟件)
“Run python script in process”
複選框默認選擇的,表示在進程中運行此腳本,通常情況下速度更快。
arcpy.GetParameterAsText()
// 函數將以字符串的形式接收參數,無論原始輸入的參數是什麼數據類型,它終究將返回一個字符串型。
arcpy.GetParameter()
// 能夠將獲取的參數存入列表中,也就是說,它可以獲取具有多值的參數。
1.2 派生數據
在創建腳本工具時,對於參數Type可以選擇爲Derived
,這表示這是一個派生數據:
派生數據在工具界面是不顯示的,其具體使用情況如下:
- 當輸出的結果不是數據集而是
一個值
時使用派生數據; - 輸出結果需要
根據其他參數信息創建
時使用派生數據; 不生成新的結果
,只是對於輸入參數進行修改時使用派生數據;如修改表的字段名等等。
1.3 創建腳本時參數屬性設置介紹
創建腳本時,每個參數有些具體的屬性設置,下面來具體介紹一下屬性的含義。
Default
:設置該參數的默認值,如果設置了之後,Environment屬性將不可用;Environment
:設置環境,如果設置了參數的該屬性,那麼參數的默認值將從地理處理環境
中獲得。因此Default和Environment屬性設置一個就可以了。MultiValue
:多值參數將以字符串形式傳遞給腳本,每個參數值之間由分號;
隔開,因此可以用python的split函數
將字符串分割成列表,然後逐個取出值。Symbology
:默認情況下,腳本的輸出數據集將會自動添加到arcmap中,當然我們也可以在arcmap中的Geoprocessing—Options的對話框中設置Display/Temporary Data選項。Symbology將定義圖層文件,對於輸出結果的數據集有效,當我們在arcmap中加載輸出的結果數據時,它就將按照我們定義的符號系統進行繪製展示。
1.4 處理消息
在腳本編寫時,往往需要根據需求打印出來一些數據信息或者腳本運行消息。常用的消息處理方法如下:
arcpy.AddMessage(需要添加的消息:字符串形式)
arcpy.AddWarning(需要添加的警告消息:字符串形式)
arcpy.AddError(需要添加的錯誤消息:字符串形式)
## 該函數可以使用工具的系統消息
arcpy.AddIDMessage(消息類型,消息ID,{參數1},{參數2})
## 其中,消息類型有:Error、Information、Warning
1.5 自定義進度對話框
arcpy中進度條有兩種:
- 默認進度條
- 步驟進度條
arcpy中進度條函數:
arcpy.SetProgressor(進度條類型,{標籤顯示內容},{初始值},{結束值},{步長}) //創建進度條對象
arcpy.SetProcessorLabel(標籤內容) //更新進度條標籤的現實內容
arcpy.SetProgressorPosition() //根據工具執行的速度移動步驟進度條
arcpy.ResetProgressor() //重置進度條
2. 共享腳本工具
2.1 在arccatalog中顯示.py文件
打開ArcCatalog,菜單欄Customize—ArcCatalog Options—File Types
中添加.py文件即可。
然後就可以在旁側的目錄樹中看到.py文件了:
2.2 在腳本中獲取此腳本文件的路徑
scriptpath=sys.path[0]
scriptpath=os.getcwd()
2.3 利用地理處理包分享工具
地理處理包是一個後綴名爲.gpk
的壓縮文件。通過Result窗口中的結果來創建,可用於工具共享。具體創建流程如下:
- 在arcgis中添加數據;
- 運行工具來創建地理處理工作流;
- 在Result根據需要選擇一個或者多個處理結果,然後右鍵,選擇Share As—Geoprocessing Package;
- 設置相關參數,生成地理處理包,並共享,但是需要登陸esri賬戶:
- 需要注意的是,如果採用的是
腳本工具
,需要講將本工具所用到的.py文件
也需要包含到此地理處理包中。
2.4 內嵌腳本分享工具
腳本可以內嵌到工具箱中然後用於共享:
- 右鍵腳本工具,選擇
Import Script
即可。 - 當腳本作爲工具導入到工具箱中後,就不再需要腳本文件,也就是以後只需要共享.tbx問價 即可,不需要提供.py文件來保證腳本的運行。
將腳本從內嵌工具中提出來:
- 右鍵腳本工具,選擇
Export Script
可以獲取原始腳本的拷貝文件。
2.5 腳本和工具一起拷貝分享
最後一個比較傻白甜,就是把你的腳本和工具tbx一起拷貝給對方,注意工具中最好使用相對路徑。
–原創文章,轉載必須註明出處–