arcgis server如何发布依赖第三方库的GP服务并成功运行rest查询服务

本文介绍:当我在桌面端的py文件制成的 脚本工具中,加载了一个第三方的库比如GDAL,:然后发布成GP(地理处理服务);那么web的server端怎么去运行这个GP服务工具的rest服务??

问题概述和分析描述

刚开始的脚本是这样的:
在这里插入图片描述
然后制作成这个的脚本工具
在这里插入图片描述
那如何制作呢? 参考:

如何由python脚本制成python工具:
ArcGIS Python如何将py脚本制作成python工具(自定义地理处理工具)

注:当然,上面博客链接描述的py文件,只是调用的arcmap库,这个在arcgis server的python环境中也是自带的有对应的库,那么如果我们引用第三方的库,就需要在server的环境下,也配置同样的库;

在桌面端是完全可以运行成功的:
在这里插入图片描述
但是发成GP服务后,提交get请求,就弹出这个错误:

在这里插入图片描述
但是报错为:

在这里插入图片描述

那么针对这么问题,应该如何解决呢:本博文,主要是针对这个问题进行讨论;

GP实际上是一种py脚本,可以运行在ArcMap中,可以运行在Server中,运行在Server中就作为一种服务功能,称之为Geoprocessor,很形象,地理处理器。

地理处理服务

地理处理服务的整个过程其实是包括:设计、制作、发布(或共享)和使用;

设计:是根据自己的业务逻辑层进行构建和设计;
制作:是如何制作地理处理工具;
发布:是如何发布地理工具,让其变为地理处理服务;
使用:是如何使用地理处理服务;

什么是地理处理工具

在现代 GIS 技术发展之前,**地理处理工具始终处在不断的演变之中。**这一时期,当地理分析人员尝试求解实际问题时,他们会聚在白板周围(那个时期也可能使用黑板)创建流程图和逻辑示意图,这与如今使用模型构建器创建的流程图和逻辑示意图非常相似。这些早期流程图中的任务逐渐演变为软件,并成为如今所见的一组核心地理处理工具。这是一个持续多年(且仍在继续)的重复过程,其间已将这些工具升级为一组随 ArcGIS 安装的简单基本运算符。

这些工具约有数百种,要了解各个工具的用法需花费一定时间。即使给定了确切的工具数量,任何一个单个文档也无法将所有工具都全部加以解释说明。本文档旨在指导您了解用于描述不同工具的使用目的和用途的各类其他文档。

可将地理处理视为一种语言,其中名词是地理数据(例如要素、表和栅格),而工具是动词(例如复制、裁剪和连接)。与任何语言一样,需要知道一些名词和动词才能进行交流,而本部分(及后续内容)向您介绍这些常见的地理处理动词(工具)。

最常用的 GIS 工具可自动执行一些以往手动完成的任务,例如,通过在一张地图上方叠加另一张地图来编译新地图,或者以物理方式将地图剪切成表示特定研究区域的各个部分,然后更改其投影。在此类手动执行的任务中,有些任务操作起来非常困难和复杂,以至于它们阻碍了地理知识和数据的宣传普及,而它们也是发明 GIS 的主要动力。

如何制作地理处理工具

要制作地理处理任务,通常要使用 模型构建器 或 Python 创建地理处理工具。您不必创建自己的工具,可以使用 ArcGIS 安装自带的多个系统工具中的任何一个。

下面详细介绍了各步骤:

选择一个或多个要作为服务中的任务的地理处理工具。可以使用 ArcGIS 所提供的若干系统工具中的一个,或者使用 ModelBuilder 或 Python 脚本创建自己的工具。
收集执行工具所需的输入数据。通常,这些数据集是 ArcMap 内容列表中的图层。
执行工具在结果窗口中创建结果。
如有必要,定义输入和输出数据集的符号系统。
将结果共享为地理处理服务。共享结果时,使用服务编辑器定义数据集的输入模式(如下所述)以及服务和其任务的其他属性。

有哪里途径可以制作地理处理工具

白话注释:就是任何用来做处理分析的工具,都可以认为是地理处理工具;
1、可以是单个的工具,

arcmap或者arcgis pro中的1400多个任意 的工具,这里就不一一罗列了;

2、也可以是很多工具的集合,也就是集成到一起:例如model builder;
在这里插入图片描述
3、也可以是利用arcpy库制作的python工具;

例如上述的这篇博文:
ArcGIS Python如何将py脚本制作成python工具(自定义地理处理工具)

