ArcGIS使用Python腳本工具


    在Pyhton寫的一些代碼,用戶交互不方便,用戶體驗比較差,不方便重用。在ArcGIS中可以將用寫的Python代碼導入到ToolBox中,這樣用起來就比較方便了。這里用按要素裁剪柵格的Python來演示如何導入ArcGIS中。代碼如下:

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import arcpy
import string
from arcpy.sa import *
 
try:
   raster = arcpy.GetParameterAsText(0) #要裁剪的柵格
   clip_feat = arcpy.GetParameterAsText(1) #裁剪要素類
   field = arcpy.GetParameterAsText(2) #命名字段
   outworkspace = arcpy.GetParameterAsText(3) #命名字段裁剪后輸出目錄
 
   for row in arcpy.SearchCursor(clip_feat):
      mask=row.getValue("Shape")
      outPath=outworkspace+"\\"+str(row.getValue(field))
      outExtractByMask = ExtractByMask(raster,mask)
      outExtractByMask.save(outPath)
 
except arcpy.ExecuteError:
   print arcpy.GetMessages()

  

    在用戶工具箱中新建工具箱(在系統工具箱中不能新建),在工具箱右鍵,添加腳本;

    輸入名稱、標簽、描述等信息。下一步,選擇腳本文件。(這里需要注意的是:一定要勾選"存儲相對路徑名"這個選項)

    設置參數,這是最重要的一步。其中參數即代碼中GetParameterAsText(n),並選擇合適的數據類型,在參數屬性中也可以進行相關設置。如果輸出柵格名稱按裁剪要素中的某個字段,需要設置"獲取息"屬性,還要進行過濾一下。

    設置好一切參數過后,就可以來進行測試了。在本機上測試通!

    接下來便是怎樣移植到其他電腦了的問題了。前面我說說過要存儲為相對路徑,否則,將報錯00576:腳本工具使用的腳本未處於所需位置。創建腳本工具時,有一個選項用於存儲相對路徑名(而不是絕對路徑名)。設置此選項后,腳本的相對位置和保存腳本工具的工具箱必須保持不變。執行工具時移動兩者中的任何一個都會出現此錯誤。

但改為相對路徑后,在其他電腦上也能正常運行,但彈出了警告窗口。原因是客戶機上沒有勾選擴展模塊相應的功能。這個示例需要勾選空間分析模板,因為使用了按掩膜提取這個工具。這個腳本實現的詳情參考:使用Python腳本批量裁切柵格

發布給他人,涉及到個人知識產權的問題,怎樣讓他人使用工具,又不能看到腳本代碼?如果編輯調試完成了,在腳本工具右鍵可導入腳本。

設置密碼后,即可。

必須注意的是:整個代碼中不能有中文字符,否則,不能正常導入腳本,發布出去的腳本工具就有問題。沒辦法,對中文支持不好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM