该 DEMO 的界面如下图:

授权服务器

ArcGISRuntime.SetLicense("输入相应的许可信息");

ArcGISRuntime.Initialize()

启动ArcGIS Runtime本地服务器

LocalServer是一个静态类,包含了对服务器的授权,启动等信息。而从这个词的字面意思也暗示我们Runtime其实就是一个本地服务器。通过我们的理解,我们可以这样认为许可号其实就是控制这个本地服务器的。

LocalServer.InitializeAsync(() =>

{

if (LocalServer.Status == LocalServerStatus.NotInitialized) {

MessageBox.Show("服务器没有初始化!"); return;

}

}

);

ArcGIS Runtime服务器初始化成功之后会在VS的输出窗口中出现这样的地址:

这个就是我们熟悉的Rest,在浏览器中输入这个地址就可以看到如下页面:

这个很容易解释,因为我们现在还没有服务。根据在ArcGIS Server下的习惯我们可以输入以下地址:

当我们点击Start a new Service,我们会看到如下界面:

从这个页面很容易理解,这个是让我们创建服务,输入的参数有服务的类型,名称以及相应的数据源等。可以看出ArcGIS Runtime支持地图服务,地理编码服务,地处理服务和几何服务。

定义服务

我们将地图服务卸载XAML文件中,如下图:

Background="#FFE3E3E3">

我们以异步的方式创建一个缓冲区的GP服务如下:

//获取本地GP服务

LocalGeoprocessingService.GetServiceAsync(@"SimpleBuffer.gpk", GPServiceType.Execute, (gpService) =>

{

if (gpService.Error != null)

{

MessageBox.Show(gpService.Error.Message);

}

//创建Geoprocessor pGPTask = new Geoprocessor(gpService.UrlGeoprocessingService + "/" + "SimpleBuffer");

MyMap.MouseClick += MyMap\_MouseClick;

});

创建服务(服务是在服务器的状态为Runing的时候创建)

既然说了一切都是服务,而且是和REST相关的,那么要和这个缓冲区这个服务打交道,就要有一个URL地址,当我们的GP服务获取成功之后就可以看到这个 UrlGeoprocessingService地址,如下:

我们用异步的执行方式获取这个服务,当然对于GP来说也有同步的方式。当服务启动后,紧接着回调了一个匿名函数,在这个回调函数中我们可以做相关的操作,比如说服务是否有错误等,当服务没有问题的话,我们可以在这个回调函数中创建Geoprocessor,在这个时候就需要用到我们GP服务的地址,代码如下:

//获取本地GP服务

LocalGeoprocessingService.GetServiceAsync(@"SimpleBuffer.gpk", GPServiceType.Execute, (gpService) =>

{

if (gpService.Error != null)

{

MessageBox.Show(gpService.Error.Message);

}

//创建Geoprocessor pGPTask = new Geoprocessor(gpService.UrlGeoprocessingService + "/" + "SimpleBuffer");

MyMap.MouseClick += MyMap\_MouseClick;

});

截取这个地址,在浏览器中可以看到GP服务,如下图:

双击这个服务,可以看到更详细的信息,比如GP服务的输入,输出参数,如下所示:

我们再回去看我们的admin地址中,看到下面的:

在这里,我们可以对这个服务进行删除操作等。

执行分析

当这些服务都有了,我们在地图上单击,就会出现缓冲区分析的结果如下图:

代码如下:

private void MyMap_MouseClick(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)

{

pGPTask.CancelAsync();

GraphicsLayer pGraphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;

pGraphicsLayer.ClearGraphics();

e.MapPoint.SpatialReference = MyMap.SpatialReference;

Graphic graphic = new ESRI.ArcGIS.Client.Graphic()

{

Geometry = e.MapPoint,

Symbol = LayoutRoot.Resources["DefaultClickSymbol"] as

ESRI.ArcGIS.Client.Symbols.Symbol

};

graphic.SetZIndex(1);

pGraphicsLayer.Graphics.Add(graphic);

//构造GP的参数,2个,一个表示FeatureSet,一个表示缓冲距离

List pGParams = new List();

double pDist = System.Convert.ToDouble(txtBoxDist.Text);

Graphic pGraphic = new Graphic { Geometry = e.MapPoint };

FeatureSet pFeatureSet = new FeatureSet(new List { pGraphic });

pGParams.Add(new GPFeatureRecordSetLayer("InputFeatures", pFeatureSet));

pGParams.Add(new GPLinearUnit("Distance", esriUnits.esriKilometers, pDist));

pGPTask.ExecuteCompleted += (s, e1) =>

{

GPExecuteResults results = e1.Results;

GPFeatureRecordSetLayer rs = results.OutParameters[0] as

GPFeatureRecordSetLayer;

Graphic graphicBuff = new ESRI.ArcGIS.Client.Graphic()

{

Geometry = rs.FeatureSet.Features[0].Geometry,

Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as

ESRI.ArcGIS.Client.Symbols.Symbol

};

pGraphicsLayer.Graphics.Add(graphicBuff);

};

pGPTask.Failed += (s2, e2) =>

{

MessageBox.Show(e2.Error.Message);

};

pGPTask.ExecuteAsync(pGParams);

}

关闭服务

使用LocalServer.Shutdown()就可以关闭我们的服务,这时候我们可以在VS界面中看到下面的URL地址:http://127.0.0.1:50000/BQqGPY/arcgis/rest/admin/shutdown

