ArcGIS Runtime SDK for .Net介紹【轉】


一般情況下,我們使用AO/AE來開發C/S架構的GIS程序,使用WebAPI開發B/S架構的GIS程序,但是隨着服務、REST、JSON等概念的不斷普及和被廣大開發者所接受,越來越多的開發者更依賴於服務的形式來獲得相關的數據源,那么原有的C/S開發者又不願意舍棄已經培養好的陣地,這就出現了很多AE調用AGS服務的物理需求。不可否認,這個在技術上也可以走得通,而且很多開發者也屢試不爽,但是基於COM的AO本不是為了服務設計的,所以在調用效率各個方面都有所欠缺。

Esri在ArcGIS Runtime推出后衍生了很多產品,搞得很多人傻傻分不清楚,那么本次介紹的是Esri會代替原來推出的一個綜合產品,鑒於Esri與微軟友好的合作關系,Esri在原來的C++內核程序進行了wrapper,推出了ArcGIS Runtime SDK for .net產品,這個包含桌面開發、WP開發、Windows Store開發的集成包,替代原來的WPF等相關產品,成為了C/S開發服務的輕量級產品。(這里主要介紹桌面開發)。目前還是Beta版本。

相關幫助:https://developers.arcgis.com/net/

系統需求

Windows Desktop

  • Platform: .NET 4.5/4.5.1
  • OS: Windows 7, Windows 8, Windows 8.1
  • IDE: Visual Studio 2012, Visual Studio Express 2012 for Windows Desktop, Visual Studio 2013, Visual Studio Express 2013 for Windows Desktop

Windows Store

  • Platform: Windows Store 8.1
  • OS: Windows 8.1
  • IDE: Visual Studio 2013, Visual Studio Express 2013 for Windows

Windows Phone

  • Platform: Windows Phone 8.1
  • OS: Windows 8.1
  • IDE: Visual Studio 2013 with Update 2, Visual Studio Express 2013 for Windows with Update 2
  • SDK: Windows Phone SDK 8.1 (included with Update 2 for all Visual Studio 2013 editions)

 

授權部署

因為目前還只是Beta版本,所以還不需要進行授權文件,但是在實際部署時,相關授權機制有點類似於ArcGIS Engine的授權。用戶可以參考如下鏈接:

https://developers.arcgis.com/net/desktop/guide/license-your-app.htm

許可級別 功能
Developer (用於開發和測試) 全功能(水印和調試信息,Local Server有警告窗口 *)
Basic(基礎版) 在線功能—全功能離線功能—僅能瀏覽地圖
Standard(標准版) 全功能,包括:

 

•離線數據(geodatabase)編輯
•離線數據與服務器同步
•離線路徑分析
•Local Server *

下載試用

相關鏈接地址:https://betacommunity.esri.com/project/version/default.html?cap=0647A07F886B4023B69A9F4E2AFEC876&arttypeid=%7b0DDB2EE1-022B-476B-B81D-7A9906650E6A%7d

這個估計需要用戶申請一個賬號才可以下載。

安裝步驟

關於Windows下的安裝非常簡單,只需要下一步就可以完成。

相關示例

Esri為開發者提供了豐富的示例,相關下載地址:https://github.com/Esri/arcgis-runtime-samples-dotnet

以桌面開發為例

查看了一下,發現開發方式跟ArcGIS API for Silverlight基本類似,所以有這方面開發經驗的開發者可以0成本獲得另外一種開發技能。
從提供的例子可以看到,目前ArcGIS 10.2.3 版本支持的功能包括:各種不同服務類型的支持(GP服務、動態服務、切片服務等)、SOE的擴展、相關Task(網絡分析、查詢、統計、Geocoding等)、符號化、對各種幾何類型的編輯及操作、在線和離線的同步、打印、安全設置(Token)、Portal支持等功能。

產品定位

ArcGIS Runtime 分32Bit和64Bit,有易於部署和輕松授權的特點,而且只有70M左右的大小,定位於輕量級的桌面C/S程序開發,如果說與SilverLight有什么區別的話,可能SL是在Web瀏覽器,它借助於一個Mapview控件的桌面程序,開發方式都是借助於服務,了解回調函數、匿名函數等概念后,可能runtime會使用一些最新.net frameworks的新特性,我還沒有找到runtime與sl webapi的區別。而且說是桌面開發,它的功能又比ArcGIS Engine差太遠,以我個人的認識和感覺來說,我仍然不看好ArcGIS Runtime關於桌面開發這塊(因為WP和Windows Store開發沒有涉及,不包括其中),如果真正的C/S開發者有所期待,可以期待ArcGIS 10.3可能會推出的ArcGIS Pro SDK,相信這個會是C/S開發者的新寵。不過不管怎樣,定位不同嘛,或許有用戶就需要這種輕量級的需求。

突出特點

1:全新的Map控件 MapView

在之前的版本包含兩個控件,一個MapView,主要顯示Map的容器,另一個是Map,主要是圖層的集合,在新版本這兩個控件集成到一個了,讓開發者使用更加的方便。

2:FeatureLayer的變化

featurelayer的數據來自於featuretables

var gdb = await Geodatabase.OpenAsync(GDB_PATH); Envelope extent = new Envelope(); foreach (var table in gdb.FeatureTables) {....}

通過QueryAsync直接查詢,而不需要必須借助於QueryTask

var features = await cities.FeatureTable.QueryAsync(new QueryFilter() { WhereClause = where.Text}); queryResults.GraphicsSource = features.Select(f => new Graphic(f.Geometry));

更多的是用Task的方式,而區別於以前的Event模式

QueryTask queryTask = new QueryTask( new Uri("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5")); var stateName = (string)(QueryComboBox.SelectedItem as Graphic).Attributes["STATE_NAME"]; Query query = new Query(string.Format("STATE_NAME = '{0}'", stateName)) { OutFields = OutFields.All, ReturnGeometry = true, OutSpatialReference = mapView.SpatialReference }; var result = await queryTask.ExecuteAsync(query);

Task是從.Net frameworks4.0引進的,它的出現是為了使多線程編程變得簡單,Task和Thread還不是一回事,Task由TaskManager管理,一個Task會執行在一個Thread上,但是如果沒有足夠的Thread,TaskManager會暫時掛起這個Task,直到有足夠的Thread資源為止。Task的另外一個好處是TaskManager會把執行這些Task的Thread自動的分配在不同的Core上,就是所謂的並行編程。

await極大簡化了異步代碼量,await和async是.Net Frameworks4.5的新特性,是長時間操作任務的福音。在.NET4.5中新增了異步編程的新特性async和await,使得異步編程更為簡單。通過特性可以將這項復雜的工作交給編譯器來完成了。之前傳統的方式來實現異步編程較為復雜,這樣對於程序猿來說處理起來比較困難,調試也沒那么方便,后續的維護工作也比較痛苦。

Async和Await關鍵字是C#異步編程的核心。通過使用這兩個關鍵字,你可以使用.NET Framework 或 Windows Runtime的資源創建一個異步方法如同創建一個同步方法一樣容易。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM