使用ArcGISGP服務發(fā)布_第1頁
使用ArcGISGP服務發(fā)布_第2頁
使用ArcGISGP服務發(fā)布_第3頁
使用ArcGISGP服務發(fā)布_第4頁
使用ArcGISGP服務發(fā)布_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 HYPERLINK /HPhone/archive/2012/11/05/2755833.html 使用ArcGIS GP服務之一框架介紹對于很多初學者來說,GP服務是一個難點,也是一個重點。GP的全稱是Geoprocessing,可以對原有的功能進行擴充,可以說只要在桌面實現(xiàn)的事情,在Server都可以做到。 我們首先看一下,Geoprocessing框架,我們主要是通過這些框架來進行Geoprocessing處理的。我這里使用的是ArcGIS 10.1 sp1版本。 第一個,ArcToolBox,這里是系統(tǒng)自帶的工具,只能復制和粘貼,不能手工的創(chuàng)建。 第二個,是Dialog,也就是對話框

2、,點擊某一個模型或者工具??梢暂斎胍恍﹨?shù),將結果輸出出來。 第三個,是Model Builder,我們可以點擊,可以點擊最右側的那個按鈕。在下面的文章,我們將使用這個工具來建模,然后發(fā)布成GP服務。 第四個,是Python工具,我們點擊,倒數(shù)第二個按鈕。 另外我們說一下,工具分為多種類型的。 轉載請注明出處, HYPERLINK /HPhone/ /HPhone/微博歡迎關注 HYPERLINK /n/webgis webgis HYPERLINK /HPhone/archive/2012/11/05/2755974.html 使用ArcGIS GP服務之二手工建模前面打一個小廣告,歡迎關注

3、 HYPERLINK /maxinnb WebGIS微博建模,是我們發(fā)布GP服務的第一步,這是基礎功。我們?yōu)槭裁匆D兀?對于現(xiàn)實的GIS業(yè)務來說,基本上都有相應的流程和規(guī)范,具體怎么做,都得按照步驟來。步驟少還好說,要是步驟多了,不僅效率低下,而且還容易出現(xiàn)工作錯誤,每一步都會產(chǎn)生中間文件。例如我們的天氣預報,將收集各個氣象站站點定位到地圖上,然后剪出中國的版圖來,再然后進行克里金差值等等,一些步驟以后,就可以得到相應的溫度線或者降雨線。步驟都是規(guī)定好的,為什么不做成一個工具,然后直接輸出結果呢? 對,這就是建模的好處,我們通過將多個工具組合起來,生成一個工具,來完成整體的步驟化。 上一篇

4、博客介紹了,我們首先打開Model Builder。如果不知道怎么打開,請看上一篇博客吧。 首先介紹一下,我們要實現(xiàn)的一個過程,某一個地方發(fā)生污染,周圍哪些城市將受影響,我們這里只考慮距離吧。 下面是我們整個建模的思想。 1:得到受污染的區(qū)域 2:進行緩沖 3:將在緩沖區(qū)的城市選出來。第一步,新建模型最右側的按鈕。第二步,拖入工具我們可以將現(xiàn)有的工具,直接拖到這里面來。比如我拖一個Buffer工具。 其實如果找不到的話,我們可以進行一個搜索,快捷鍵Ctrl+F。 拖進之后的樣子。 我們雙擊Buffer,我們可以看到Buffer的很多參數(shù),前面帶綠點的參數(shù)是必填的。 第三步,設置參數(shù)參數(shù)分為兩種

5、方式填,一種直接填在這里面,另外一種是作為參數(shù)。有綠點是必填的,如果不輸入這些參數(shù),這個工具是黑白色的,不是彩色的。 比如我在這里輸入Linear unit :1 單位選擇為Decimal degrees。 如果是以參數(shù)的方式,來添加的話,有兩種方法添加。 先說第一種,右鍵buffer,選擇Make Variable-From Parameter。我們看到后面的參數(shù),和上圖的參數(shù)是一樣的。不過還是缺少了一個Output Feature Class??匆幌翨uffer右側是什么?這是拖進來,自動就把這個參數(shù)添加進來了,我這里點擊選擇Distancevalue or field。 由于之前,這個參

