ArcGIS GP服务问题列表

  1. 输入参数错误

在使用GP服务时,从创建模型到发布服务,再到调用服务,整个过程都需要注意输入参数和输出参数的问题。GP服务支持的输入和输出参数可详见

http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/00530000001n000000/

如果输入参数类型和GP服务的类型不一致,则会报错。

当输入或是输出的参数类型不是GP服务支持的类型,则发布GP服务不会成功。

当我们获取GP服务的执行结果是,需要注意我们 结果的名称必须要和GP服务输出结果的名称一致!例如:

这是发布的GP服务输出参数的信息:

这里我们可以知道输出参数的名称是:SurfaceOutput,那么在我们请求服务的时候一定要注意参数名一致。

_geoprocessorJobTask.GetResultImageLayerAsync(e.JobInfo.JobId, "SurfaceOutput");

 

这段代码是向服务器获取GP执行的结果,结果的名称是:SurfaceOutput必须要和GP服务的输出参数一致。

如果不一致,比如我们将这里的SurfaceOutput改为ErroSurfaceOutput就会出现如下的错误:

所以我们也可以知道,当出现如图所示的错误时,我们可以检查一下获取GP服务结果的参数是否一致!

同理,我们也需要保持输入参数的一致性。当输入的参数不一致时会出现如下的错误。

例如下图是我们GP服务输入参数额基本信息:

我们现在调用GP服务时输入GPFeatureRecordSetLayer类型的参数

Jobgpparameter.Add(newGPFeatureRecordSetLayer("PolutionPoints", featureData));

注意这里PolutionPoints即为GP服务输入参数的名称,这里必须要求和GP服务的Parameter名称相同,如果这里我们将PolutionPoints改为其他的名称则会出现如下所示的错误:

  1. 超出边界的问题。

这里一般是由于在我们建模时,选择的要素的坐标系统的属性域过小引起的。

例如当我们输入的参数是点要素时,那么我们在我们创建点要素时,需要选择点要素的坐标系统(也可以选择 Unknown).当我们非选择Unknown时,那么我们要素的属性域就是固定的(相对选择Unknown时会小很多)。例如当选择的坐标系统是 WGS_1984时,它的属性域范围如下:

当选择的是Unknown时,要素的属性域如下:

所以我们可以知道选择不同的坐标系统,那么属性域是不一样的。

因此,由于XY属性域范围的限制,当我们输入的点参数xy坐标超出XY属性域的范围时,调用GP服务就会报错,出现如下所示的错误:

解决的措施就是,将输入的点要素的坐标系统设置成Unknown,就可以了。

  1. 同步异步的问题

我们在发布GP服务的时候会选择是同步还是异步。同步调用GP服务实际上是在客户端完成工作,结果存储在客户端,异步调用实在服务器端执行,结果存储在服务器端,客户端上服务器端索取。当处理的数据量较小,用户不要要等待太长的时间时,可以采用同步的,当处理数据量较大,需要用户等待一段时间,那么我们则可以选择异步的方式。

因此,由于GP服务有同步和异步之分,那么我们在发布和调用GP服务的时候都需要知道采用哪种方式。

例如我们发布的GP服务是同步的, 我们只能用同步的方式调用:

_geoprocessorExecuteTask.ExecuteAsync(ExecuteGPParameter);

 

同理当GP服务为异步的时候,如下调用:

_geoprocessorJobTask.SubmitJobAsync(JobGPParameter);

 

而如果我们我们发布的是同步方式的GP服务,而采用的却又是异步方式来调用,那么就会出现如下所示的错误:

  1. 未将对象设置到类的实例的错误

在我异步请求GP服务,获取GP服务执行的结果时,遇到了这样的错误。报错代码如下:

黄色字体部分即为报错的地方。

以下是获取异步调用结果的完整代码:

voidgeoprocessorTask_GetResultDataCompleted(objectsender, GPParameterEventArgse)

        {

            GraphicsLayergraphiclayer=Map.Layers["CountorLayer"] asGraphicsLayer;

 

            GPFeatureRecordSetLayerfeature=e.ParameterasGPFeatureRecordSetLayer;

 

            foreach (Graphicgraphicinfeature.FeatureSet.Features)

            {

                graphic.Symbol=LayoutRoot.Resources["RedLineSymbol"] asESRI.ArcGIS.Client.Symbols.Symbol;

                graphiclayer.Graphics.Add(graphic);

            }

        }

这端代码确实没有错误,但是当自己运行程序的时候就报错,说未将对象引用设置到对象的实例,后来经“菩提老王“的点播,发现原来我的GP服务都没有执行成功(Fialded),换句话说就是e.Parameter中并没有结果,因此当给feature赋值的时候实际上是不成功的。

GPFeatureRecordSetLayerfeature=e.ParameterasGPFeatureRecordSetLayer;

因而在后面遍历feature中的Features时,则会报错。

而当GP服务执行成功时,则不会出现如上的错误,调试发现此时feature中已经有了多个Features。说明成功了。

  1. 远程服务NotFound的错误

有时候我们在调用GP服务时会出现如下的错误,说远程服务NotFound,而我们发现GP服务生成了正确的结果,但是SL就是无法显示,并报如下的错误:

这里的原因是由于Silverlight自身访问服务器资源引起的,在我们发送GP服务请求之前添加如下代码便可以解决问题;

//添加这段代码很重要,否则会出现远程服务器NOT Found的错误

HttpWebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.ClientHttp);

 

  Jobgpparameter.Add(newGPFeatureRecordSetLayer("PolutionPoints", featureData));

