首页 > 电脑专区 > 电脑教程 >

ArcGIS Server GP服务使用常见错误总结

来源:互联网 2023-02-20 23:29:45 版权归原作者所有,如有侵权,请联系我们

ArcGIS GP服务问题列表及解决办法。4Bq办公区 - 实用经验教程分享!

方法/步骤

  • 1

    输入参数错误4Bq办公区 - 实用经验教程分享!

    在使用GP服务时,从创建模型到发布服务,再到调用服务,整个过程都需要注意输入参数和输出参数的问题。4Bq办公区 - 实用经验教程分享!

    如果输入参数类型和GP服务的类型不一致,则会报错。4Bq办公区 - 实用经验教程分享!

    当输入或是输出的参数类型不是GP服务支持的类型,则发布GP服务不会成功。4Bq办公区 - 实用经验教程分享!

    当我们获取GP服务的执行结果是,需要注意我们 结果的名称必须要和GP服务输出结果的名称一致!例如:4Bq办公区 - 实用经验教程分享!

    这是发布的GP服务输出参数的信息:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 2

    这里我们可以知道输出参数的名称是:SurfaceOutput,那么在我们请求服务的时候一定要注意参数名一致。4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    _geoprocessorJobTask.GetResultImageLayerAsync(e.JobInfo.JobId,"SurfaceOutput");4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    这段代码是向服务器获取GP执行的结果,结果的名称是:SurfaceOutput,必须要和GP服务的输出参数一致。4Bq办公区 - 实用经验教程分享!

    如果不一致,比如我们将这里的SurfaceOutput改为ErroSurfaceOutput就会出现如下的错误:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 3

    所以我们也可以知道,当出现如图所示的错误时,我们可以检查一下获取GP服务结果的参数是否一致!4Bq办公区 - 实用经验教程分享!

    同理,我们也需要保持输入参数的一致性。当输入的参数不一致时会出现如下的错误。4Bq办公区 - 实用经验教程分享!

    例如下图是我们GP服务输入参数额基本信息:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 4

    我们现在调用GP服务时输入GPFeatureRecordSetLayer类型的参数4Bq办公区 - 实用经验教程分享!

    Jobgpparameter.Add(newGPFeatureRecordSetLayer("PolutionPoints",featureData));4Bq办公区 - 实用经验教程分享!

    注意这里PolutionPoints即为GP服务输入参数的名称,这里必须要求和GP服务的Parameter名称相同,如果这里我们将PolutionPoints改为其他的名称则会出现如下所示的错误:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 5

    超出边界的问题。4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    这里一般是由于在我们建模时,选择的要素的坐标系统的属性域过小引起的。4Bq办公区 - 实用经验教程分享!

    例如当我们输入的参数是点要素时,那么我们在我们创建点要素时,需要选择点要素的坐标系统(也可以选择Unknown).当我们非选择Unknown时,那么我们要素的属性域就是固定的(相对选择Unknown时会小很多)。例如当选择的坐标系统是 WGS_1984时,它的属性域范围如下:4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 6

    当选择的是Unknown时,要素的属性域如下:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 7

    所以我们可以知道选择不同的坐标系统,那么属性域是不一样的。4Bq办公区 - 实用经验教程分享!

    因此,由于XY属性域范围的限制,当我们输入的点参数xy坐标超出XY属性域的范围时,调用GP服务就会报错,出现如下所示的错误:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 8

    解决的措施就是,将输入的点要素的坐标系统设置成Unknown,就可以了。4Bq办公区 - 实用经验教程分享!

  • 9

    同步异步的问题4Bq办公区 - 实用经验教程分享!

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

    4Bq办公区 - 实用经验教程分享!

    因此,由于GP服务有同步和异步之分,那么我们在发布和调用GP服务的时候都需要知道采用哪种方式。4Bq办公区 - 实用经验教程分享!

    例如我们发布的GP服务是同步的, 我们只能用同步的方式调用:4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    _geoprocessorExecuteTask.ExecuteAsync(ExecuteGPParameter);4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    同理当GP服务为异步的时候,如下调用:4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    _geoprocessorJobTask.SubmitJobAsync(JobGPParameter);4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    而如果我们我们发布的是同步方式的GP服务,而采用的却又是异步方式来调用,那么就会出现如下所示的错误:4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 10

    未将对象设置到类的实例的错误4Bq办公区 - 实用经验教程分享!

    在我异步请求GP服务,获取GP服务执行的结果时,遇到了这样的错误。报错代码如下:4Bq办公区 - 实用经验教程分享!

  • 11

    黄色字体部分即为报错的地方。4Bq办公区 - 实用经验教程分享!

    以下是获取异步调用结果的完整代码:4Bq办公区 - 实用经验教程分享!

    voidgeoprocessorTask_GetResultDataCompleted(objectsender,GPParameterEventArgse)4Bq办公区 - 实用经验教程分享!

    {4Bq办公区 - 实用经验教程分享!

    GraphicsLayergraphiclayer=Map.Layers["CountorLayer"]asGraphicsLayer;4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    GPFeatureRecordSetLayerfeature=e.ParameterasGPFeatureRecordSetLayer;4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    foreach(Graphicgraphicinfeature.FeatureSet.Features)4Bq办公区 - 实用经验教程分享!

    {4Bq办公区 - 实用经验教程分享!

    graphic.Symbol=LayoutRoot.Resources["RedLineSymbol"]asESRI.ArcGIS.Client.Symbols.Symbol;4Bq办公区 - 实用经验教程分享!

    graphiclayer.Graphics.Add(graphic);4Bq办公区 - 实用经验教程分享!

    }4Bq办公区 - 实用经验教程分享!

    }4Bq办公区 - 实用经验教程分享!

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

    GPFeatureRecordSetLayerfeature=e.ParameterasGPFeatureRecordSetLayer;4Bq办公区 - 实用经验教程分享!

    因而在后面遍历feature中的Features时,则会报错。4Bq办公区 - 实用经验教程分享!

    而当GP服务执行成功时,则不会出现如上的错误,调试发现此时feature中已经有了多个Features。说明成功了。4Bq办公区 - 实用经验教程分享!

    远程服务NotFound的错误4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    有时候我们在调用GP服务时会出现如下的错误,说远程服务NotFound,而我们发现GP服务生成了正确的结果,但是SL就是无法显示,并报如下的错误:4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 11该信息未经授权抓取自百度经验
  • 12

    这里的原因是由于Silverlight自身访问服务器资源引起的,在我们发送GP服务请求之前添加如下代码便可以解决问题;4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    //添加这段代码很重要,否则会出现远程服务器NOT Found的错误4Bq办公区 - 实用经验教程分享!

    HttpWebRequest.RegisterPrefix("http://",System.Net.Browser.WebRequestCreator.ClientHttp);4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    Jobgpparameter.Add(newGPFeatureRecordSetLayer("PolutionPoints",featureData));4Bq办公区 - 实用经验教程分享!

    _geoprocessorJobTask.SubmitJobAsync(Jobgpparameter);4Bq办公区 - 实用经验教程分享!

    4Bq办公区 - 实用经验教程分享!

    GP执行成功,却无法将结果显示在地图上4Bq办公区 - 实用经验教程分享!

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

    之后重新建了模型,并重新设置了环境工作空间,输出的文件夹路径。然后发现问题解决了。当然是不是真的因为这个原因,这里也只是我的一个猜想,不过重新建模肯定是可以解决这个问题的。4Bq办公区 - 实用经验教程分享!

    ArcGIS Server GP服务使用常见错误总结4Bq办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!4Bq办公区 - 实用经验教程分享!


    标签: 错误服务使用总结

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号