Eu estou querendo saber se há lib GIS de código aberto Python que possui APIs para oferecer suporte a chamadas WMS / WFS de outro servidor GIS (por exemplo, GeoServer) e salvar os dados de resposta (mapa base do WMS e camada WFS) como imagens.
alguma recomendação?
obrigado por todas as entradas!
ATUALIZAÇÃO :
o que estou tentando fazer é um serviço de impressão de mapas, usando OpenLayers como front-end e Django como servidor; O usuário cliente define a extensão e as camadas e, em seguida, envia a solicitação de impressão (que se refere aos parâmetros, isto é, extensão do mapa, nomes das camadas) para o servidor. O servidor assume essa solicitação e chama WMS / WFS novamente usando parâmetros de solicitação, salve a resposta como PDF, exporte esse link PDF para o cliente.
A parte difícil é que, como o servidor chama o WMS / WFS e combina / sobrepõe essas respostas (ou seja, junta esses mapas / camadas, já que o WMS geralmente é o mapa base, o WFS aponta para as camadas de recursos), finalmente salva esse objeto combinado como imagem.
nas respostas atuais, o urllib parece ser bom, mas não sei como combinar essas respostas (WMS, WFSs); O OWSLib também parece outra boa opção, mas indica que é uma ferramenta de programação do cliente, estou um pouco confuso que seja apropriado para o meu uso ...
quaisquer outras entradas ??
apreciar!
fonte
Respostas:
Existe o OWSLib que deve fornecer exatamente o que você precisa.
Documentação e exemplos aqui . Cliente neste contexto significa que é um aplicativo cliente para um servidor WMS / WFS - ele pode ser executado em um servidor, se necessário.
Depois de adicionar mais detalhes à sua resposta, parece que o aplicativo de impressão MapFish atende exatamente às suas necessidades. É um aplicativo Java que pode ser integrado com OpenLayers e stitch tiles, WMS, WFS etc. juntos e produz um PDF.
Por ser um aplicativo de linha de comando, ele pode ser manipulado com um wrapper Python. Veja os links a seguir para mais detalhes:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
fonte
Você pode usar a biblioteca python urllib para chamar um WMS diretamente e gravar a resposta em um arquivo. Há um exemplo decente de uso do urllib nesta resposta . Basta substituir o URL por um para um WMS, por exemplo, http: //some.wms.service? Request = GetMap & VERSION = 1.1.1 & BBOX = 141.00, -29.00.141.80, -28.40 & SRS = EPSG: 4326 & LAYERS = LANDSAT_MOSAIC & WIDTH = 800 & HEIGHT = 600 & FORMAT = imagem / png .
Você também pode usar a biblioteca GDAL para acessar o WMS ( http://www.gdal.org/frmt_wms.html ) e a biblioteca OGR para acessar o WFS ( http://www.gdal.org/ogr/drv_wfs.html )
Se você quiser criar uma imagem do WFS, poderá usar a função gdal.RasterizeLayer para criar um jpg. Há um exemplo aqui .
fonte
Aqui está um exemplo simples. No lado do servidor:
E no lado do cliente usando jquery:
fonte
Você pode usar o GeoTools para buscar os dados dos servidores WMS / WFS e renderizar em um objeto gráfico Java. Então, algo como o iText pode ser convertido para um pdf.
Se você realmente precisa usar o Python, espero que você possa usar um wrapper para gerenciar tudo.
fonte