原理:
Geoprocessor是用py寫的腳本,它簡單語法,並可以調用大部分ArcGISToolBox里的現有工具,十分強大。Geoprocessing被稱之為地理處理,實際上就是ToolBox里的各種tools用py連接起立,連續處理而不用反復操作單個工具,流程化了。ArcGIS還提供了一個可視化的構建Geoprocessor工具,叫ModelBuilder:如圖
緩沖區分析只用到一個工具,在工具箱的Analysis Tools->Proximity->Buffer。下面就是制作一個GP包。
1.准備數據:一個點shp圖層。
因為是一個緩沖分析,下一章我們要用SilverLight調用該服務做頁面的內的緩沖分析,做一個點的緩沖分析,最后輸出一個shp。新建一個工作空間,供GP使用,默認的workspace是windowsuser的目錄,程序不能隨時創建。然后再里面創建一個shapefile,指定其坐標系為web Mercator。
將該圖層添加到ArcMap中,編輯,添加幾個測試點,保存。
2.准備GP工具的容器,新建,注意是下面那個,不是上面那個python Toolbox:
將來在ModelBuilder里創建的腳本文檔只能存放在這里面。
3.創建GP腳本,打開ModelBuilder如下操作:
然后右擊ModelBuider的工作區域空白,設定其Model Properties中的Scratchworkspace:
設定該參數是讓tools可以引用該參數,方式類似於window的系統變量:%scratchworkspace%;
添加featureclass,也就是創建的點圖層,然后用連接線將其指向buffer工具,然后選擇提示的inputFeatures選項,這是將該FeatureClass作為Buffer的輸入數據的引用:
雙擊Buffer工具,設定參數變量,緩沖20米,其他默認和輸入路徑:
注意那個引用方式。
然后整個工具的顏色就變成可運行的狀態了,如果某一個工具顏色還是白色,說明其參數沒配置好,檢查就可以:
4.運行測試GP:先點擊驗證√,然后點擊運行:
最后在文件夾上刷新就看到結果,托放到ArcMap中,看看結果:
最后,最重要的是指定參數化,也就是將輸入和輸入都參數化,將來運行的時候可以默認我們設定的值,也可以指定參數,實用性更強大,部署到ArcGIS Server中有實用價值:
右擊point和buffferdpoint如下:
保存該GP,選擇之前創建的tbx文件:
5.最后整個GP工具工作文件夾如下:
6.運行該腳本,為什么要如此?
因為只有通過單獨運行的並且成功的GP才能被發布到Server中,之前在ModelBuilder中處於調試環境,單獨運行是在Python+arcpy環境下,需要設定全局變量以適應我們的腳本中scrathworkspace:
右擊BufferModel,選擇run,結果在是在Geoprocessing->result中,右側就是運行成功之后,Current Seesion有一條記錄:
7:發布GP服務:
右擊上圖中restults,BufferModels,有一個選項,:
出現服務發布配置的界面,點擊Analysis,如果出現問題,會在下面有提示,雙擊該提示,一般是參數注釋之類的,填上即可:
如:
依次類推,所有的參數都要有說明文檔,直到Analysis沒有X號就可以點發布了。
8.在ArcGIS Server web管理頁面中驗證該服務:
打開Server的服務列表,找到剛發布的服務,點到功能,點擊rest服務:
成功。你的成功了沒?
總結:
GP實際上是一種py腳本,可以運行在ArcMap中,可以運行在Server中,運行在Server中就作為一種服務功能,稱之為Geoprocessor,很形象,地理處理器。簡化了以前使用.net開發一個服務器擴展的麻煩(SEO),相當的簡單,對於GIS開發者普遍開發水平不高的情況下,有很強的使用價值。缺點就是,性能慢。
Continued:下一節,我們講使用SilverLight調用該服務,在前端繪制一個點的緩沖分析,很有意思哦,期待吧。