Estou procurando uma maneira fácil e em pequena escala de apresentar um ou mais shapefiles de polígonos on-line (em um site municipal sem nenhuma infraestrutura existente de servidor de mapas, para ser mais preciso). No momento, estou fazendo todo o trabalho com o QGIS, e eu preferiria manter todo o código aberto (não há orçamento sobrando para grandes investimentos em software).
A pesquisa deste tópico resultou em um número esmagador de abordagens possíveis e me deixou bastante confuso. O que eu estou procurando é
- ser capaz de mostrar polígonos categorizados em um mapa temático (- se possível, seria bom obter pop-ups ou recuperar informações de atributos - mas isso é altamente opcional)
- Eu preferiria fazer a maior parte do trabalho (estilo, etc.) no QGIS
- OSM como mapa base ficaria perfeitamente bem
Até agora, os blocos de mapa personalizados em um mapa base do OSM se parecem com o que estou procurando (ou existe uma solução melhor)? Qual seria a melhor maneira de criar esses blocos?
qgis
openstreetmap
openlayers
web-mapping
tiles
SAnderka
fonte
fonte
Respostas:
Para uma maneira simples de fazer isso, começando com o QGIS, você pode usar o QGIS Mapserver, que pode servir mapas que você cria usando a interface QGIS normal. Como alternativa, você pode optar pelo GeoServer, que é baseado em Java e provavelmente mais fácil de instalar. Como os dois programas veiculam mapas usando padrões abertos, se você iniciar um e precisar mudar mais tarde, não há necessidade de alterar o cliente.
Depois de configurar um sistema para servir mapas WMS, você precisará de um front end do cliente. Eu recomendaria o OpenLayers , pois é bastante simples de começar e facilmente expansível. Ele lida com blocos WMS, WMST e OSM sem problemas.
Por fim, pode ser necessário mudar para blocos para as camadas WMS (digamos que você comece a receber mais de 50 a 100 solicitações por minuto em hardware razoável); então, você deve colocar um cache de blocos na frente do servidor de mapas. Se você usou o GeoServer, pode usar o GeoWebCache que está embutido ou o TileCache .
fonte
Tudo isso pode ser feito no QGIS e no
ogr2layers
plugin. O fluxo de trabalho é simples:Estilize seus dados no QGIS. Use a simbologia antiga como tive problemas com o
New Symbology
quando usar oogr2layers
plugin.Inicie o
ogr2layers
plug - in e defina as configurações dos openlayers (como tamanho do mapa, controles do mapa, mapa base, etc.). Isso criará um diretório que contém asindex.html
camadas de dados e suas convertidas comogeojson
arquivos.Faça o upload do diretório no servidor da web.
Observe que isso é apenas para um mapa da web simples. Para criar mapas base personalizados e outros recursos de mapeamento da web, confira as respostas de iant e Peter.
fonte
Outra opção é o TileMill - ele suporta lado a lado, interação e cartografia em uma interface baseada na Web fácil de usar, incluindo definições de estilo em uma linguagem proto-CSS chamada cascadenik . Usando o TileMill, você pode gerar arquivos mbtiles que podem ser consumidos com algo como o TileStream . Dito isso, ainda existem alguns truques com a implantação das saídas mapeadas, mas isso lhe daria uma boa plataforma para gerar blocos de alta qualidade.
fonte
Decidi fornecer algumas informações sobre como finalmente fui para o meu serviço de mapas lado a lado. JavaScript puro e GeoJSONs não foram uma solução, porque eu tenho que lidar com aproximadamente 40 mil polígonos e 33 mil pontos. Então eu fui para a telha. Ah, e como ainda não tenho acesso ao servidor raiz, não posso configurar o GeoServer ou algo semelhante (não seria financeiramente viável para um único cliente no momento)
Após algumas pesquisas e leituras, finalmente me estabeleci com o OpenLayers (depois de algumas apresentações com o GMaps). O grande livro de Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) realmente me ajudou muito, porque também abrange algumas dicas básicas de JavaScript e dicas de depuração.
Trabalhei com todos os meus dados vetoriais no QGIS, é claro, esse é definitivamente o caminho a seguir para um pequeno freelancer como eu (também conheço algumas coisas do ArcGIS na universidade, mas o QGIS oferece tudo o que eu sempre precisei até agora).
Nomear o mapa e criar as peças era um desafio maior. Primeiro, eu fui junto com o " GMapCreator " do CASA, mas colocar vários shapefiles em camadas provou ser tedioso (eu tenho que fornecer dados de pontos sobre polígonos e, em seguida, uma fronteira municipal envolvendo tudo). É absolutamente possível fazer isso no GMapsCreator (e eu fiz isso no estágio de demonstração), mas são necessários 3 ciclos completos de renderização (primeiro você cria peças, depois as peças existentes ficam "superexcitadas" com recursos posteriores - renderizando na ordem certa é importante!), e os menus de estilo são um pouco volumosos e confusos. Salvar seu mapa e editá-lo mais tarde também é um problema complicado.
O TileMill parecia muito promissor, especialmente o estilo CSS, então eu olhei para ele. Infelizmente, é apenas para Mac ou Linux, o que pode assustar algumas pessoas. Gostei muito do que vi, então montei uma partição Ubuntu no meu disco rígido, baixei-a e estilizei meus mapas. Às vezes, a documentação sobre a sintaxe de estilo é um pouco escassa, mas assistir ao vídeo demo (linkado no site principal) responde quase tudo. É possível fazer algumas coisas interessantes com estilos aninhados e / ou condicionais, e algum entendimento básico de CSS deve realmente levá-lo aonde você quer ir.
No final, o TileMill renderiza um belo arquivo * .mbtiles. Eu não acho que exista uma maneira de exibi-los diretamente no OpenLayers (pelo menos não consegui encontrar um?), Então estava na hora de usar outra ferramenta: mbutil . Essa ferramenta "descompacta" o arquivo mbtiles em uma estrutura de pastas comum que contém os pngs lado a lado dos meus dados nos níveis de zoom selecionados.
Por fim, carreguei todos esses arquivos no meu servidor FTP, fiz algumas leituras pesadas no OL para atualizar meu webmap (você adiciona os blocos criados como uma camada TMS, mas acho que o URL da fonte e o nome da camada corretos levaram algum tempo e pesquisando no Google) e depois passamos algumas horas mexendo nos problemas básicos de html / CSS. Eu queria um mapa de largura / altura de 100% com uma legenda flutuante, seguindo as orientações de identidade "corporativas" dos meus clientes (é um município, como mencionado).
Ah, e até agora eu uso o Google Maps como camadas de base, mas isso pode ser substituído em breve por algumas imagens aéreas personalizadas veiculadas via WMS (não fornecidas por mim, mas pela pesquisa e administração de dados geográficos do estado).
Espero não ter esquecido nada importante, mas, se o fiz, sinta-se à vontade para perguntar! Vou verificar esta discussão ocasionalmente.
fonte
Se você tiver menos de 1.000 polígonos, considere o comentário do @ Mapperz em uma solução vetorial - não é necessário criar e armazenar imagens lado a lado não interativas se você tiver apenas alguns polígonos.
As imagens lado a lado são ideais para informações altamente densas, como imagens de satélite, estradas ou 50.000 polígonos do setor censitário.
A solução mais simples para um pequeno número de polígonos é converter o shapefile em um KML e enviá-lo para o Google My Maps.
Se você codificar em Javascript, a solução mais interativa é a API do Google Maps (ou OpenLayers) para desenhar polígonos e criar janelas pop-up de informações. Você pode começar convertendo os polígonos do shapefile, usando a biblioteca GDAL, em um arquivo geoJSON (uma maneira Javascript de armazenar informações geográficas).
Ou, se você seguisse a rota dos blocos, poderia armazenar blocos na Amazônia ou na nuvem do Google sem problemas internos.
Esta entrada do blog de Mapeamento Temático possui um bom resumo das vantagens da abordagem de vetor sobre a abordagem de blocos que você está considerando.
Boa sorte!
fonte
Eu sinto por você companheiro, como eu tenho trabalhado lentamente o meu caminho para a mesma conclusão. Tendo aprendido QGIS, tentei quantamnik e mapnik. Mas enquanto ele portará o estilo do qgis, é uma viagem de ida e os sistemas de estilo não são 1 para 1; portanto, você terá que aprender o estilo do mapnik de qualquer maneira. Suponho que o mesmo se aplica à função de exportação do qgis mapserver. Não parece ser uma "maneira fácil" de aprimorar o servidor de mapas, basta enxertá-lo e permitir muito tempo.
Mapnik, geoserver, mapserver, parece que existem devotos de cada um, mas o mapserver parece ser o caminho do meio.
Dito isto, há um atalho que encontrei e o qgis tem uma opção de linha de comando para rasterizar um mapa do qgis com a resolução e os limites de sua escolha e cria um arquivo de mundo. Com isso, você pode usar o maptiler ou o gdal2tiles para colocar uma camada de cada vez. Obviamente, não seria bom para 20 níveis de zoom, nem sei qual é o limite máximo de tamanho png.
fonte