什么是地理处理服务

地理处理服务是借助于万维网来展示 ArcGIS 强大分析功能的方式。地理处理服务包含地理处理任务,任务采用在 Web 应用程序中捕获的简单数据,对其进行处理,然后以如下形式返回有意义且有用的输出:要素、地图、报表及文件。任务可以计算危险化学泄漏物的可能疏散区、逐渐增大的飓风的预测踪迹和强度、用户定义的分水岭内土地覆被和土壤报表、包含所有权历史详细信息的宗地地图或污水处理系统的许可应用。这些服务的可能性是无穷的。

地理处理服务包含一个或多个地理处理任务。地理处理任务是一个**运行在服务器上的地理处理工具,它的执行和输出是通过服务器管理的。**将地理处理结果共享为地理处理服务后,会通过创建该结果的工具创建一个对应的地理处理任务。任务是基于 Web 的 API(例如 JavaScript)使用的一个术语,用于描述在服务器上执行工作并返回结果这一例程。

一种解释服务的有效方式是将服务视为四个独立的活动,即:设计、制作、发布(或共享)和使用(或消费)。关于地理处理服务的在线帮助介绍了制作、发布和使用方面的技巧。即如何使用 ArcGIS Desktop 和 Web 编程来创建和访问地理处理服务及其任务。服务的设计(包括服务执行的工作、服务的用途以及服务如何满足您的应用程序套件和组织目标的要求)不属于本文档范畴,但本书的各个主题中提供了大量有关设计的提示和想法。

白话注释:地理处理服务其实是一个运行在服务器上的地理处理工具,它的执行和输出是通过服务器管理的。地理处理服务其实是包括整个的:设计、制作、发布(或共享)和使用;

上面介绍了,什么是地理处理工具,如何制作,下面来说说如何进行发布和使用;

发布GP工具

在arcmap或者arcgis Pro 中,先成功运行模型,然后在result窗口,share as-> Geoprocessing service即是共享为GP服务;

使用

可通过 Web 客户端使用地理处理服务及其包含的任务。ArcGIS Desktop 就是这样一个 Web 客户端。

ArcGIS Desktop 允许您访问和使用任何地理处理服务,无需编程。

地理处理服务也可以添加为门户中的 Web 工具,但主要客户端是使用 JavaScript 开发的 Web 应用程序。
这些近年来开发的客户端使用标准 Internet 浏览器或定制的应用程序来显示和查询地理信息。

可以访问 GIS 服务的客户端示例包括 Web 浏览器、移动应用程序以及 ArcGIS Engine 应用程序。最重要的是,GIS 服务与其他任何 Web 资源一样可供用户进行搜索。可以通过上面列出的客户端或搜索引擎来查找 GIS 资源并立即使用这些资源。

Python环境分析

我们的arcmap依托的python环境在这个位置:

在这里插入图片描述
有些小伙伴会说,为什么会有两个呢;一个是安装arcmap自带的; 一个是安装server自带的;
自带的意思是:你安装了arcmap的话,安装程序会自动安装这个python环境,这个也是arcmap运行GP工具所需要依赖的;

ArcGISx6410.7这个文件夹是arcgis server自带的python64的环境;

打开arcmap的环境
在这里插入图片描述
我们会看到其实arcmap自带的python环境是python2.7.16版本 32位的;但是打开server的python环境,其是python2.716版本的64位的:
在这里插入图片描述

统一GP服务的环境

去找一下这个组件,直接安装就把arcmap的32位的python2变为64位的python2了;我这边这个是10.7.1的,所有版本的1071的;如果你的版本是10.3,那么去找对应版本的10.3的这个工具进行安装:
在这里插入图片描述
问:安装了 ArcGIS_BackgroundGP_for_Desktop_103_141996,但不是很明白这个的目的是什么:?

答:安装完,这个可以看一下,您的arcmap的python环境就变为64位了,因为server的python环境是64位的;所以您需要重新运行处理程序,然后发布GP服务。

安装完成后:从新安装gdal库,然后运行GP,然后发布GP服务,然后在server的环境下下面这个位置 安装对应版本的的gdal,在运行服务即可;

注:如果还是不行,可以具体分析一下错误原因;看arcmap目前运行的是64位的程序,在看一下是否可以考虑在安装完server的python gdal库后 ,需不需要重启server服务。

猜你喜欢

转载自blog.csdn.net/weixin_40625478/article/details/107081353