6、數(shù),我已經(jīng)設好值,所以說顯示的是彩色的。后面的兩個還是沒有變成彩色,說明這個buffer還缺少一個必填參數(shù)。就是Input Features。 注意,我們點擊這個Distance參數(shù),也是可以修改這個參數(shù)值的。 我們這時候,使用第二種方式。 在這里建??瞻讌^(qū)域,右鍵選擇Create Variable(創(chuàng)建變量),選擇我們需要使用的參數(shù)類型,我們這里選擇Feature Set。 點擊,然后點擊Feature Set,一直拖著鼠標不放到Buffer,然后松開。 然后會出現(xiàn)和這個類型匹配的,參數(shù)名字,這里我選擇Input Features。 按理說,這里我已經(jīng)完所有的參數(shù),應該變成彩色才對?;仡^想一

7、下,應該是Feature Set沒有設置成功,應該一些參數(shù)沒有設置對。我們點擊Feature Set。 在這里我選擇了一個區(qū)的shp文件。點擊確定。 我們再去看一下,我們的模型,都變成了彩色。說明我們這個必須參數(shù)已經(jīng)設置正確,正確與否,還不能確定。 我們先點擊那個,進行檢驗一下啊,是否正確。爭取的話,我們點擊。 運行完畢之后,可是并知道結果怎么樣。 這個時候,我們可以右鍵這個Out Feature Class,選擇Add To Display。 如果不這么辦的話,也是可以采用其他的方法的,點擊Out Feature Class,我們這樣就可以知道整個的輸出地址什么了,當然作為參數(shù)我們也可以自己

8、進行手動的設置。 現(xiàn)在完了嗎?其實對于輸入Feature Set,我想進行一個手動畫一些區(qū)域,然后進行一個緩沖區(qū)生成,來在Desktop上的一個檢驗。 把原來的Input Features參數(shù)還原成最初的樣式吧。 在這之前,我們需要在Geodatabase文件中新建一個Feature Class,其中類型選擇Polygon Feature。為什么要建立這個呢?因為我們需要將這個模板引入到這個參數(shù)中,讓Desktop知道我們要輸入的是點、線還是面之類的。 右鍵這個屬性,選擇Properties。進入Data Type標簽,然后剛才我們新建的Feature Class。 稍等,還有一 步需要完成,

9、右鍵這個參數(shù),然后選擇Model Parameter。這個時候,就會出現(xiàn)一個P。所有出現(xiàn)P的,這個模型作為使用,都需要在使用的時候,作為其中一個參數(shù)出現(xiàn),沒有把它寫死。那個緩存長度,由于沒有加P,使用的時候,參數(shù)都是死的,不能進行改變,除非重新編輯這個Model,但是一旦發(fā)布成服務,就不能更改了。所以說,在使用之前,一旦要想好,那些參數(shù)是死的,哪些參數(shù)是在使用的時候,才能確定的。 為了GP服務的使用,參數(shù)的名字將會作為參數(shù)名稱來提交的,為了更好的理解意思,最好更改一下名字,比如說,上圖的Feature Set,更改為ContaminatedAreas。 這個時候,我們來保存這個模型吧。 第四步

10、,初入驗證模型打開這個模型。 然后在Desktop畫區(qū)域吧。 然后點擊OK,等待整個的運行完畢。 到了這里,我們緩沖區(qū)域基本上就夠完成了。下面我們就要整體構建我們模型了。根據(jù)模型選擇城市。 第五步,完成模型我們這個時候,需要添加一個新的工具,select layer by location。把第一步的輸出結果,作為第二個工具的參數(shù)Selecting Features。然后再添加一個Input Features參數(shù),選擇相應的圖層。等等。 最后我們實現(xiàn)整個模型,是這樣的。 第六步,最后驗證模型10.1版本,為了更加保證模型,沒有錯誤,需要先進行跑一遍才可以發(fā)布。 在這里我添加了原來畫的區(qū)域,我是

11、怎么做到的呢?很簡單。點擊Geoprocessing-results。 然后把選中的,直接拖進去,就可以顯示了,就能檢驗我們輸入正確與否。 這一博客,確實有些長了。 下一個博客,我們就要做發(fā)布前的準備了。這是我的數(shù)據(jù)文件 HYPERLINK /HPhone/tools.7z 下載轉載請注明出處, HYPERLINK /HPhone/ /HPhone/微博歡迎關注 HYPERLINK /n/webgis webgis HYPERLINK /HPhone/archive/2012/11/17/2774108.html 使用ArcGIS GP服務之三發(fā)布前的準備這里的準備分為兩部分,分別是數(shù)據(jù)整理和

