[Pywps-dev] Raster Output error

Lorenzo Bottaccioli lorenzo.bottaccioli at gmail.com
Wed Jun 29 01:25:42 PDT 2016


Hi Jachym,

This is the GET request:

http://localhost/pywps?service=wps&version=1.0.0&request=execute&Identifier=rast_try&datainputs=raster=@xlink:href=file:///home/lorenzo/aspect_1ifGBx0

Tnx
Il 29 giu 2016 10:23 AM, "Jachym Cepicky" <jachym.cepicky at gmail.com> ha
scritto:

> Hi Lorenzo,
>
> looks like your request is not formatted well - the XML input. How does it
> look?
>
> J
>
> út 28. 6. 2016 v 15:29 odesílatel Lorenzo Bottaccioli <
> lorenzo.bottaccioli at gmail.com> napsal:
>
>> HI all,
>>
>> I have setup the pywps linked by Jachym (
>> https://github.com/jachym/pywps/tree/pygrass) run on Apache2 with
>> mod_wsgi.
>> I have created a wsgi file with this script
>>
>> *import sys*
>> *sys.path.insert(0, '/home/lorenzo/tools/pywps-4/')*
>> *import pywps*
>> *from pywps.app import Service,  Process*
>> *from processes.raster import Raster*
>> *from processes.solar.PV_NOCT import PV_CALC*
>> *from processes.get_year_rad import get_year_rad_pitch*
>> *from processes.get_year_rad_zstat import get_year_rad_pitch_query*
>> *from processes.get_year_rad_all import get_year_rad_all*
>> *from processes.solar.real_sky import Real_sky*
>>
>> *application = Service(processes=[Raster(),*
>> * PV_CALC(),*
>> * get_year_rad_pitch(),*
>> * get_year_rad_pitch_query(),*
>> * Real_sky(),*
>> * get_year_rad_all()], cfgfile='/var/www/pywps/pywps.cfg')*
>>
>> I still get an error when I try to use the Raster process which is:
>>
>> *from pywps import Process, ComplexInput, ComplexOutput,
>> get_format,LiteralOutput, Format*
>> *class Raster(Process):*
>>
>> *    def __init__(self):*
>> *        inputs = [ComplexInput('raster','Raster
>> input',[Format('GEOTIFF')])]*
>>
>> *        outputs = [ComplexOutput('raster_out', 'Raster
>> output',[Format('GEOTIFF')]),LiteralOutput('response', 'Output response',
>> data_type='string')]*
>> *        super(Raster, self).__init__(*
>> *            self._handler,*
>> *            identifier='rast_try',*
>> *            title='Raster try',*
>> *            inputs=inputs,*
>> *            outputs=outputs,*
>> *            store_supported=True,*
>> *            status_supported=True*
>> *        )*
>>
>> *    def _handler(self, request, response):*
>>
>> *        from osgeo import gdal*
>> *        app=request.inputs['raster'][0].file*
>> *        inds = gdal.Open(app)*
>> *        outdriver = gdal.GetDriverByName('GTiff')*
>> *        outds = outdriver.CreateCopy('output.tiff', inds)*
>> *        outds.FlushCache()*
>> *        response.outputs['raster_out'].output_format = Format('GEOTIFF')*
>> *        response.outputs['raster_out'].file = 'output.tiff'*
>> *        response.outputs['response'].data = 'done'*
>> *        return response*
>>
>>  The error I get in the apache error.log is:
>>
>> [Tue Jun 28 15:23:54.052594 2016] [:error] [pid 4437:tid 140256591759104]
>> ERROR:PYWPS:Exception: code: 400, locator: None, description:
>> [Tue Jun 28 15:23:54.052615 2016] [:error] [pid 4437:tid 140256591759104]
>> Traceback (most recent call last):
>> [Tue Jun 28 15:23:54.052617 2016] [:error] [pid 4437:tid 140256591759104]
>>   File
>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0.0_alpha2-py2.7.egg/pywps/app/WPSRequest.py",
>> line 80, in _post_request
>> [Tue Jun 28 15:23:54.052618 2016] [:error] [pid 4437:tid 140256591759104]
>>     doc = lxml.etree.fromstring(self.http_request.get_data())
>> [Tue Jun 28 15:23:54.052620 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring
>> (src/lxml/lxml.etree.c:68106)
>> [Tue Jun 28 15:23:54.052622 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 1785, in lxml.etree._parseMemoryDocument
>> (src/lxml/lxml.etree.c:102455)
>> [Tue Jun 28 15:23:54.052626 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 1673, in lxml.etree._parseDoc
>> (src/lxml/lxml.etree.c:101284)
>> [Tue Jun 28 15:23:54.052628 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 1074, in lxml.etree._BaseParser._parseDoc
>> (src/lxml/lxml.etree.c:96466)
>> [Tue Jun 28 15:23:54.052629 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 582, in
>> lxml.etree._ParserContext._handleParseResultDoc
>> (src/lxml/lxml.etree.c:91275)
>> [Tue Jun 28 15:23:54.052630 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 683, in lxml.etree._handleParseResult
>> (src/lxml/lxml.etree.c:92461)
>> [Tue Jun 28 15:23:54.052632 2016] [:error] [pid 4437:tid 140256591759104]
>>   File "parser.pxi", line 633, in lxml.etree._raiseParseError
>> (src/lxml/lxml.etree.c:91924)
>> [Tue Jun 28 15:23:54.052633 2016] [:error] [pid 4437:tid 140256591759104]
>> XMLSyntaxError: None
>>
>> Any suggestion to solve it?
>>
>> Best,
>>
>> Lorenzo
>>
>>
>>
>> 2016-06-28 10:28 GMT+02:00 Lorenzo Bottaccioli <
>> lorenzo.bottaccioli at gmail.com>:
>>
>>> Hi Jachym,
>>>
>>> I have changed my code in this. I create the file 'output.tiff' the
>>> error indeed was not related to output.tiff.
>>>
>>> from pywps import Process, ComplexInput, ComplexOutput,
>>> get_format,LiteralOutput, Format
>>>
>>>
>>> *class Raster(Process):*
>>>
>>> *    def __init__(self):*
>>> *        inputs = [ComplexInput('raster','Raster
>>> input',[Format('GEOTIFF')])]*
>>>
>>> *        outputs = [ComplexOutput('raster_out', 'Raster
>>> output',[Format('GEOJSON')])]*
>>> *        super(Raster, self).__init__(*
>>> *            self._handler,*
>>> *            identifier='rast_try',*
>>> *            title='Raster try',*
>>> *            inputs=inputs,*
>>> *            outputs=outputs,*
>>> *            store_supported=True,*
>>> *            status_supported=True*
>>> *        )*
>>>
>>> *    def _handler(self, request, response):*
>>>
>>> *        from osgeo import gdal*
>>> *        app=request.inputs['raster'][0].file*
>>> *        inds = gdal.Open(app)*
>>> *        outdriver = gdal.GetDriverByName('GTiff')*
>>> *        outds = outdriver.CreateCopy('output.tiff', inds)*
>>> *        outds.FlushCache()*
>>> *        response.outputs['raster_out'].output_format =
>>> Format('GEOTIFF')*
>>> *        response.outputs['raster_out'].file = 'output.tiff'*
>>> *        return response*
>>>
>>>  This is the Error:
>>>
>>> 130.192.5.114 - - [28/Jun/2016 10:26:51] "GET
>>> /wps?service=wps&version=1.0.0&request=execute&Identifier=rast_try&datainputs=raster=@xlink:href=file:///home/lorenzo/aspect_1ifGBx0
>>> HTTP/1.1" 500 -
>>> Traceback (most recent call last):
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836,
>>> in __call__
>>>     return self.wsgi_app(environ, start_response)
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820,
>>> in wsgi_app
>>>     response = self.make_response(self.handle_exception(e))
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403,
>>> in handle_exception
>>>     reraise(exc_type, exc_value, tb)
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817,
>>> in wsgi_app
>>>     response = self.full_dispatch_request()
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1478,
>>> in full_dispatch_request
>>>     response = self.make_response(rv)
>>>   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1577,
>>> in make_response
>>>     rv = self.response_class.force_type(rv, request.environ)
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.11.4-py2.7.egg/werkzeug/wrappers.py",
>>> line 847, in force_type
>>>     response = BaseResponse(*_run_wsgi_app(response, environ))
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.11.4-py2.7.egg/werkzeug/wrappers.py",
>>> line 57, in _run_wsgi_app
>>>     return _run_wsgi_app(*args)
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.11.4-py2.7.egg/werkzeug/test.py",
>>> line 871, in run_wsgi_app
>>>     app_rv = app(environ, start_response)
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.11.4-py2.7.egg/werkzeug/wrappers.py",
>>> line 291, in application
>>>     return f(*args[:-2] + (request,))(*args[-2:])
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.11.4-py2.7.egg/werkzeug/wrappers.py",
>>> line 291, in application
>>>     return f(*args[:-2] + (request,))(*args[-2:])
>>>   File
>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/WPSResponse.py",
>>> line 180, in __call__
>>>     except HTTPException as httpexp:
>>> NameError: global name 'HTTPException' is not defined
>>>
>>> I'll test your banch ASAP and I let you know.
>>>
>>> Tnx,
>>>
>>> Lorenzo
>>>
>>>
>>> 2016-06-27 22:39 GMT+02:00 Jachym Cepicky <jachym.cepicky at gmail.com>:
>>>
>>>> Lorenzo,
>>>>
>>>> two things,
>>>>
>>>> in your code:
>>>>
>>>> IOError: [Errno 2] No such file or directory:
>>>> '/tmp/pywps/pypws_process_lQqN_6/done'
>>>> ERROR:root:Service error: near "''": syntax error
>>>>
>>>> means - you can not save output.file as 'done' - it must be file name
>>>>
>>>> second: there was bug in pywps, which lead to error while constructing
>>>> the final response from pywps, please test pygrass branch in my repository
>>>>
>>>> https://github.com/jachym/pywps/tree/pygrass
>>>>
>>>> one more time:
>>>>
>>>>         response.outputs['raster_out'].output_format = Format('GEOTIFF')
>>>>         response.outputs['raster_out'].file = 'output.tiff'
>>>>
>>>> should work ASSUMING, output.tiff is existing file!
>>>>
>>>>
>>>> pá 24. 6. 2016 v 13:17 odesílatel Lorenzo Bottaccioli <
>>>> lorenzo.bottaccioli at gmail.com> napsal:
>>>>
>>>>> Hi all,
>>>>>
>>>>> Can you please show a simple PyWPS process that revice a geotiff and
>>>>> returns it back and the url for requesting it?.
>>>>> I'm not finding a way to do that.
>>>>>
>>>>> Thanks in advantage,
>>>>> Best
>>>>>
>>>>>
>>>>> Lorenzo
>>>>>
>>>>> 2016-06-21 17:40 GMT+02:00 Jachym Cepicky <jachym.cepicky at gmail.com>:
>>>>>
>>>>>> hi,
>>>>>>
>>>>>> if you are running pywps in apache2, it's usually
>>>>>> /var/log/apache2/error.log
>>>>>> if flask - it should be written to the command line
>>>>>>
>>>>>> look for some pythonish error
>>>>>>
>>>>>> po 20. 6. 2016 v 17:29 odesílatel Lorenzo Bottaccioli <
>>>>>> lorenzo.bottaccioli at gmail.com> napsal:
>>>>>>
>>>>>>> Hi Jachym,
>>>>>>>
>>>>>>> As I wrote in the previous mail I have changed
>>>>>>>
>>>>>>> response.outputs['response'].file* = 'done' *in
>>>>>>> response.outputs['response'].data = 'done'  .
>>>>>>>
>>>>>>> But I stil get an error:
>>>>>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
>>>>>>> <title>500 Internal Server Error</title>
>>>>>>> <h1>Internal Server Error</h1>
>>>>>>> <p>The server encountered an internal error and was unable to
>>>>>>> complete your request.  Either the server is overloaded or there is an
>>>>>>> error in the application.</p>
>>>>>>>
>>>>>>>
>>>>>>> Which is the HTTPD error.log file? The pywps.log file is always
>>>>>>> empty and the log level is set to DEBUG
>>>>>>> Best,
>>>>>>>
>>>>>>> Lorenzo
>>>>>>>
>>>>>>> 2016-06-18 23:39 GMT+02:00 Jachym Cepicky <jachym.cepicky at gmail.com>
>>>>>>> :
>>>>>>>
>>>>>>>> hi,
>>>>>>>>
>>>>>>>> as jonas was saying: response.outputs['response'].data = 'done'
>>>>>>>> should work better
>>>>>>>>
>>>>>>>> Lorenzo:  do you get anything in the HTTPD server error.log file?
>>>>>>>>
>>>>>>>> pá 10. 6. 2016 v 15:30 odesílatel Lorenzo Bottaccioli <
>>>>>>>> lorenzo.bottaccioli at gmail.com> napsal:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I'have changed from file to data in response.outputs['response'].data
>>>>>>>>> = 'done', but bow I still get an error in the response.
>>>>>>>>>
>>>>>>>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
>>>>>>>>> <title>500 Internal Server Error</title>
>>>>>>>>> <h1>Internal Server Error</h1>
>>>>>>>>> <p>The server encountered an internal error and was unable to
>>>>>>>>> complete your request.  Either the server is overloaded or there is an
>>>>>>>>> error in the application.</p>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> The GET request is written like this:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> http://130.192.5.114:8080/wps?service=wps&version=1.0.0&request=execute&Identifier=rast_try&datainputs=raster=@xlink:href=file:///home/lorenzo/aspect_1ifGBx0
>>>>>>>>>
>>>>>>>>> In the terminal I dont get any error report.
>>>>>>>>>
>>>>>>>>> Tnx,
>>>>>>>>>
>>>>>>>>> Lorenzo
>>>>>>>>>
>>>>>>>>> 2016-06-10 10:20 GMT+02:00 Jonas Eberle <jonas.eberle at gmx.de>:
>>>>>>>>>
>>>>>>>>>> The error "no such file or directory" comes from the following
>>>>>>>>>> line:
>>>>>>>>>> response.outputs['response'].file = 'done'
>>>>>>>>>>
>>>>>>>>>> As response is a LiteralOutput I guess it is not correct to use
>>>>>>>>>> the file attribute, better use the data attribute:
>>>>>>>>>> response.outputs['response'].data = 'done'
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Jonas
>>>>>>>>>>
>>>>>>>>>> ----- Am 10. Jun 2016 um 10:13 schrieb Jachym Cepicky <
>>>>>>>>>> jachym.cepicky at gmail.com>:
>>>>>>>>>>
>>>>>>>>>> Hi Lorenzo,
>>>>>>>>>> There are two bugs as I understand. The first one:
>>>>>>>>>>
>>>>>>>>>> IOError: [Errno 2] No such file or directory:
>>>>>>>>>> '/tmp/pywps/pypws_process_lQqN_6/done'
>>>>>>>>>>
>>>>>>>>>> do you have /tmp/pywps/ directory in you system (and is it
>>>>>>>>>> writeable?)
>>>>>>>>>>
>>>>>>>>>> The second bug is about attempt to write log to database
>>>>>>>>>>
>>>>>>>>>> nice report btw, with the process I believe, we can fix it (both)
>>>>>>>>>> once we find out what the problem could be
>>>>>>>>>>
>>>>>>>>>> Jachym
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> st 8. 6. 2016 v 11:50 odesílatel Lorenzo Bottaccioli <
>>>>>>>>>> lorenzo.bottaccioli at gmail.com> napsal:
>>>>>>>>>>
>>>>>>>>>>> Hi List,
>>>>>>>>>>>
>>>>>>>>>>> I'm trying to run a process that recives a GeoTIFF as input and
>>>>>>>>>>> response a GeoTIFF as output. But I'm having an error. The process is this:
>>>>>>>>>>> from pywps import Process, ComplexInput, ComplexOutput,
>>>>>>>>>>> get_format,LiteralOutput, Format
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> class Raster(Process):
>>>>>>>>>>>
>>>>>>>>>>>     def __init__(self):
>>>>>>>>>>>         inputs = [ComplexInput('raster','Raster
>>>>>>>>>>> input',[Format('GEOTIFF')])]
>>>>>>>>>>>
>>>>>>>>>>>         outputs = [ComplexOutput('raster_out', 'Raster
>>>>>>>>>>> output',[Format('GEOJSON')]),LiteralOutput('response', 'Output response',
>>>>>>>>>>> data_type='string')]
>>>>>>>>>>>         super(Raster, self).__init__(
>>>>>>>>>>>             self._handler,
>>>>>>>>>>>             identifier='rast_try',
>>>>>>>>>>>             title='Raster try',
>>>>>>>>>>>             inputs=inputs,
>>>>>>>>>>>             outputs=outputs,
>>>>>>>>>>>             store_supported=True,
>>>>>>>>>>>             status_supported=True
>>>>>>>>>>>         )
>>>>>>>>>>>
>>>>>>>>>>>     def _handler(self, request, response):
>>>>>>>>>>>
>>>>>>>>>>>         from osgeo import gdal
>>>>>>>>>>>         app=request.inputs['raster'][0].file
>>>>>>>>>>>         inds = gdal.Open(app)
>>>>>>>>>>>         outdriver = gdal.GetDriverByName('GTiff')
>>>>>>>>>>>         outds = outdriver.CreateCopy('output.tiff', inds)
>>>>>>>>>>>         outds.FlushCache()
>>>>>>>>>>>         response.outputs['raster_out'].output_format =
>>>>>>>>>>> Format('GEOTIFF')
>>>>>>>>>>>         response.outputs['raster_out'].file = 'output.tiff'
>>>>>>>>>>>         response.outputs['response'].file = 'done'
>>>>>>>>>>>         return response
>>>>>>>>>>>
>>>>>>>>>>> The error that I recive is this one:
>>>>>>>>>>>
>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/Process.py",
>>>>>>>>>>> line 156, in _run_process
>>>>>>>>>>>     wps_response.update_status('PyWPS Process finished', 100)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/WPSResponse.py",
>>>>>>>>>>> line 41, in update_status
>>>>>>>>>>>     self.doc = self._construct_doc()
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/WPSResponse.py",
>>>>>>>>>>> line 171, in _construct_doc
>>>>>>>>>>>     output_elements = [self.outputs[o].execute_xml() for o in
>>>>>>>>>>> self.outputs]
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/inout/outputs.py",
>>>>>>>>>>> line 276, in execute_xml
>>>>>>>>>>>     literal_data_doc = WPS.LiteralData(text_type(self.data))
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/inout/basic.py",
>>>>>>>>>>> line 231, in get_data
>>>>>>>>>>>     return IOHandler.get_data(self)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/inout/basic.py",
>>>>>>>>>>> line 173, in get_data
>>>>>>>>>>>     file_handler = open(self.source, mode='r')
>>>>>>>>>>> IOError: [Errno 2] No such file or directory:
>>>>>>>>>>> '/tmp/pywps/pypws_process_lQqN_6/done'
>>>>>>>>>>> ERROR:root:Service error: near "''": syntax error
>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/Service.py",
>>>>>>>>>>> line 358, in _parse_and_execute
>>>>>>>>>>>     wps_response = process.execute(wps_request, uuid)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/Process.py",
>>>>>>>>>>> line 145, in execute
>>>>>>>>>>>     wps_response = self._run_process(wps_request, wps_response)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/Process.py",
>>>>>>>>>>> line 178, in _run_process
>>>>>>>>>>>     wps_response.update_status('Process error: %s.%s Line %i %s'
>>>>>>>>>>> % (fname, method_name, exc_tb.tb_lineno, e), -1)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/app/WPSResponse.py",
>>>>>>>>>>> line 47, in update_status
>>>>>>>>>>>     update_response(self.uuid, self)
>>>>>>>>>>>   File
>>>>>>>>>>> "/usr/local/lib/python2.7/dist-packages/pywps-4.0-py2.7.egg/pywps/dblog.py",
>>>>>>>>>>> line 67, in update_response
>>>>>>>>>>>     cur.execute(update)
>>>>>>>>>>> OperationalError: near "''": syntax error
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> How can I fix this?
>>>>>>>>>>>
>>>>>>>>>>> Best,
>>>>>>>>>>>
>>>>>>>>>>> Lorenzo
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> pywps-dev mailing list
>>>>>>>>>>> pywps-dev at lists.osgeo.org
>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/pywps-dev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> pywps-dev mailing list
>>>>>>>>>> pywps-dev at lists.osgeo.org
>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/pywps-dev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pywps-dev/attachments/20160629/6304f5a2/attachment-0001.html>


More information about the pywps-dev mailing list