天天看點

ArcGIS API for Silverlight 調用GP服務準備---GP模型建立、釋出、測試

                                                                                                                     第一篇、GP降雨量等值線模組化、釋出及測試

       在水利、氣象等行業中,要在WebGIS中實作空間分析功能,如繪制等值線、等高線、等直面、緩沖區等都是經常遇到,經過一段時間的學習和研究,查閱ESRI文檔,請教他人,終于可以說是初步實作了等值線功能,這裡記錄下來詳細的操作步驟和圖檔說明,一方面是對此次努力的總結,另一方面希望也能給後來用到這方面的其他同志們,起個抛磚引玉的作用。

       以下是在ArcMap 10中操作詳細步驟:

1)、打開ArcMap 10,載入一個縣界的面層,這裡隻是示範用,隻是便于後面用于等值線裁剪使用。

2)、在模型建立之前首先看一個GP檔案結構圖,如下:

圖一

這裡簡單介紹下:

a、<ToolShare>是本地磁盤下某個目錄下的一個檔案夾,存放GP模型中所有使用到的檔案夾、檔案、模型、地圖mxd文檔等。

b、ToolData檔案夾下存放Schema檔案地理資料庫,然後該地理資料庫中存放的是輸入要素點集。

c、Scripts檔案夾下存放的是ArcGIS中模型中使用到的Python腳本,Python腳本是ArcGIS中的标準腳本語言。

d、Doc檔案夾下存放的是模型的使用手冊和幫助文檔等内容。

e、Scratch檔案夾下存放Scratch檔案地理資料庫,如果有shp等檔案也可以導入到該檔案地理資料庫中去。并且GP模型的工作空間通常也是指向Scratch檔案夾。

3)、在磁盤目錄,如D:\下建立一個檔案夾,比如命名為SimpleGPService,然後拷貝該檔案夾路徑D:\SimpleGPService,到ArcMap中的Catalog目錄找到Folder Connections,右鍵選擇Connect Folder,然後将拷貝的目錄粘貼,并進行檔案關聯,如下圖所示:

圖二

圖三

接下來,右鍵該目錄,選擇建立Folder,命名為ContourService,如下圖

圖四

繼續在ContourService檔案夾下建立2個檔案夾,分别為Scratch和ToolData目錄,如下圖

圖五

然後分别在Scratch和ToolData下建立檔案地理資料庫,名稱分别為Scratch和Schema,如下圖所示:

圖六

按照上面的說明,建立完成後,檔案目錄結構的樣式應該如下圖所示:

圖七

右鍵點選Schema,選擇建立一個要素類Feature Class,如下圖所示:

圖八

這裡命名為RainPoint,要素類型選擇Point Features,如下圖所示:

圖九

接着選擇“下一步”,這裡的坐标系統選擇“Unknow”即可,無需import常用的坐标系統,如下圖所示:

圖十

點選“下一步”

圖十一

點選下一步

圖十二

繼續點選下一步,添加一個新的字段,YL,字段類型為Double,這個是降雨量數值字段,根據需要按照命名規則可自定義,因為這裡定義的字段,後來在GP調用時是需要名稱一緻的,需要注意一下,如下圖所示:

   圖十三

點選“finish”完成。現在檔案夾目錄結構如下:

對于需要的剪切圖層,可以導入到Scratch檔案地理資料庫中,如下圖:

圖十四

由于生成的等值線往往是一個地區,是以需要根據某個範圍進行裁剪操作,這裡我導入的是一個縣界圖層的shp檔案,并為Output Feature Class命名,這裡為ClipFeature,如下圖:

圖十五

點選OK即可。

此時ArcMap中大緻如下圖所示:

圖十六

4)、接下來建立工具,右鍵ContourService檔案夾,建立一個Toolbox

圖十七

命名為CustomContourServiceTool,此時目錄結構如下:

圖十八

右鍵選擇”CustomContourServiceTool”工具,建立一個Model,如下圖所示

圖十九

此時會打開一個模組化視窗,如下圖:

圖二十

要修改模型的名稱,請在模型工作區内右鍵,選擇“Model Property”

圖二十一

在打開的屬性視窗中,重新名稱模型,并勾選相對存儲路徑,如下圖所示:

圖二十二

5)、正式開始模組化,打開Toolboxes,選擇“克裡金”,如下圖所示:

圖二十三

将Kriging工具直接拖到模型工作區中,如下圖:

