QGIS Server Plugin to add OGC Web Processing Service capabilities
Python XSLT JavaScript HTML Makefile Batchfile Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
filters
help
i18n
scripts
test
.gitignore
LICENSE
Makefile
README.md
__init__.py
icon.png
local_server.py
metadata.txt
pb_tool.cfg
plugin_upload.py
pylintrc
resources.py
resources.qrc
wps4server.py
wps4serverServer.py
wps4server_dialog.py
wps4server_dialog_base.ui

README.md

wps4server: QGIS Server Plugin to add OGC Web Processing Service capabilities

Description

wps4server is a QGIS Server Plugin. It provides OGC Web Processing capabilities. It's based on PyWPS.

For more information, see:

Install on Ubuntu

Python plugins support for QGIS Server has been introduced with QGIS 2.8 and it is enabled by default on most distributions.

You'll find how to install QGIS Server in the QGIS documentation : http://docs.qgis.org/2.8/en/docs/user_manual/working_with_ogc/ogc_server_support.html

Prerequisites


We assume that you are working on a fresh install with Apache and FCGI module installed with:

$ sudo apt-get install apache2 libapache2-mod-fcgid
$ # Enable FCGI daemon apache module
$ sudo a2enmod fcgid

Package installation


First step is to add debian gis repository, add the following repository:

$ cat /etc/apt/sources.list.d/debian-gis.list
deb http://qgis.org/debian trusty main
deb-src http://qgis.org/debian trusty main

$ # Add keys
$ sudo gpg --recv-key DD45F6C3
$ sudo gpg --export --armor DD45F6C3 | sudo apt-key add -

$ # Update package list
$ sudo apt-get update && sudo apt-get upgrade

Now install qgis server:

$ sudo apt-get install qgis-server python-qgis

Install wps4server plugin


$ sudo mkdir -p /opt/qgis-server/plugins
$ cd /opt/qgis-server/plugins
$ sudo wget https://github.com/3liz/qgis-wps4server/archive/master.zip
$ # In case unzip was not installed before:
$ sudo apt-get install unzip
$ sudo unzip master.zip
$ sudo mv qgis-wps4server-master wps4server

Apache virtual host configuration


We are installing the server in a separate virtual host listening on port 81.

Let Apache listen to port 81:

$ cat /etc/apache2/conf-available/qgis-server-port.conf
Listen 81
$ sudo a2enconf qgis-server-port

The virtual host configuration, stored in /etc/apache2/sites-available/001-qgis-server.conf:

    <VirtualHost *:81>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/qgis-server-error.log
        CustomLog ${APACHE_LOG_DIR}/qgis-server-access.log combined

        # Longer timeout for WPS... default = 40
        FcgidIOTimeout 120
        FcgidInitialEnv LC_ALL "en_US.UTF-8"
        FcgidInitialEnv PYTHONIOENCODING UTF-8
        FcgidInitialEnv LANG "en_US.UTF-8"
        FcgidInitialEnv QGIS_DEBUG 1
        FcgidInitialEnv QGIS_SERVER_LOG_FILE /tmp/qgis-000.log
        FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0
        FcgidInitialEnv QGIS_PLUGINPATH "/opt/qgis-server/plugins"

        # ABP: needed for QGIS HelloServer plugin HTTP BASIC auth
        <IfModule mod_fcgid.c>
            RewriteEngine on
            RewriteCond %{HTTP:Authorization} .
            RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        </IfModule>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride All
            Options +ExecCGI -MultiViews +FollowSymLinks
            Require all granted
            #Allow from all
      </Directory>
    </VirtualHost>

Enable the virtual host and restart Apache:

$ sudo a2ensite 001-qgis-server
$ sudo service apache2 restart

Test


Open the link: http://localhost/qgis_mapserv.fcgi?SERVICE=WPS&REQUEST=GetCapabilities

Configuration

wps4server plugin uses an extended PyWPS config file. You will find the default configuration file and an example:

  • filters/PyWPS/pywps/default.cfg
  • filters/PyWPS/pywps/buffer.cfg

A wps4server configuration file has at least 4 sections:

  • wps contains general WPS instance settings
  • provider contains information about you, your organization and so on
  • server contains server settings, constraints, safety configuration and so on
  • qgis contains specific QGIS settings

The qgis section contains:

  • qgisserveraddress for accessing output data as a service
  • processing_folder the directory to find models, scripts and rscripts; the default path is ~/.qgis2/processing
  • providers the processes provider list to publish through WPS; by default all processes providers are published; you can select in this list qgis,gdalogr,script,model,r,grass,grass70,saga,otb
  • algs_filter a string to filter processes based on name and title
  • algs a list of processes to publish; for example qgis:fixeddistancebuffer,qgis:delaunaytriangulation,qgis:concavehull
  • input_bbox_crss a list of available input bounding box CRSs
  • output_ows_crss a list of available CRSs for Opengis Web Service output
  • outputs_mimetypes_vector a list of available output mimeTypes for vector, this parameter is made for reducing the list and select the default one
  • outputs_mimetypes_raster a list of available output mimeTypes for raster, this parameter is made for reducing the list and select the default one

The server section is documented in the pywps/doc/ folder, but some QGIS spcific behaviours are described here:

  • outputUrl the base URL for the returned results, if the URS begins with a /, the protocol, port and domain name will be automatically taken from the server CGI environment, this allows for zero-configuration deployments (e.g. in a docker container).

To use an other config file than the default one, you can use:

  • CONFIG parameter in the URL
  • PYWPS_CFG environment variable

Use default data

wps4server is able to use server geodata, which datasource is defined in a QGIS project files. The project can be the same that you use for WMS, WFS or WCS.

To use a QGIS project, you can use:

  • MAP parameter in the URL, like for the others OGC Web Services
  • QGIS_PROJECT_FILE environment variable