ArcGIS API for javascript開發筆記(四)——GP服務調用之GP模型的規範化製作詳解

感謝一路走來默默陪伴和支持的你~~~

-------------------歡迎來訪,拒絕轉載-------------------


在之前的利用Python分析GP服務運行結果的輸出路徑 & 實現服務輸出路徑的本地化 這篇博客中一直留下了一個小小的伏筆,即GP模型的製作技巧,現在才得空整理出來。

很多情況下gp模型的構建需要編寫一定得python腳本,然而怎麼編寫python腳本呢?腳本又將怎麼添加到ArcGIS中運行呢?以及怎麼製作GP可以實現輸出的結果不受ArcGIS Server路徑的管理呢?下面以一個例子作爲實驗。

該gp實現的是:將已給定的包含X、Y座標的Excel風機屬性信息,轉化成Table表數據,再將Table表數據轉化成機位的空間點位數據,並關聯所有屬性信息,創建機位點位的空間參照,最終將風機點位數據輸出到指定的數據庫中,而整個工作流是一體化實現的。

 -------------------歡迎來訪,拒絕轉載-------------------

1.        模型創建的準備


爲了實現規範化的編寫和模型與數據及腳本的統一管理,在Arccatalog中創建如圖所示的文件夾結構,即在Mobile文件下創建Scratch、ToolData、SpatialReference、Script文件夾,以及名稱爲CreateGeoTurbine的工具箱,名稱爲CreateGeoTurbine的地圖文檔。

其中,Scratch可以理解爲臨時存放數據的容器,用於存放模型運行過程中不必要輸出的要素或文件,理論上這些要素或文件可以在模型完成時自動刪除。

     ToolData文件夾用於存放輸入數據,即Excel格式的風機屬性數據。

          SpatialReference文件夾用於存放由ArcGIS導出的投影文件,這裏所需的投影文件爲Beijing 1954 3 Degree GK CM 102E投影。

          Script用於存放模型構建中編寫的腳本文件。

          CreateGeoTurbine工具箱用於存放Model及添加可執行的腳本。

          CreateGeoTurbine地圖文檔用於存放輸出的風機的點位要素,爲後續生成移動數據庫做準備。

--------------------這是一條華麗麗的分割線---------------------

2.        編寫腳本

1)導入腳本運行所需要的模塊

2)創建腳本執行時可由用戶自定義的輸入輸出參數。

3)在Mobile文件夾下創建一個新的文件夾,文件夾的路徑與名稱作爲用戶輸入的參數,並將路徑與名稱連接在一起,以字符串的類型定義給OutFolder。

4)在輸出的文件夾OutFolder下生成新的文件地理數據庫,其名稱爲“GeoTurbine.gdb”,並將輸出路徑與數據庫名稱連接在一起,以字符串的類型定義給wrkspc。

5)在以wrkspc爲路徑的文件地理數據庫下,將Excel格式的風機屬性數據轉換成Table格式的表數據TurbineAttribute(因爲Excel不被識別,所以需要將Excel轉換ArcGIS所識別的Table格式)。

6)將Table中的Xcoord、Ycoord座標轉成點要素,名稱給定爲TurbinePoints,並輸出至創建的文件數據庫中。

7)爲生成的TurbinePoints要素定義投影座標。

8)以OBJECTID爲連接字段,對生成的風機要素TurbinePoints和生成的Table表TurbineAttribute進行連接,以獲取Table表中全部的字段。

-------------------------這是一條華麗麗的分割線-------------------------

3.        添加腳本

1)對編寫好的腳本文件,需要添加到ArcGIS中執行,添加腳本的方法,右鍵單擊創建的Toolbox工具箱,點擊添加Script。

2)爲添加的腳本命名,勾選作爲相對路徑存儲。

3)指定腳本文件存放的位置,這裏存儲在Mobile/Script目錄下。

4)設置腳本中可由用戶設置的參數,參數的設置與腳本中定義的參數相對應。設置IputFolderLocation,注意確認其DataType爲string,類型爲Required,Direction爲Input。在這裏並沒有以文件夾或路徑的數據類型作爲輸入,是因爲在後續發佈服務的GP工具裏,可以將這個路徑暴露給用戶,這一點很重要。

5)與上一步相似,設置Iput Folder Name,注意確認其DataType爲string,類型爲Required,Direction爲Input。

6)設置輸入參數Iput Excel File,注意確認其DataType爲File,類型爲Required,Direction爲Input。

 

7)設置參數OutputTable,注意確認其DataType爲Table,注意類型爲Derived,Direction爲Output。類型中有三個選項,分別爲:Optional、Requied、Derived,其中,Optional爲可選參數用戶不一定輸出;Requied爲必選參數,一定會輸出結果。Derived意味着用戶使用的工具不能手動爲參數輸入值,即路徑不可選(參數類型爲Derived時,Direction只能爲Output,且輸出的參數不會顯示出來)。

8)設置輸出參數OutputFC,注意確認其DataType爲Feature Class,類型爲Derived,Direction爲Output。

9)設置輸出參數Output Coordinate System,注意確認其DataType爲coordinate system,類型爲Required,Direction爲Input,單擊Finish完成腳本的添加。

10)運行添加的腳本,各參數顯示如下圖所示,輸出類型爲Derived的參數不會被顯示出來。

----------------------歡迎來訪,拒絕轉載----------------------

4.        創建Model Builder。

1)右鍵單擊Toolbox工具箱,新建Model,並將已經添加好的CreateGeoTurbine腳本拖拽到模型中,釋放參數,並將輸入選項設置爲模型參數P。

2)給定模型的參數值,此時模型會變成如下圖所示的顏色,單擊驗證分析模型的有效性,並在Model裏運行此模型,運行成功並輸出結果,則證明模型正確有效。

3)模型已驗證無誤後,清除給定的參數值,目的是在後續發佈的GP服務裏,參數不會作爲默認值出現在選項框裏,保存模型。

4)雙擊CreateGeoTurbine模型,輸入參數:創建的文件夾路徑、文件夾名稱,輸入的Excel路徑,選定座標系統,運行工具。

5)運行成功,生成的結果目錄如下圖所示。


關於這個GP模型的發佈,Rest API調用,Javascript調用問題,後續將更新,歡迎探討。

-------------------------歡迎來訪,拒絕轉載---------------------------

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