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的资源创建一个异步方法如同创建一个同步方法一样容易。

猜你喜欢

转载自blog.csdn.net/kone0611/article/details/81585824