Minha organização possui um aplicativo da web para exibir dados climáticos globais e regionais e estamos considerando melhorias para eles. Nossa idéia principal é criar um aplicativo baseado em OpenLayers para exibir rasters climáticos em camadas básicas, como OSM ou Google Maps. O mapa também pode incluir algumas outras camadas vetoriais de aplicativos e uma barra de cores ou outros recursos de legenda que descrevem os dados. Perto do que sei, tudo isso é possível com o OpenLayers.
Um requisito para o projeto, no entanto, é poder exportar ( idealmente do aplicativo da web) mapas de qualidade (mais ou menos). Um caso de uso típico seria algo como isto:
- Um usuário, usando a camada base como guia, navega para sua área de interesse
- O usuário seleciona um parâmetro climático (por exemplo, temperatura média para os anos 2040) ou um conjunto de parâmetros
- O usuário pressiona o botão "exportar" e baixa um mapa de boa qualidade, que inclui todos os elementos descritos no primeiro parágrafo.
Não consegui encontrar nada no OpenLayers sobre renderização para uma imagem. Alguém sabe se isso é possível? E se não, que outras abordagens de renderização poderíamos adotar? Suponho que precisaríamos passar todos os parâmetros do mapa (bbox, projeção, camadas incluídas etc.) para algum mecanismo de renderização externo; que mecanismos de renderização de código aberto existem por aí?
fonte
Respostas:
As principais maneiras de exibir mapas de impressão bonitos dos openlayers que eu conheço são:
-Geoserver com Geoext
-Mapa com Geoext
Ambas as soluções contam com uma parte java (por exemplo, http://geoserver.org/display/GEOS/Printing+in+GeoServer ou http://www.mapfish.org/doc/print/ )
-Openlayers autônomos (consulte o documento oficial http://trac.openlayers.org/wiki/Printing )
Mais recentemente, uma técnica parece renderizar imagem com o PhantomJS (um software que simula o navegador na linha de comando) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/
Algumas bibliotecas recentes usam a capacidade de renderização do Canvas do navegador para "capturar" imagens como este exemplo do OpenLayers 3 ou este folheto
fonte
Pense que você precisará procurar no Geoserver para criar um serviço WFS ou WMS ou WMST http://geoserver.org/display/GEOS/What+is+Geoserver
Em seguida, os Openlayers podem analisar o serviço Geoserver
http://openlayers.org/dev/examples/getfeature-wfs.html
WMTS (Serviço de mosaico de mapas da Web) http://openlayers.org/dev/examples/wmts.html
fonte
Para obter "qualidade de publicação", você deseja 300 dpi, portanto, usar os mapas que você passa para abrir camadas para renderização de tela provavelmente não é um iniciador.
A guia de exportação do OpenStreetMap usa o OpenLayers para selecionar o que você deseja exportar, mas o renderiza com um processo de servidor de back-end separado (na verdade, uma escolha de várias). Esta é provavelmente a abordagem que você terá que adotar. É improvável que você possa usar o Google Maps para isso.
fonte