ArcGIS—基於Python的腳本編程(8)

這篇文章主要介紹自定義腳本文件以及腳本共享的一些知識點。

目錄


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一起拷貝給對方,注意工具中最好使用相對路徑。


–原創文章,轉載必須註明出處–

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章