O uso da consola python para preparar um mapa offline a partir de um WMS (transferência de mosaicos)

Este estudo explica como preparar mapas off-line a partir de WMS / WFS ou qualquer mapa carregado na vista do mapa do QGIS baixando os tiles com a ajuda de um script no console de python. O script também gera um mosaico de todas as peças para posterior utilização.

Acessar mapas raster / vetor através do serviço de mapeamento Web service (WMS) é muito comum e eficiente. Ele tem várias vantagens, tais como segurança, estilos centralizados e flexíveis mapa. Um exemplo são os mapas do Google, Yahoo, Bing, MODIS, Landsat, mapas publicados pela NASA, NRSC (Índia). A desvantagem / limitação de WMS é que funciona via internet ou intranet. Pode não ser possível obter conexão com a internet sempre, especialmente no campo durante o levantamento. Também WMS funciona lento, em comparação com qualquer formato de imagem off-line, como GeoTiff, jpg, img etc.

Utilização do QGIS

O QGIS fornece uma ferramenta para ligar/aceder a qualquer serviço WMS. A ligação WMS baseada num simples URL e uma vez a ligação estabelecida o mapa por ser visualizado na vista de mapa do QGIS. Se nós guardarmos uma extensão visível a partir de uma vista de mapa do QGIS como jpg (Ficheiro > Guardar como Imagem) irá criar um world file que tem a informação fas coordenadas geográficas de uma região em particular. Ex.: sample.jpg é o mapa e sample.jpgw tem as coordenadas. Isto significa que a imagem transferida está georeferenciada. Pode transferir mosaicos num formato de grelha manualmente e usar mais tarde offline., A transferência manual é possível se a área for muito pequena ou tiver uma resolução de imagem baixa.

QGIS com mosaicos WMS

QGIS com mosaicos WMS

Consola Python

Foi escrito um pequeno script na “Consola Python” com ajuda disponível no website oficial do QGIS no Livro de Programadores PyQGIS. O script consiste basicamente nos 4 componentes que se seguem

  1. Coordenadas X,Y (canto superior esquerdo e canto inferior direito) do primeiro mosaico

  2. Tamanho do mosaico a ser transferido (ex.: 0.001 X 0.001 graus)

  3. Número de mosaicos a transferir (cálculo baseado na extensão total do mapa e no tamanho do mosaico)

  4. Caminho de saída para armazenar os ficheiros/mosaicos de saída

O script funciona em dois ciclos simples, o primeiro define a extensão do mapa na vista do QGIS e corre linhas/colunas. Uma vez definida a extensão do mapa então o mapa é carregado no QGIS. O atraso de 3 segundos (depende da ligação da internet) é introduzido depois de guardar o mapa como jpg no directório definido pelo usuário. Uma vez executado o script, todos os mosaicos são criados no directório e podem ser directamente carregados para o QGIS como um único mosaico preparado a partir do menu Raster > Diversos >Juntar ou Construir (Catálogo) Raster. Ambas as ferramentas geram um mosaico mas a diferença é que o Juntar cria uma imagem independente de mosaicos enquanto que o Virtual Raster gera uma ligação para todos os mosaicos individualmente (os mosaicos são necessários).

Script Python e o caminho onde os mosaicos são guardados

Script Python e o caminho onde os mosaicos são guardados

O método tem uma limitação, quando altera o mapa no servidor acabará por se refletir offline (mapa transferido). Neste caso o usuário tem de repetir o processo e gerar um novo mapa offline. A segunda limitação é a que o mapa criado será um formato de imagem; não pode ser usado para mapas temáticos ou classificação de imagens. Com alguns esforços extra alguns mapas de uso do solo podem ser convertidos em vector sem perda de dados.

Âmbito

O mosaico gerado é uma imagem pura mesmo se for transferida a partir de uma mapa temático (7-8 cores). Usando uma ferramenta avançada como a reclassificação, camada/banda guardada no raster pode ser convertida num vector poligonal. O WMS tem vários pedidos tais como, getcapabilities, getmap, getfeatureinfo, etc. Os polígonos podem ser recuperados usando a informação do atributo getfeatureinfo. O script pode ser convertido num módulo para que qualquer pessoa sem conhecimentos de programação possam usar o script.

Conclusão

A experiência em cima mostra que o QGIS pode ser usado num nível avançado. Com conhecimentos básicos de programação qualquer um pode escrever pequenos scripts ou um módulo para melhorar a qualidade do trabalho e poupar tempo. Dentro do QGIS, aceda a um repositório de módulos que é desenvolvido pelo mundo é o melhor para o QGIS. O Livro de Programador PyQGIS é um recurso muito bom para escrever um script e para processar dados raster mais facilmente com ajuda das ferramentas GDAL.

Autores

Este artigo foi contribuído em Maio 2014 pelo Prashant Kadgi, que vive em Pune (Índia) e actualmente trabalha como consultor na GIS APP Consultancy Services. Desde 2009, ele usa SIG & DR em projectos NRM, floresta, e-governance e software em diferentes regiões da Índia e do mundo.