python制作ArcGIS插件(1)


    ArcGIS從10.0開始支持addin(ArcGIS軟件中又叫作加載項)的方式進行插件制作。相對於以往9.x系列,addin的無論是從使用或者編寫都更加方便快捷。通過開發語言,可以制作ArcGIS Desktop各個軟件模塊的插件。

    Addin支持多種開發語言,如.net、java和python。其中.net和java需要配合ArcGIS的SDK,使用ArcObjects進行開發。其好處是ArcObjects可以非常細粒度的控制ArcGIS Desktop的各種操作;其困難之處就是ArcObjects非常龐大,學習成本非常高,一般只適合有多年編程經驗和熟悉ArcGIS的開發人員使用。Python語言進行Addin開發,非常適沒有編程能力,但又經常使用ArcGIS工具的人員使用。為什么這樣說呢?由於python語言非常簡潔,寫法獨特,由於適合於沒有學習過編程語言的人上手(沒有任何的編程語言羈絆有時候是件好事),而且ArcGIS內置了ArcPy,一個使用python進行ArcGIS調用的開發包,可以輕松調用ArcGIS Desktop的所有工具箱工具,並能通過python語言很好的進行擴展,可以說,使用python進行Addin開發,門檻相當低,而且快捷。但不足之處也是顯而易見的,就是ArcPy定位是工具級別的操作,粒度相對於ArcObjects 是非常大的,不適用做復雜的交互操作,如果是一些邏輯性比較強,與地圖交互不多的工作,可以使用python去創建插件來完成。

    所謂工欲善其事必先利其器。那么使用Python來做ArcGIS的Addin需要使用哪些工具呢?Esri提供了Python加載項向導工具來實現Addin界面的搭建,可以到Esri官網去下載該工具Python加載項向導 。從介紹來看,該設計器要求的最低ArcGIS版本為10.1 ,如下圖所示

 

 

       工具非常簡單和非常小,還不到7M的空間,主要用來設計插件的界面,並且將各個交互界面接口進行保留,具體的實現開發人員可以選用自己喜歡的python編輯器來實現程序編寫。下載下來是一個zip包,解壓后可以看到其文件結構,直接到其bin文件夾下,找到唯一一個可運行程序 addin_assistant.exe ,如下圖所示

 

 

雙擊運行該工具,進入其涉及界面,會提示選擇一個工程文件夾,如果是創建新的工程,建議選擇一個新的文件夾,如果是要打開已經存在的工程,則選擇工程所謂的文件夾即可,如下圖所示,使用一個新的文件夾來保存工程。

 

 

    點擊【確定】按鈕后,可以進入並輸入插件的一些信息,如插件的名稱、版本、公司、描述、作者及這個插件的圖標等,這些都將寫入插件的配置文件中。

 

 

     這些信息會在插件安裝的時候彈出提示。接下來就是關鍵部分了,就是創建插件的內容,如按鈕、面板、工具條、菜單等,這些可以在Add-In Contents 面板中設置。如下圖所示

 

             

 例如在該示例中,我們的目標是創建一個批量裁剪的工具,工具的要實現的工作都已經在上圖的描述中說明了,那么,采用工具條的形式進行創建,直接制作成為工具,可以選擇使用Toolbar。右鍵點擊Toolbar,新建一個Toolbar,並輸入該Toolbar的一些說明,如Caption。但ID方面建議這些都使用英文進行輸入,因為最終這部分的配置會預留一些界面的事件接口。

 

 

 

    在新建的toolbar右鍵點擊,可以新建一些界面元素,如按鈕、菜單、工具、面板、下拉菜單等

 

 

    同樣創建每一個界面元素,ID都建議使用英文,因為python語言本身對編碼有比較嚴格的限制。為了滿足批量裁剪的一些列要求,我們可以適當的定義一些界面,如下圖所示

 

 

   設計完成后,我們就可以點擊【save】按鈕保存工程了。至此,python加載項向導工具就可以歇歇了,生下來就是進行艱苦的代碼編寫了。接下來打開工程文件夾去看看其工程的結構。

 

 

這幾個文件和目錄有各自的作用

Images目錄:存放界面元素的各種圖片

 

 

 

Install   目錄:用於保存插件的源代碼,里面一般會生成【mytools_addin.py】文件,如果重新設計界面,則會有一系列的文件,命名方式為在文件名后面加上123這些數字編號。一些初始化代碼會寫在該文件中,從文件中可以看到,已經創建好了這些界面元素的一些配置和事件,后續工作只需要對該文件補充實現代碼即可

 

config.xml   : 記錄這插件的各種配置信息,例如文字說明,關聯的圖片、界面元素類型等

由於在設計器中使用了一些中文輸入,所以,配置文件中會存在一些編碼的轉化,如下圖

 

 

makeaddin.py : 插件生成的運行腳本,運行這個腳本會編譯插件,並在該工程目錄下生成最終可以安裝的插件。由於該文件也是個python腳本,是明碼編寫的,也可以用文本打開查看,但不要修改其代碼,因為后面我們還需要用python環境運行它。

 

 

雙擊該文件,使用python.exe來運行(安裝ArcGIS的時候會自動安裝上python環境,這個不需要自行安裝)

 

 

運行結束后,就可以生成一個最終的后綴為esriaddin 的文件,這就是arcgis的插件安裝包,其名稱與工程的文件夾相同,如下圖

 

 

README.txt  : 記錄工程的一些信息,一般可以忽略掉。

    接下來就可以雙擊這個插件進行安裝了,直接雙擊之后,可以看到之前創建工程時輸入的插件說明信息,如下圖

 

 

   點擊【Instrall Add-In】進行安裝,安裝完成后,可以在ArcMap菜單空白處點擊右鍵,將該工具調出來使用

 

 

    如要管理這些插件,可以在ArcMap的菜單【自定義】--【加載項管理器】中進行刪除

 

 

    由於該工具還沒有具體的代碼實現,因此,點擊任何的按鈕都沒有反應。在后面的章節中,我們會介紹如何實現這些功能。

轉自:https://blog.csdn.net/liyuanxiang1984/article/details/52774298


免責聲明!

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



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