O Web Processing Service (WPS), definido pelo OGC, é um padrão que permite executar processos de análise espacial via Web. No GeoServer, o módulo WPS expõe funções nativas e customizadas que podem ser chamadas por requisições HTTP, retornando resultados em formatos como GML, GeoJSON ou até imagens raster.
1. Operações Fundamentais do WPS
1.1 GetCapabilities
É o ponto de partida: retorna um documento XML com os metadados do serviço.
Exemplo de chamada:
http://localhost:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetCapabilities
O resultado lista todos os processos disponíveis, seus identificadores e versões.
1.2 DescribeProcess
Usada para detalhar um processo específico, como por exemplo descrever o processo de Buffer.
Exemplo de chamada:
http://localhost:8080/geoserver/ows?service=WPS&version=1.0.0&request=DescribeProcess&identifier=JTS:buffer
A resposta XML mostra parâmetros obrigatórios e opcionais:
Input: geometria (linha, ponto, polígono), distância do buffer, unidades.
Output: geometria resultante (normalmente em GML).
1.3 Execute
Permite rodar de fato um processo, como por exemplo gerar buffer de 100 metros em torno de rios:
Exemplo de chamada:
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd" identifier="JTS:buffer"> <wps:DataInputs> <wps:Input> <ows:Identifier>geom</ows:Identifier> <wps:Data> <wps:ComplexData mimeType="application/wkt"><![CDATA[ LINESTRING(30 10, 10 30, 40 40) ]]></wps:ComplexData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>distance</ows:Identifier> <wps:Data> <wps:LiteralData>100</wps:LiteralData> </wps:Data> </wps:Input> </wps:DataInputs> <wps:ResponseForm> <wps:RawDataOutput mimeType="application/gml+xml"> <ows:Identifier>result</ows:Identifier> </wps:RawDataOutput> </wps:ResponseForm> </wps:Execute>
Esse request cria um buffer de 100 metros ao redor de uma linha fornecida em WKT.
2. Execução Síncrona vs Assíncrona
Síncrona: o cliente aguarda o processo terminar e recebe a resposta direta.
Assíncrona: ideal para análises pesadas; o WPS retorna um link onde o cliente pode acompanhar o status e baixar o resultado quando pronto.
3. Processos Comuns no GeoServer via WPS
- JTS:buffer – criação de zonas de influência.
- gs:Reproject – reprojeção de dados entre sistemas de coordenadas.
- gs:Area – cálculo de área de polígonos.
- gs:Bounds – obtenção do envelope mínimo de uma geometria.
Além disso, é possível desenvolver processos customizados em Java e integrá-los ao GeoServer.
4. Integração com QGIS e Python
QGIS: permite acessar WPS como provedor de processamento, facilitando a execução sem precisar lidar com XML manualmente.
Python (OWSLib):
from owslib.wps import WebProcessingService wps = WebProcessingService('http://localhost:8080/geoserver/ows', version='1.0.0') process = wps.describeprocess('JTS:buffer') execution = wps.execute('JTS:buffer', inputs=[('geom','POINT(10 10)'), ('distance',100)])
5. Boas Práticas
- Controlar tamanho máximo de uploads para evitar uso excessivo de recursos.
- Usar execução assíncrona para análises que demandam grande processamento.
- Monitorar logs do GeoServer para identificar gargalos em processos WPS.