source: branches/PublicaMundi_David-devel/docs/kernel/mapserver.rst

Last change on this file was 696, checked in by djay, 9 years ago

Small fixes in the main documentation.

  • Property svn:keywords set to Date Author
File size: 10.8 KB

Optional MapServer support

Processing geospatial data using WPS Services is usefull. Publishing their results directly as WMS, WFS or WCS ressources is even more convenient. This is possible since ZOO-Project 1.3 using the optional MapServer support. The latter thus allows for automatic publication of WPS Service output as WMS/WFS or WCS using a :ref:`kernel_index` specific internal mechanism which is detailed in this section.

?

Note

MapServer logo MapServer is an open source WMS/WFS/WCS server. Learn more by reading its documentation.

How does it work ?

If a request with mimeType=image/png is sent to :ref:`kernel_index`, the latter will detect that the useMapServer option is set to true an it will automatically:

?
  • Execute the service using the <Default> block definition (these values must be understood by GDAL)
  • Store the resulting output on disk (in the [main] > dataPath directory)
  • Write a mapfile (in the [main] > dataPath directory) using the MapServer C-API (this sets up both WMS and WFS services).

Existing WPS Services source code doesn't need to be modified once the MapServer support is activated. It only takes to edit their respective :ref:`services-zcfg` files accordingly.

?

Note

In case of a vector data source output, both WMS and WFS configuration are included by default in the resulting mapfile.

Note

In case of a raster data source output, both WMS and WCS configuration are included by default in the resulting mapfile.

Depending on the requests, ZOO-Kernel is able to return a location header and different request types:

In this case, ZOO-Kernel will return the GetMap/GetFeature/GetCoverage request as KVP in the href of the result.

In this case, ZOO-Kernel will return the result of the GetMap/GetFeature/GetCoverage request as KVP of the href used in the previous case.

In this case, ZOO-Kernel will return the GetMap/GetFeature/GetCoverage request as KVP in a specific location header, which implies that the browser is supposed to request MapServer directly.

Whatever the default output mimeType returned by a WPS service is, it is used if the useMapserver option is found at runtime. As an example, if <Default> and <Supported> blocks are found in the ZOO Service configuration file as shown bellow, this means that the service returns GML 3.1.0 features by default.

Error: Failed to load processor guess
No macro or processor named 'guess' found

Installation and configuration

Follow the step described bellow in order to activate the ZOO-Project optional MapServer support.

Prerequisites

First download the lastest zoo-kernel by checking out the svn. Use the following command from do the directory where your previously checked out (in this example we will use <PREV_SVN_CO> to design this directory).

Error: Failed to load processor guess
No macro or processor named 'guess' found

Then uncompress the MapServer archive (ie. mapserver-6.0.1.tar.bz2) into /tmp/zoo-ms-src, and compile it using the following command:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Once done, compile ZOO-Kernel with MapServer support from the <PREV_SVN_CO> directory, using the following command:

Error: Failed to load processor guess
No macro or processor named 'guess' found

You can then copy the new ZOO-Kernel to /usr/lib/cgi-bin directory, as follow:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Main configuration file

Open and edit the /usr/lib/cgi-bin/main.cfg file, by adding the following content in the [main] section:

Error: Failed to load processor guess
No macro or processor named 'guess' found

The dataPath directory is mandatory and must belong to the Apache user.

Error: Failed to load processor guess
No macro or processor named 'guess' found

A symbols.sym file is required in this directory. Create it and add the following content in it:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Note

Only one symbol definition is required (with any name) for the WMS service output.

The ZOO-Project optional MapServer support is activated at this step. Don't forget to add the mapserverAddress and msOgcVersion parameters to the main.cfg file in order to to specify the path to MapServer and the OGC WebService version used by the Services.

?
.. code-block:: guess
     mapserverAddress=http://localhost/cgi-bin/mapserv.cgi
     msOgcVersion=1.0.0

Warning

ZOO-kernel will segfault (checking NULL value should correct this behavior) if the mapserverAddress parameter is not found

Service configuration file

useMapserver

In order to activate the MapServer WMS/WFS/WCS output for a specific service, the useMapserver parameter must be added to the <Default> or <Supported> blocks of the Service services-zcfg. If useMapserver=true, this means that the output result of the Service is a GDAL compatible datasource and that you want it to be automatically published by MapServer as WMS,WFS or WCS.

When the useMapserver option is used in a <Default> or <Supported> block, then you have to know what are the corresponding mimeType:

  • text/xml: Implies that the output data will be accessible through a WFS GetFeature request (default protocol version 1.1.0)
  • image/tiff: Implies that the output data will be accessible through a WCS GetCoverage request (default protocol version 2.0.0)
  • any other mimeType coupled with useMapserver option: Implies that the output data will be accessible through a WMS GetMap request (default protocol version 1.3.0). You can check the supported output mimeType by sending a GetCapabilities request to MapServer.

You get the same optional parameter msOgcVersion as for the main.cfg. This will specify that this is the specific protocol version the service want to use (so you may set also locally to service rather than globally).

Styling

The optional msStyle parameter can also be used to define a custom MapServer style block (used for vector datasource only), as follow:

Error: Failed to load processor guess
No macro or processor named 'guess' found

If a WPS service outputs a one band raster file, then it is possible to add a msClassify parameter and set it to true in the output ComplexData <Default> or <Supported> nodes of its zcfg file. This allows ZOO-Kernel to use its own default style definitions in order to classify the raster using equivalent intervals.

Error: Failed to load processor guess
No macro or processor named 'guess' found

Example

An example :ref:`services-zcfg` file configured for the optional MapServer support is shown bellow:

?
Error: Failed to load processor guess
No macro or processor named 'guess' found

In this example, the default output mimeType is image/png, so a WMS GetMap request will be returned, or the resulting image/tiff will be returned as WCS GetCoverage request.

Test requests

The optional MapServer support can be tested using any service. The simple HelloPy Service is used in the following example requests.

Note

The following examples require a zip file containing a Shapefile (http://localhost/data/data.zip) and a tif file (http://localhost/data/demo.tif)

Accessing a remote Zipped Shapefile as WFS GetFeatures Request:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Accessing a remote Zipped Shapefile as WMS GetMap Request:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Accessing a remote tiff as WMS GetMap Request:

Error: Failed to load processor guess
No macro or processor named 'guess' found

Accessing a remote tiff as WCS GetMap Request:

Error: Failed to load processor guess
No macro or processor named 'guess' found
Note: See TracBrowser for help on using the repository browser.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png