12、環(huán)境設置。數(shù)據(jù)整理上面我們使用到全國主要城市圖,新建的Feature Class,中間和最后生成的等等數(shù)據(jù),我們最好數(shù)據(jù)整理一下。 上圖是我們常見的一個數(shù)據(jù)結構圖。 ToolData在這里面,我們可以放置我們的底圖Geodatabase和Schema Geodatabase。何為Schema,上面我們新建的Feature Class,類似一種模板。 Scripts可以放置一些python腳本文件,具體腳本文件,請看下一篇關于python集成Module Builder ,生成工具。 Doc可以放置一些說明文件。 Scratch放置一些中間數(shù)據(jù),例如上一個博客我們生成的緩沖區(qū)文件,就可以放置在這

13、里。例如這是我新建的文件列表環(huán)境設置地理處理環(huán)境設置是影響工具執(zhí)行結果的附加參數(shù)。這些參數(shù)與常規(guī)工具參數(shù)的區(qū)別在于它們不會顯示在工具對話框中(存在某些例外情況)。更確切地說,這些參數(shù)是先前使用獨立對話框設置的值,工具在運行時將詢問和使用這些參數(shù)。 環(huán)境設置有四個級別: 應用程序級別設置是默認設置,執(zhí)行任何工具時均應用該設置。 工具級別設置適用于工具的單次運行并且會覆蓋應用程序級別設置。 模型級別設置使用某種模式指定和保存,并且會覆蓋工具級別設置和應用程序級別設置。 模型過程級別設置在模型過程級別指定,隨模型一起保存,并且會覆蓋模型級別設置。應用程序級別,我們點擊ArcMap-Geoproces

14、sing-Environment。這里我們將Workspace - Current Workspace設置到第一個圖的ToolShare文件,然后Scratch Workspace設置到圖中的Scratch文件夾。然后,調(diào)整我們的工具,需要中間文件和最后生產(chǎn)的文件,都放置在相對WorkSpace路徑下。右鍵我們之前編輯的工具,然后點擊Edit。找到相應的輸出文件或輸入文件模塊,雙擊打開,設置為相對地址。例如我這里設置的最后的輸出文件,%scratchworkspace%,就代表上面的Scratch Workspace路徑。等等,我們還得去完成一件事情,就是需要設置我們新建的module需要設置

15、保存為相對路徑。當然也需要將MXD文檔設置為相對路徑。編輯模型-菜單欄Model-Model Properties-圈中下面標紅的。建議來說,MXD文檔之類的工程,最后設置為相對路徑,直接就拷貝使用。可能,很多人不知道為什么需要設置ArcMap的Workspace?我們需要在ArcMap中跑一遍,驗證是否正確,所以需要修改環(huán)境變量。在Server 使用GP服務當中,每一次請求的時候,都會產(chǎn)生一個job,這個job會有自己的環(huán)境變量,這樣一來,就可以保住整個數(shù)據(jù)不會互相影響。我們保存所有的設置之后,然后重新運行一遍。下面我們就要進行服務的發(fā)布了。這是我的數(shù)據(jù)文件 HYPERLINK /HPhon

16、e/tools.7z 下載轉載請注明出處, HYPERLINK /HPhone/ /HPhone/微博歡迎關注 HYPERLINK /n/webgis webgis HYPERLINK /HPhone/archive/2012/11/18/2775492.html 使用ArcGIS GP服務之四GP服務發(fā)布 所有的數(shù)據(jù)與環(huán)境都配置好以后,我們就需要發(fā)布GP服務了。對于ArcGIS 10.1,發(fā)布GP服務方式改變了,得需要ArcMap幫助。我們可以先將這個服務打包定義,然后發(fā)給別人,使用Sever發(fā)布,也可以直接使用Server發(fā)布。 不論怎么樣,都需要預先在ArcMap跑一遍。菜單欄Geopr

17、ocessing-Results查看結果。 服務發(fā)布為什么需要跑一遍呢?之前我們模型定制完成之后,直接發(fā)布,沒有驗證,可能使用GP服務,就出現(xiàn)問題。所以,這樣一來,先跑一遍,就可以處理這些問題,然后再去發(fā)布。 1:選中結果 右鍵當前結果,Share As-Geoprocessing Service。 2:點擊Publish a Service 這里有是三個選項,第一個意思是發(fā)布一個新服務,第二個將服務打包定義(模型當中使用到的數(shù)據(jù),模型,服務設置),第三個意思是,重新覆蓋當前的一個模型。 3:設置服務名字 上面的connection,需要預先在catalog當中設置好,具體怎么設置,可以在這里

