../_images/logo_pywps.png ../_images/OSGeo_project.png

PyWPS Quickstart

PYWPS是一个写入的OGC WPS(Web处理服务1.0.0)服务器实现 Python .

默认情况下,pywps 4.0.0库安装在osgeo live上。这是一个核心库,不打算直接执行,而是用于WPS服务的开发。安 example service 基于 Flask 可在Github获得,以便与PYWPS进行第一次联系。

此快速入门介绍了如何:

  • 安装和配置PYWPS Flask示例服务
  • 表演 GetCapabilitiesDescribeProcessExecute 请求
  • 开发自己的WPS流程

安装PYWPS烧瓶

由于示例服务依赖于flask,请确保它安装在您的osgeo live上:

sudo apt install python-flask

然后从Github克隆存储库:

git clone https://github.com/geopython/pywps-flask.git

现在,移动到存储库文件夹并编辑配置文件。这可以通过类似 nano:

nano pywps.cfg

唯一需要验证的关键是日志数据库的位置。 Pywps-flask 提供可用于此目的的示例sqlite数据库。确定 database 设置如下:

database=sqlite:////home/user/pywps-flask/logs/pywps-logs.sqlite3

保存配置文件并退出 nano 现在可以运行服务:

python demo.py

如果一切顺利,您将收到如下信息:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

测试可用流程

打开web浏览器并将其指向示例服务正在侦听的地址: http://127.0.0.1:5000/ 您将看到以下页面:

../_images/pywps-4.0.0_example.png

使用绿色按钮探索服务。发行A GetCapabilities 请求对服务进行概述;发布 DescribeProcess 请求了解特定项目的详细信息。请注意浏览器地址中的请求URL。

现在是测试 Execute 请求。你可以试试 say_hello 流程,相当简单。将Web浏览器指向以下地址:

http://localhost:5000/wps?service=WPS&version=1.0.0&request=Execute&identifier=say_hello&dataInputs=name=OSGeo-Live

这个过程只是用一条“hello osgeo”消息回复,该消息编码在一个标准的WPS响应文档中。您的浏览器应该显示如下内容:

../_images/pywps-4.0.0_response.png

开发WPS流程

要开发新的流程,您所需要做的就是在 processes 文件夹。使用现有的过程作为模板来帮助您构造代码。仔细看一下 say_hello 流程显示了PYWPS流程的主要功能:

1。导入必要的资产并创建从PYWPS继承的类 Process 班级。在构造函数中,为输入和输出创建必要的对象:

from pywps import Process, LiteralInput, LiteralOutput, UOM

class SayHello(Process):
    def __init__(self):
        inputs = [LiteralInput('name', 'Input name', data_type='string')]
        outputs = [LiteralOutput('response',
                                 'Output response', data_type='string')]
  1. 调用父构造函数,传递进程的元数据:
super(SayHello, self).__init__(
    self._handler,
    identifier='say_hello',
    title='Process Say Hello',
    abstract='Returns a literal string output\
     with Hello plus the inputed name',
    version='1.3.3.7',
    inputs=inputs,
    outputs=outputs,
    store_supported=True,
    status_supported=True
)

三。创建 handler 方法,该方法将被调用以处理 Execute 请求。使用 requestresponse 对象来检索输入和设置输出。

def _handler(self, request, response):
    response.outputs['response'].data = 'Hello ' + \
        request.inputs['name'][0].data
    response.outputs['response'].uom = UOM('unity')
    return response

下一步是什么

PYWPS为您提供了编写自己的Python进程并相应地公开它们的自由和灵活性。

  • 官方文档-有关PyWPS配置和API的更多信息,请参阅 documentation 在PYWPS网站上。
  • 教程-尝试 workshop 在研讨会中使用的一个教程,用于向新用户介绍PYWPS 4。
  • 部署到生产 pywps-flask service is just an example and not designed for production. One possible alternative is a Django based service, pywps-django . 文档提供了有关如何 set up a production service 具有 ApachenginxGunicorn .