• 关于客户端无法获得服务器端GP服务(Geoprocessing Service)结果的解决办法


          之前发布了一个绘制等值面的服务,在本机测试的时候始终都可以访问,没有任何的问题,但是在远程访问时,出现了无法获得GP服务结果(注:结果为图片)的问题,而在服务器端确实生成了正确的结果。困扰了很久之后,终于找到了解决的办法。

          一般在默认情况下,ArcGIS Server的GIS服务输出文件夹用的是计算机名,可以按照如下方式查看:

    打开ArcCatalog

    选择GIS服务器,右键自己创建的GIS服务器,比如上图的qzj-pc.然后选择服务器属性,出现如下视图:

    默认情况下,虚拟目录采用的是计算机名。而上述说的问题就在这个地方。

    当我们远程访问GP服务时,如果结果是图片的话,通过Fiddler我们会发现,客户端在获取服务器端的图片时,其地址会变成:虚拟目录地址+图片名称,例如当按照上图设置时,其地址就是:http://qzj-pc/arcgisoutput/<图片名称.png>(注:一般来说,栅格数据在服务器端生成的图片都是png格式的)。下图是按照如上设置时用Fiddler检测客户端获取结果的地址:

    可以发现Host的地址是qzj-pc,也就是计算机名,这里我们可以知道获取结果的地址和ArcCatalog中设置的是一样的。

    然而当我们如果是远程访问的时候,如果还是如上设置虚拟目录,那么就会出错,即无论怎样也无法获得GP服务的结果(注:这里是结果地图服务,所以是png图片)。因为如果是远程访问,远程的机器是无法解析hhtp://qzj-pc/arcgisoutput/<图片名称.png>这个地址的。我们通过Fiddler监测也会发现找不到服务器这样的错误提示。

    这里的解决办法是两种:

    一是在客户端,在Host文件中添加地址的映射,将qzj-pc映射到GIS服务器的ip地址。

    二是在服务器端直接将输出的虚拟目录改成:http://<服务器ip>/arcgisoutput。这样在客户端访问的之后则会按照ip地址来取得服务器端的结果,而不是计算机名。

    注意:在设置虚拟目录时,需停掉所有的GIS服务,否则无法修改输出的虚拟目录

    这样修改后便能够获得服务器端的结果了。

    例如下图获得就是SCREEN3大气预测模型下火炬源的污染物扩散示意图:

    同时这里还需要注意的问题是,在服务器端需要正确设置arcgisoutput文件的权限,这是客户端获得结果的前提。

     (版权所有,转载请标明出处)

  • 相关阅读:
    精彩源于起点——2018年潍坊市首次青少年Python编程公开课
    第一款Micropython图形化编辑器—Python Editor
    [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵
    Android-Notification通知Demo
    Android-Handler更新View加线程
    Android-Handler更新View
    Android-Service开发步骤
    Android-高级UI控件_TabHost标签组件
    Android-高级UI控件_SeekBar拖动条
    Android-高级UI控件_ProgressDialog进度条对话框
  • 原文地址:https://www.cnblogs.com/potential/p/2764578.html
Copyright © 2020-2023  润新知