Estive procurando uma maneira de gerar mapas estáticos do lado do servidor usando Python (ou qualquer outro idioma, não importa).
Posso criar os mapas que desejo com o QGIS (e eles parecem realmente ótimos), mas não sei como automatizar o processo.
O que eu quero é;
Criando um estilo de mapa no QGIS e exportando-o para algum tipo de XML (existe um plugin chamado quantumnik, mas não está mais disponível, eu acho)
Executando uma consulta no PostGIS no meu script Python
- Criando um shapefile ou apenas um PNG usando o conjunto de dados retornado da consulta e estilo XML definido acima.
- Repetindo todo o processo todas as noites com diferentes conjuntos de dados.
Eu brinquei com o Mapnik, mas ainda não consegui gerar um mapa de calor ( https://github.com/stellaeof/mapnik-rasterizers )
Eu li sobre o servidor QGIS, GeoServer, MapServer. Mas agora estou confuso, pois há muitas ferramentas por aí.
O Mapnik é a direção certa ou existem ferramentas melhores para esse tipo de processo?
Ou existe uma maneira de usar o QGIS programaticamente em um servidor?
EDITAR:
Depois de tentar várias coisas diferentes, decidi usar o GeoServer. Eu o instalei usando a imagem do contêiner do docker: https://github.com/kartoza/docker-geoserver Ele pode gerar png, gif, jpeg e também pode servir camadas WMS que podem ser facilmente integradas ao Leafletjs.
O único problema é que estou tentando projetar meus mapas primeiro com o QGIS e depois exportá-los para o GeoServer usando o plug-in "Geoserver Explorer" e ele não funciona bem para rótulos e outros recursos. Não há maneira fácil de gerar SLD no QGIS, eu acho. Eu continuo corrigindo as configurações do SLD manualmente depois de exportá-las para o GeoServer. Mas essa ainda é a melhor solução, eu acho.
Ainda seria ótimo se você pudesse sugerir melhores plugins ou maneiras de integrar o QGIS e o GeoServer ou qualquer outro editor de SLD.
Respostas:
Sim, é complicado e, em parte, por causa de muitas peças em movimento no processo. Eu fiz algo semelhante usando Python e Mapnik. Abaixo está o procedimento passo a passo:
1) Um script python baixa os dados do servidor (neste caso, dados dispersos da estação meteorológica). 2) Um script bash executa gdal_grid que interpola os dados e grava um arquivo GeoTIFF. 3) Um script bash executa o generate_tiles.py usando um arquivo de estilo mapnik predefinido e o GeoTIFF para criar todos os blocos. 4) Um aplicativo da Web usando a camada OpenLayers + TMS consome esses blocos.
Espero que ajude. Felicidades
fonte