_geoprocessorJobTask.SubmitJobAsync(Jobgpparameter);

  1. GP执行成功,却无法将结果显示在地图上

这个问题实际上是模型的问题,之前自己遇到过,开始的时候百思不得其解,因为自己发布了一个GP服务,在ArcMap中验证成功,调用的时候也成功了,但是就是无法将结果显示在当前的图上,查看Jobs的文件夹,发现确实有结果生成。

之后重新建了模型,并重新设置了环境工作空间,输出的文件夹路径。然后发现问题解决了。当然是不是真的因为这个原因,这里也只是我的一个猜想,不过重新建模肯定是可以解决这个问题的。

转自:http://www.cnblogs.com/potential/archive/2012/05/18/GP.html

ArcGIS Server GP服务使用常见错误总结的更多相关文章

  1. ArcGIS Server GP服务发布与测试(基础版)

    版本:ArcGIS Server 10.4    环境:win10 测试目标:创建一个GP服务,功能为根据要素属性信息(如FID)选择出输入内容的对应匹配要素. 注:这个测试非常基础,仅供新手发布GP ...

  2. ArcGIS Server 缓存服务切图范围

    win10 + Server 10.4 +  ArcMap 10.4  ArcGIS Server 缓存服务分为创建服务后手动建立缓存和创建服务时同时自动建立缓存两种. 10.2帮助文档:http:/ ...

  3. ArcMap AddIn之下载ArcGIS Server地图服务中的数据

    涉及到开发知识点1.ArcGIS Server地图服务 2.C# web请求获取数据 3.AddIN开发技术 工具界面: 具体涉及到的代码之后有空贴出来.先上工具 AddIn插件下载地址:点击这里下载 ...

  4. 不同网段无法加载ArcGIS Server发布服务解决方法

    问题描述: ArcGIS Server 10发布的服务, (1)在相同网段的Desktop9.3和Engine 9.3程序下可以正常显示, (2)在不同网段Desktop9.3和Engine 9.3程 ...

  5. arcgis之gp服务发布

    arcgis之gp服务发布 注意: 1.arcgis服务可以直接通过arcmap来发布,gp服务就是将arcmap中的工具发布为服务,达到线上处理数据的能力 2.以文件为参数时不要以文件直接为参数,可 ...

  6. ARCGIS Server 发布服务时出现的问题解决

    target='CFH.ConfigurationFactoryHost'  machine='IBM3850X5'  thread='24072'  elapsed='0.31200'>Ser ...

  7. Arcgis Server发布服务

    提到Arcgis Server 服务的发布,做起来貌似很简单,就算电脑再卡,只要鼠标还能点,一个小时肯定能搞定,但是当你遇到问题的时候,就头大了,也许搞上个一两天都摸不着头脑,最后你采取的措施可能是一 ...

  8. ArcGIS Server发布服务,打包成功,发布失败

    打包成功,发布失败 部分解决方案: ①   查看Server对于源数据所在文件夹是否有读写权限,若无赋予Server账户至少读写权限.读写权限的赋予:对应存放数据的文件夹上右键→属性→ 安全 赋予ar ...

  9. ArcGIS Server发布服务,报错001270

    错误001270 这个问题一般是因为数据源文件太大导致. 解决办法:  对于001270的错误,官方帮助中给出了一些可能的原因并提供了相应的解决办法(http://resources.arcgis.c ...

随机推荐

  1. C# XML反序列化与序列化举例:XmlSerializer

    using System; using System.IO; using System.Xml.Serialization; namespace XStream { /// <summary&g ...

  2. 检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息

    警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试! 批处理语言: 简体中文 授权方式: 免费软件 运行环境: Windows平台 检测硬件批处理命令.一键获取.直接双击就可以查看 @ec ...

  3. markdown的学习

    开始 语法 编辑器 sublime配置 图床 体验 开始 昨天晚上加上今天上午,折腾了算是一天的markdown编辑器. 原因是,为了写博客.在博客园写的东西,想法不到简书里,结果发现有部分乱码,以及 ...

  4. Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息. 电话和短信需要向运营商购买相应的网关,需要付费: 邮件和微信是免费的,可以根据业务需要选择相应的告警模式 Zabbix版本:3.2 ...

  5. Order By操作

    本文转载自:http://www.cnblogs.com/vingi/articles/2450482.html 适用场景:对查询出的语句进行排序,比如按时间排序等等. 说明:按指定表达式对集合排序: ...

  6. 32位模式下C/C++程序可用最大内存

    关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试Visual studio 10 int* Test=new int[1024*1024*200]; int* Test2=n ...

  7. 在IIS下配置自定义的报错页面

    这里介绍在IIS中配置自定义出错页面的方法,主要以404为例,其他状态可类推 1.远程桌面连接IIS所在的服务器,进入控制面板>系统和安全>管理工具,双击打开IIS管理器,选择需要配置的网 ...

  8. [机器学习基础]矩阵基础和numpy

    矩阵定义:[摘自百度百科] 由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵.记作: 这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称 ...

  9. 第十六章 Velocity工作原理解析(待续)

    Velocity总体架构 JJTree渲染过程解析 事件处理机制 常用优化技巧 与JSP比较 设计模式解析之合成模式 设计模式解析之解释器模式

  10. 如何解决SSH登录Solaris主机速度慢的问题

    SSH登录速度慢可能有多种原因. 1. 与DNS有关 缺省情况下,当客户端用SSH登录solaris服务器时,服务器会试图反向解析客户端的IP 地址(即把IP地址解析成机器名).如果Solaris系统 ...