圖二十四

右鍵選擇Kriging,即中間的圓角矩形框,添加輸入點要素的參數,如下圖:

圖二十五

添加後的效果圖如下所示:

圖二十六

由于該點要素是一個參數,首先給該點設定成模型參數,如下圖:

圖二十七

如上添加Model Parameter後,會自動添加一個P在上方顯示,右鍵選擇“Property”

圖二十八

切換到Data Type節,選擇資料類型為“Feature Set”

圖二十九

然後從GP檔案結構中的ToolData\Schema\RainPoint中導入輸入要素和符号,如下圖

圖三十

圖三十一

點選确定後,如下圖

圖三十二

此時,需要修改工作空間,選擇“Geoprocessing”->“Enviroments”,如下圖:

圖三十三

将Workspace指向我們之前建立的GP目錄下的Scratch檔案夾

圖三十四

完成後如下

圖三十五

輕按兩下打開模型中的Kriging這個圓角矩形框,

圖三十六

修改輸出的Raster路徑為%scratchworkspace%,修改後應該如下圖所示:

圖三十七

接下來,我們繼續添加模型元素,這次我們要添加Contour等值線工具

圖三十八

将該工具直接拖到模型工作區域

圖三十九

點選模型工具欄中的Connect,将Kriging的輸出和Contour工具進行連接配接操作

圖四十

右鍵Contour,建立參數變量Contour interval

圖四十一

圖四十二

同樣為該變量建立模型參數P,并輕按兩下該變量,輸入一個值,比如10

圖四十三

此時的模型如下圖所示:

圖四十四

接下來需要進行的操作是裁剪,在工具箱中找到Clip工具,拖放到模型工作區域中來

圖四十五

同樣将Contour的輸出結果和Clip操作進行連接配接

圖四十六

右鍵Clip,建立Clip Features變量

圖四十七

輕按兩下添加的Clip Features,選擇之前導入到Scratch目錄下的那個ClipFeature,如下圖

圖四十八

接下來修改模型中的輸出路徑,之前已經修改Kriging了,按照類似的方法,修改Contour和Clip即可,如下圖

圖四十九

圖五十

最後為輸出要素集添加輸出參數P

圖五十一

最終一個簡單的等值線模型建立成功,如下圖

圖五十二

6)、模型測試

圖五十三

在Catalog中選擇模型,右鍵選擇“Debug”,此時看到如下視窗

圖五十四

通過點選Add Feature向地圖上添加若幹個要素點,并輸入YL值進行測試

圖五十五

點選“OK”按鈕,進行模型測試

圖五十六

等值線就出來了

7)、釋出GP服務,并添加Toolbox中進行再次測試

圖五十七

圖五十八

圖五十九

圖六十

這樣GIS伺服器上就有了這個名為CustomContourServiceTool的GP服務了。點選ArcMap中的工具欄中的ArcToolbox window

圖六十一

右鍵添加新的Toolbox

圖六十二

圖六十三

這樣之前我們建立并釋出的GP服務就添加到了工具箱中了,再次測試,輕按兩下這個工具

圖六十四

圖六十五

同樣在地圖上添加要素點進行測試即可。

圖六十六

至此,整個GP模組化及釋出及測試已經全部完成。

附注:GP服務的REST位址,右鍵GIS Server上的服務,選擇Service Properties

圖六十七

在打開的視窗中,拷貝URL

圖六十八

<a href="http://localhost/arcgis/services/CustomContourServiceTool/GPServer">http://localhost/arcgis/services/CustomContourServiceTool/GPServer</a>

類似這樣的Url,然後在arcgis和services之間加上一個rest,現在的URL形式如下

<a href="http://localhost/arcgis/rest/services/CustomContourServiceTool/GPServer">http://localhost/arcgis/rest/services/CustomContourServiceTool/GPServer</a>

打開浏覽器,輸入以上URL,即可通路

圖六十九

點選Task進入

圖七十

該URL即GP的URL位址,以後在程式開發中,會使用到。

從這個URL可以得到如下資訊:

URL:

<a href="http://localhost/arcgis/rest/services/CustomContourServiceTool/GPServer/ContourServiceTool%20Model">http://localhost/arcgis/rest/services/CustomContourServiceTool/GPServer/ContourServiceTool%20Model</a>

輸入參數:Input_point_features和Contour_interval

輸出參數:Contour_Kriging1_Clip_shp

繼續閱讀