ArcGIS Runtime SDK for .NET 100.0中如何執行.gpk(一)

ArcGIS Runtime 100.0 SDKs 於2016年11月發佈,是ArcGIS Runtime採用全新架構下的第一個商業版本,新架構下的Runtime採用了統一的API,方便用戶使用的同時也使得跨平臺開發更加容易。而Local Server(只存在於Runtime for .NET的WPF端、Runtime for Java以及Runtime for Qt中,需要單獨安裝)是桌面端所特有的模塊,我們訪問、編輯本地mpk(map package),執行本地gpk(geoprocessing package)都依賴於它。最近遇到不少做過Engine開發的用戶詢問ArcGIS Runtime中執行GP工具的問題,比如Runtime中是否也和Engine一樣使用Geoprocessor.Execute執行GP?其參數是否也是用要素類的絕對路徑方式輸入?答案是不一樣,Runtime中執行GP工具要複雜的多,首先需要將GP或model打包成gpk;其次,參數也不像Engine那樣直接使用要素類的絕對路徑就行。鑑於網上關於這一塊的資料少之又少,而Runtime的官方幫助中僅提供了執行在線GP Service的示例,因此,本文主要介紹下Runtime中如何執行本地的gpk,主要包括Desktop中創建gpk的流程以及ArcGIS Runtime SDK for .NET 100.0中執行gpk的方法及遇到的問題。鑑於篇幅比較長(其實是圖比較多~),本文主要介紹下Desktop中創建gpk的流程以及Runtime程序的搭建,後面一篇文章中重點介紹下ArcGIS Runtime SDK for .NET 100.0中執行gpk的方法以及遇到的問題。

本文以3D Analyst工具箱中的Interpolate Shape工具爲例,根據DEM影像爲一條2D線內插出Z值。該工具的用法參考:工具幫助

一、 Desktop中生成.gpk

由於自定義腳本工具更容易控制輸入輸出的參數及其數據類型,因此我們不直接調用Interpolate Shape工具而是自定義腳本工具。

1,創建腳本工具之前需要先新建一個InterpolateShape.py文件,文件中調用InterpolateShape_3d工具並且暴露出三個參數:輸入的線要素、輸入的柵格數據以及輸出的線要素,內容如下:

import arcpy, math

inputLine = arcpy.GetParameterAsText(0)
inputRaster = arcpy.GetParameterAsText(1)
outputLine = arcpy.GetParameterAsText(2)
rlt = arcpy.InterpolateShape_3d(inputRaster,inputLine,outputLine)

2,在ArcMap中添加腳本工具,右鍵.tbx選擇Add->Script。

1

在彈出界面中輸入腳本工具的Name,Label等信息,點擊下一步指定該InterpolateShape.py文件所在的位置。再下一步是參數的設置(很重要),需要設置輸入輸出參數的Display Name以及Data Type,這裏我們暴露出三個參數,第一個參數是inputLine,也就是輸入的線要素,指定類型是Feature Set(這點很重要,如果類型是Feature Class,Runtime中是無法調用的),需要爲該Feature Set選擇一個Schema,這裏可以事先新建一個與該柵格數據具有相同空間參考的線要素類;第二個參數是inputRaster,即輸入的Surface表面,這裏使用.tif格式的DEM數據,類型是Raster Dataset;第三個參數是輸出的要素類,類型是Feature Class,點擊完成即可,界面如下:

2

3,在ArcMap中執行該腳本工具,首先在ArcMap中添加該DEM柵格影像(以便定位),然後打開該腳本工具,輸入inputLine爲在Map上進行人機交互所畫的線,輸入的Raster爲tif格式的本地DEM數據,點擊確定,如下圖:

3

4,生成.gpk。執行該腳本工具成功後,在Results界面選中剛剛執行成功的工具右鍵選擇Share As->Geoprocessing Package。

4

tips:如果您的界面中沒有這一選項,那麼需要在ArcMap的菜單項Customize -> ArcMap Options -> Sharing選項卡 -> 勾選Enable ArcGIS Runtime Tools。

在彈出界面中指定輸出.gpk的路徑並且勾選Support ArcGIS Runtime複選框,如下圖:

5

參數界面中輸入參數inputLine的Input mode選擇User defined value,即用戶指定輸入:

6

輸入參數inputRaster選擇Constant value,也就是採用默認參數,無需代碼中指定。outputLine參數保持默認即可。

7

最後進行Share,Share之前建議先執行Analyze,這時會提示下面的錯誤:

8

我們按照提示添加Tags和Summary,點擊確定即可發佈成功。

二、 ArcGIS Runtime for .NET 100.0中執行.gpk

首先安裝軟件,需要安裝ArcGIS_Runtime_SDK_DotNet_100_0_0.vsix和ArcGIS_Runtime_Local_Server_SDK_100_0_0.exe,注意Local Server 是可選的,如果不需要加載本地mpk和執行gpk,是不需要安裝的(10.2.X版本中是必裝的),還要注意查看下機器環境是否符合ArcGIS Runtime 100.0的系統需求

9

安裝完軟件後就可以搭建工程了,創建模版工程,在VS的File ->New Project 界面左側選擇Classic Desktop,右側選擇ArcGIS Runtime Application (WPF),如下圖:

10

然後右鍵References選擇Manage NuGet Packages,彈出界面中點擊Restore來修復引用,如下圖:

11

由於執行gpk必須用到Local Server,因此需要在工程中添加LocalServices引用:

12

這時程序就可以直接運行成功了,如下圖:

13

準備工作做好了,接下來就可以編寫代碼了。這一部分將在下一篇文章中介紹,敬請期待…

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