18、添加一個。 4:設置服務文件路徑 可以使用現(xiàn)有的,也可以新建一個文件夾。 5:服務參數(shù)設置 下面主要介紹比較常用的參數(shù)。 (5.1)General 這里面的參數(shù),就是根據(jù)前面的設置,列出來的,不能改變。能改變的,就是設置是否服務發(fā)布的時候,是否立即啟動。 (5.2)Parameters Execution Mode,同步和異步定義了客戶端(使用任務的應用程序)如何與服務器進行交互以及如何獲取任務結果。服務設置為同步時,客戶端將等待任務完成。通常,同步任務的執(zhí)行速度很快,大概需要 5 秒或更短。異步任務的執(zhí)行往往花費的時間較長,客戶端必須定期向服務器發(fā)出詢問以確定任務是否已完成,如果完成,則獲取

19、結果。使用異步任務的 Web 應用程序必須添加函數(shù)邏輯來檢查任務狀態(tài),并在執(zhí)行完畢后處理結果。不同的方式,在代碼當中使用的函數(shù)是不一樣的。 View results with a map service,發(fā)布地理處理服務時,可以選擇以地圖形式查看服務所有任務的結果(以及任務的其他結果)。這一地圖使用 ArcMap 創(chuàng)建在服務器上,以將其以圖片格式(如 .jpeg)傳輸回客戶端。返回地圖的符號系統(tǒng)、標注、透明度和所有其他屬性與當前 ArcMap 會話中的輸出圖層完全相同。使用結果地圖服務的原因如下: 如果您的任務輸出大量的要素而且需要客戶端進行符號化和繪制,那么對于該客戶端來說,接收一幅地圖可能

20、會更迅速、更簡便。 用于顯示結果的最好方法中所需要的功能在 ArcMap 中有,但在客戶端不存在。 由于數(shù)據(jù)分發(fā)的原因,您不希望向客戶端發(fā)送任何要素,而僅僅是發(fā)送地圖圖像。 您任務的結果是一個不可傳輸?shù)臄?shù)據(jù)集,例如 TIN 或 CAD 工程圖。向客戶端發(fā)送地理狀況的唯一方法是通過地圖圖像。 如果輸出圖層要繪制唯一值,則可能需要取消選中圖層屬性中的 以在繪制之前強制重新計算唯一值。有關詳細信息,請參閱創(chuàng)建圖層符號系統(tǒng)文件。 如果您希望客戶端只能查看數(shù)據(jù)而無法下載數(shù)據(jù),可在發(fā)布時將服務器返回的最大記錄數(shù)選項設置為零。 選擇此選項后,服務器上會自動生成一個地圖服務,其名字同您的地理處理服務相同。 另

21、外可以設置,返回的條數(shù)。 (5.3)ContaminatedAreas 這個名字,當然是根據(jù)你的名字自動生成的,可能你的模型不是這個名字。 其實第二篇,我欺騙了大家,在代碼當中傳到后臺的參數(shù)名字是可以通過這里更改的。 (5.4)Item Description 這里雖然對功能沒有影響,但是不填的話,會不能發(fā)布服務的。 最后點擊Publish。 服務目錄 打開Server 服務目錄,查看一下,這就是我們發(fā)布后的結果。 具體怎么使用,請看下一篇JavaScript API來調(diào)用轉載請注明出處, HYPERLINK /HPhone/ /HPhone/微博歡迎關注 HYPERLINK /n/webgi

22、s webgis HYPERLINK /HPhone/archive/2012/11/18/2775860.html 使用ArcGIS GP服務之五 JavaScript的調(diào)用使用前的了解 這是上一個博客留下的最后一張圖,GP的服務目錄,我們通過點擊Tasks下面的一個鏈接地址進入。這個地址,需要記住,這將是GP服務的地址,需要寫在代碼里面的。幫助說明,這個是在發(fā)布服務的時候,手動輸入的。也就是說,如果我們想要別人來使用我們的工具,發(fā)布服務的時候,盡量讓這個幫助寫的清楚一些,現(xiàn)在很多懶人都不愿意寫。 參數(shù)列表,會列出所有的參數(shù),參數(shù)名字是需要記住的,到時候需要寫在代碼里面的。 數(shù)據(jù)類型,這是G