小结

通过这些分析,我们可以将ArcGIS Runtime 称之为一个本地Server,而 ArcGISRuntime 也只不过是将本地资源,通过内部嵌入的WEB服务器,发布一个供自己使用的rest服务,这个rest只能通过自身的API使用,而不能向ArcGIS Server一样发布服务,当停止Runtime之后,这个URL将不能使用。我们也看到了ArcGIS Runtime 对这些操作的实现也是通过产生和ArcGIS Server向类似结构的REST,所以说这些ArcGIS Runtime的API 实质是通过调用自己的rest对服务进行操作,比如当关闭的时候,它调用 http://127.0.0.1:50000/BQqGPY/arcgis/rest/admin/shutdown

一个问题:ArcGIS Runtime在运行时候产生的服务或者说发布的服务能否被外界使用? 答案是可以的,下面的是我捕捉到的一个地址,在javascript中调用,结果如下:

但是这个地址只能本地使用,而不能在其他机器上上用,这点必须清楚,因为50000这端口是私有的。

手册目录

Bqq服务器的缓存文件放什么目录,ArcGIS Runtime 入门(5-2)ArcGIS Runtime运行剖析-缓冲区分析为例...相关推荐

  1. Bqq服务器的缓存文件放什么目录,如何使文件系统缓存失效? - How to invalidate the file system cache? - 开发者知识库...

    30 At least on Windows 7, it seems that attempting to open a volume handle without FILE_SHARE_WRITE ...

  2. Bqq服务器的缓存文件放什么目录,如何清除Android应用程序缓存?

    poate ITI合并ASTA static int clearCacheFolder(final File dir, final int numDays) { int deletedFiles = ...

  3. Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭

    Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放:服务器端口开放与关闭 文章目录: 1 问题分析 2 在Centos上开启和关闭端口 2.1 C ...

  4. ecs服务器网站文件放在哪里,云服务器ecs文件放哪里

    云服务器ecs文件放哪里 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务器,您需要在 ...

  5. linux 文件和打印机共享文件夹,linux服务器向windows客户端提供文件/目录及打印机共享...

    (六)linux服务器向windows客户端提供文件/目录及打印机共享 linux服务器上的samba运行起来以后,linux就相当于一台文件及打印服务器,向windows和linux samba客户 ...

  6. 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录

    文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 Python语言是目前很火热的语言,极大的促进了人工智能发展.你知道在ArcGIS中也会有python的身影吗?事实上,在Ar ...

  7. Linux命令(20)linux服务器之间复制文件和目录

    linux的scp命令: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器.  有时我们需要获得远程服务器 ...

  8. 云服务器里可以放多少网站,一台云服务器上可以放多少个网站

    一台云服务器上可以放多少个网站 内容精选 换一换 云耀云服务器(Halo Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立.完整的操作系统和网络功能 ...

  9. 安卓nba2k13数据包该放那个目录下

    原文地址为: 安卓nba2k13数据包该放那个目录下 今天玩了 NBA,感觉很不错 上网看很多网友问这个问题 说下: 安卓nba2k13数据包该放那个目录下 sdcard/Android/obb/** ...

最新文章

  1. 浙江大学计算机研究生分数线初试单科学科,2016年浙江大学计算机考研复试分数线_浙江大学考研分数线...
  2. 【NOIP2016】组合数问题
  3. 学习笔记——深拷贝与浅拷贝
  4. FL2440移植LINUX-3.4.2 -- 按键驱动和触摸屏驱动移植
  5. 投资理财要趁早,基金风险是最小!
  6. 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...
  7. 工作77::配置id传值地址
  8. 【转】语义化版本 2.0.0
  9. AXFR和IXFR区域传输及原理
  10. (116)FPGA面试题-FIFO相关参数与信号,为什么要用格雷码
  11. c#halcon 联合编程经验总结
  12. 软件测试功能测试全套常见面试题【功能测试】面试总结4-2
  13. 1u服务器支持的显卡体积,1u服务器加独立显卡(1u服务器装显卡)
  14. 激励的最佳状态,是让员工在最需要激励的时候,获得最大的心理满足
  15. UI基础三:简单的BOL报表开发
  16. Python-爬虫 (BS4数据解析)
  17. 基于单目和低成本GPS的车道定位方法
  18. 各品牌手机音视频格式支持一览表收藏
  19. ipa文件在线上传工具,代替xcode
  20. 操作体验极度舒适的多功能软件卸载工具 - iObit Uninstaller PRO

热门文章

  1. 一篇文章搞懂 HDFS 的 Archive 到底是什么
  2. Android中国象棋自绘简单实现
  3. yinyuetai.com音悦台 80万数据采集
  4. win7系统开启snmp服务器配置,简单几招教你win7开启 snmp服务
  5. 阿里云centos环境之linux上redis安装及踩过的坑(七)
  6. 正运动EtherCAT总线控制器在 并联机械手上的应用
  7. 计算机主题名称大全,DIY属于自己的win7电脑主题的方法有哪些
  8. linux 下 vs code 设置Source Code Pro 字体
  9. Fragment.setUserVisibleHint()懒加载过时问题优化
  10. url可以自动填入账号吗_解疑 | Dou+ 可以投出账号标签吗?