zoukankan      html  css  js  c++  java
  • 利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化 分类: Python ArcGIS for desktop ArcGIS for server 2015-08-06 19:49 3人阅读 评论(0) 收藏

    最近,一直纠结一个问题:做好的GP模型或者脚本在本地运行,一切正常;发布为GP服务以后时而可以运行成功,而更多的是运行失败,甚至不能知晓运行成功后的结果输出在哪里。

    铺天盖地的文档告诉我,如下信息:




    这些来自官方的Esri help信息大体可以总结为: GP服务结果的输出路径由服务器管理不能人为控制,即使是指定了它输出的工作环境,服务运行依然会忽略环境设置,而执行的结果会输出在PackageWorkspace指定的路径下,而packageWorkspace又是只读的,不能够对其指定的路径做出修改。

    万念俱灰间,以为这是一条再不能行的死路。

    ------------------------------------------------

    首先慢慢的分析,利用python找到这个packageWorkspace的输出路径到底是什么,即输出执行的环境,脚本如下:

    # -*- coding:utf-8 -*-
    import arcpy
    from arcpy import env
    import os
    inputpath = arcpy.GetParameterAsText(0)
    txtpath = os.path.join(inputpath,"env_file.txt") 
    
    outtxt = open(txtpath,'w')
    environments = arcpy.ListEnvironments()
    for environment in environments:
        envSetting = getattr(env,environment)
        outtxt.writelines(environment+":"+"	")
        outtxt.writelines(str(envSetting)+'
    ')
    outtxt.flush()
    outtxt.close()
    

    将以上脚本发布为服务,查看运行的结果如下:

    Packageworkspace指明了服务结果的输出路径,其实和预料的一样,在站点的directories路径下,只是相对冗长,且在该路径下打包了GP工具及输出的结果。

    那么服务输出的结果真的只能在这里么?该怎样设置?

     

    -------------------------------------------------

    实际上很简单的,服务端运行,之所以指定到服务器所管理的目录下,是因为需要调用GP服务的结果然后返回给客户端,也就是说,至少输出位置必须是服务器端可访问的、共享的,于是,将做好的GP模型再次发布,输入参数与输出位置均存在于服务器端可访问的位置上,再次执行服务,执行成功!

    多次实验的经验如下:

    1.      即使设置了scratch workspace与current workspace,对服务器端执行结果没有影响,因为环境设置自动被忽略。

    2.      服务的输入参数不被服务器可访问,而输出路径可被服务器端访问,执行会失败!

    3.      服务的输出路径不被服务器端可访问,输出参数路径可被服务器端访问,执行会失败!

    还有一点,想必大家会疑惑,GP模型的输出参数已经被屏蔽,又如何去自由选择输出的路径呢?

            这一点还是钻了一下空子的,只有输出的路径被屏蔽,如果不以输出的路径/文件形式存在,也就是不被检测为输出参数,就可以随心所欲了~

    具体的关于这部分模型的构建技巧,后续再给大家整理出来。

    ------------欢迎来访,拒绝转载---------- 


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    正则表达式
    JavaScript基础
    Servlet监听器
    Java EKT关键技术强化 tomcat中文乱码问题
    spring和springmvc 整合步骤
    [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] 'packaging' with value 'war' is invalid. Aggregator projects require 'pom' as packaging. @ line 9, column 16
    Pagehelper的 使用
    异步 json的使用
    分页技术 PageHelper
    Exception encountered during context initialization
  • 原文地址:https://www.cnblogs.com/gishh/p/4708987.html
Copyright © 2011-2022 走看看