23、P服務的數(shù)據(jù)類型。每一個GP服務數(shù)據(jù)類型和JS數(shù)據(jù)類型進行對應。 Data TypeJavaScript TypeExampleGPStringStringMyStringGPDoubleNumber (float)12.56GPLongNumber (int)345GPBooleanBooleantrueGPDateDateGPLinearUnitGPDataFileGPRasterDataGPRecordSetGPRasterDataLayerGPFeatureRecordSetLayerGPMultiValueStringParcels, Street Lights默認值,如果我們沒有傳

24、數(shù)據(jù)的話,將會使用默認值。 這些我們都了解后,上代碼。 JavaScript的調(diào)用 HYPERLINK /HPhone/archive/2012/11/18/2775860.html ?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293dojo.require(dijit.layout.Bord

25、erContainer); dojo.require(dijit.layout.ContentPane); dojo.require(esri.map); dojo.require(esri.toolbars.draw); dojo.require(esri.tasks.gp); varmap, toolbar, gp; functioninit() map = newesri.Map(map); basemap = newesri.layers.ArcGISDynamicMapServiceLayer( HYPERLINK http:/localhost:6080/arcgis/rest/s

26、ervices/basemap2/MapServer http:/localhost:6080/arcgis/rest/services/basemap2/MapServer); map.addLayer(basemap); dojo.connect(map, onLoad, function(theMap) dojo.connect(dijit.byId(map), resize, map, map.resize); toolbar = newesri.toolbars.Draw(map); dojo.connect(toolbar, onDrawEnd, drawEnd); ); varb

27、utton = dojo.byId(polygon); dojo.connect(button, onclick, drawPolygon); functiondrawPolygon() toolbar.activate(esri.toolbars.Draw.POLYGON); functiondrawEnd(geometry) toolbar.deactivate(); varsymbol = newesri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, newesri.symbol.SimpleLineS

28、ymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, newdojo.Color(255, 0, 0), 2), newdojo.Color(255, 255, 0, 0.25); vargraphic = newesri.Graphic(geometry, symbol); map.graphics.add(graphic); tojob(graphic); functiontojob(graphic) /第一步構造GP vargpUrl = HYPERLINK http:/localhost:6080/arcgis/rest/services/

29、GP/ContaminatedAreas/GPServer/ContaminatedAreas http:/localhost:6080/arcgis/rest/services/GP/ContaminatedAreas/GPServer/ContaminatedAreas; gp = newesri.tasks.Geoprocessor(gpUrl); /第二步,構造參數(shù) /我們通過上面,了解到GPFeatureRecordSetLayer對應FeatureSet varfeatures = ; features.push(graphic); varfeatureset = newesri.

30、tasks.FeatureSet(); featureset.features = features; /構造緩沖長度,這里的單位是可以更改的,我使用的是度,簡單一些 varDis = newesri.tasks.LinearUnit(); Dis.distance = 1; Dis.units = esri.Units.DECIMAL_DEGREES; /Distance_value_or_field_,后悔當時參數(shù)名字沒有改 varparms = ContaminatedAreas : featureset, Distance_value_or_field_ : Dis ; /這里函數(shù)是異

31、步的,使用函數(shù)是submitJob,同步的使用的是execute。 /成功之后,調(diào)用jobResult,建議看一下這個參數(shù)。 gp.submitJob(parms, jobResult); functionjobResult(result) varjobId = result.jobId; varstatus = result.jobStatus; if(status = esri.tasks.JobInfo.STATUS_SUCCEEDED) /成功之后,將其中的結果取出來,當然這也是參數(shù)名字。 /在模型中,想要取出中間結果,需要設置為模型參數(shù) gp.getResultData(jobId,

32、 polygon_Buffer, addResults); gp.getResultData(jobId, resultCity, addResults); /將緩沖添加到地圖上 functionaddBufferResults(results) console.log(results); varfeatures = results.value.features; for(vari = 0, length = features.length; i != length; +i) varfeature = featuresi; varpolySymbolRed = newesri.symbol.SimpleFillSymbol(); polySymbolRed.setOutline(newesri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論