14 Julho 2017

Guia Prático de Edição de Shapefiles com o Software QGIS

A visualização de dados é maioritariamente feita através de relatórios em tabelas ou com recurso a gráficos de vários tipos tais como, bars, pies, lines, etc, mas quando falamos em dados baseados em localização, o tipo de visualização mais comum são os mapas.

No SSRS existem três tipos de mapas que podem ser utilizados, sendo eles mapas básicos, de bolhas ou analíticos. No entanto, no que toca à utilização de mapas, o verdadeiro desafio não é escolher o seu tipo, mas sim a construção do mesmo.

SSRS e as fontes de dados espaciais

Um mapa utiliza dois tipos de dados: espaciais e analíticos. Os dados espaciais definem a aparência do mapa e são constituídos por um conjunto de coordenadas. Cada conjunto de coordenadas define um elemento do mapa, como por exemplo, um polígono representa os contornos de um concelho, uma linha representa uma estrada ou um ponto representa a localização de uma cidade.

Quando vamos criar um mapa no SSRS é necessário selecionar a fonte dos dados espaciais. O SSRS possibilita a escolha de três tipos de fontes:

  • Map gallery: Galeria de mapas instalada com o SSRS. Esta galeria, como default, contém apenas o mapa dos Estados Unidos e mapas individuais de cada estado (é possível adicionar mapas de outros países à galeria);
  • ESRI Shapefile: Esta opção permite selecionar um ficheiro shapefile guardado no computador;
  • SQL Server spatial query: É possível construir uma query que utilize tipos de dados SQLGeometry ou SQLGeography de uma base de dados relacional.

 

ESRI Shapefiles

Um ESRI Shapefile, ou apenas shapefile, é um formato de ficheiros que armazena dados geoespaciais em forma de vetor e que contêm a posição, formato e atributos de elementos geográficos. Um shapefile deve ter pelo menos 3 ficheiros associados, sendo eles:

> .shp - este ficheiro armazena a geometria dos elementos;

> .shx - este ficheiro armazena o índice da geometria;

> .dbf - este ficheiro armazena toda a informação relativamente aos atributos (nomes de cidades, etc.).

Todos os ficheiros descritos acima devem estar guardados na mesma diretoria, com o mesmo nome, caso contrário o shapefile não é carregado.

Por o shapefile ser uma estrutura de ficheiros simples, tem como principal vantagem sobre outras fontes de dados a possibilidade de edição.

QGIS

Tal como foi dito acima, é possível editar este tipo de ficheiros e o software que vamos utilizar para esse efeito é a aplicação QGIS. É um software open source que permite a visualização, edição, análise de dados georreferenciados, entre outras funcionalidades. Para mais detalhe sobre esta aplicação, pode consultar a documentação fornecida no próprio site (a versão utilizada neste caso de estudo foi a 2.14.7).

Na imagem abaixo, podemos ver um exemplo da interface da aplicação QGIS com um shapefile do mapa de Portugal Continental carregado.

Fig.1: Interface do software de edição QGIS

Caso de estudo

A ideia de escrever este artigo surgiu da necessidade de criar um relatório com um mapa de Portugal continental e os arquipélagos ao nível dos distritos. O objetivo deste relatório era, ao clicar em cada um dos distritos no mapa, ser feito um drilldown para o detalhe dos concelhos.

Fig.2: À esquerda um mapa do continente ao nível dos distritos. 
Ao clicar, por exemplo, no distrito de Lisboa seria feito um drilldown 
para todos os concelhos do mesmo, como é visível à direita

Posto isto, o primeiro passo foi descarregar os ficheiros em formato shapefile correspondentes aos polígonos das áreas administrativas do continente e arquipélagos, disponíveis no site da Direção Geral do Território. O tamanho destes ficheiros pode chegar até aos 50MB pois contém muito detalhe, querendo isto dizer, que se criarmos um relatório utilizando este ficheiro pode resultar num relatório pesado com longos tempos de carregamento.

Uma vez que não é necessária toda a informação proveniente do ficheiro, editamo-lo, seguindo os passos abaixo (Nota: irá ser mostrado apenas a edição do mapa de Portugal e o mapa das Ilhas dos Açores – Central -, pelo que a lógica da edição dos mapas referentes às Ilhas dos Açores – Oriental e Ocidental – e Madeira será idêntica):

QGIS

1. Depois de extraídos os ficheiros, abra a ferramenta QGIS e abra o ficheiro da seguinte forma:

a. Pressione Ctrl+Shift+V e irá abrir uma janela tal como a de baixo. Clique “Pesquisar” e navegue até ao diretório que contém os ficheiros extraídos

 

b. O primeiro mapa a ser editado será o de Portugal, pelo que terá de abrir o ficheiro com a extensão .shp que se encontra na pasta selecionada, tal como na imagem abaixo. Depois de selecionado o ficheiro, clique “Open” e por fim “Abrir”

 

2. Depois de carregado o ficheiro podemos verificar a grande quantidade de polígonos visíveis no mapa pois este está detalhado ao nível das freguesias. O próximo passo é retirar a informação que não necessitamos para o nosso relatório final e para isso vamos alterar o shapefile original e agregá-lo ao nível dos distritos da seguinte forma:

a. Clique no menu “Vector” > “Ferramentas de geoprocessamento” > “Agregar” e irá aparecer a seguinte janela:

 

b. No campo Camada vetorial de entrada selecionamos o ficheiro que carregámos

c. Na opção Campo de agregação vamos alterar para “Distrito”. Antes de clicar “OK” é necessário definir um shapefile de saída e para isso clique em “Explorar” e guarde o novo ficheiro numa diretoria à escolha.

d. Depois de concluído o algoritmo de agregação, clique em “Fechar” e o novo mapa fica de imediato visível.

3. Como foi referido no início do documento existe um ficheiro com a extensão .dbf que armazena toda a informação relativamente aos atributos (nomes dos distritos, concelhos, freguesias, etc.). Nesta fase podem ser adicionados atributos, editar os já existentes ou remover os mesmos. No nosso caso vamos editar os atributos de acordo o nosso novo shapefile e remover a informação relativamente às freguesias da seguinte forma:

a. No painel das Camadas, imediatamente ao lado esquerdo do mapa, clicamos com o botão direito do rato sobre o novo shapefile e clicamos em “Abrir Tabela de Atributos”

 

b. Irá abrir a seguinte janela:

 

c. De seguida vamos carregar em Ctrl+E para ativar o modo de edição e Ctrl+L para apagar campos:

1. Na janela que é aberta, selecionar todos os campos exceto o Distrito

d. Carregue em Ctrl+S para guardar as alterações e novamente em Ctrl+E para desativar o modo de edição. Feche a janela.

4. De seguida vamos editar o mapa da Ilha dos Açores (Central), repetindo todos os passos acima. Especial atenção no passo 2 que ao invés de selecionar o campo de agregação “Distrito” terá de ser escolhido o campo “Ilha”. No passo nº3 terá de fazer da seguinte forma:

a. Remover todos os atributos exceto o campo “Ilha”

b. Carregar Ctrl+W para adicionar um novo campo:

1. Nome: Distrito

2. Tipo: Texto

3. Comprimento: 30

c. Copiar os valores do campo “Ilha” para o novo campo

d. Remover o campo “Ilha”

5. Concluídas as alterações acima vamos criar um único ficheiro shapefile composto pelos dois que acabámos de editar. Para isso vamos aceder ao menu “Vector” > “Ferramentas de gestão de dados” > “Unir Ficheiros Shapefile numa só...”. Irá abrir uma janela idêntica à abaixo:

 

a. No campo Diretoria de entrada clicar em “Explorar” e escolher a diretoria onde estão guardados os dois shapefiles editados anteriormente

b. No campo Shapefile de saída clicar em “Explorar” e dar um nome ao novo ficheiro. No nosso exemplo demos o nome “Distr_CAOP2016”

c. Clicar “OK”

d. No final, no painel das camadas, teremos os seguintes ficheiros:

 

6. O seguinte passo é editar as coordenadas dos mapas de forma a que fiquem juntos (sim, vamos colocar os Açores “junto” a Lisboa uma vez que este mapa não é à escala real):

a. No Painel das Camadas selecionar o ficheiro criado no último passo e com botão direito do rato clicar em “Aproximar à camada”

b. Selecionar novamente o ficheiro e com o botão direito do rato clicar em “Alternar Edição”

c. De seguida vamos selecionar os elementos que pretendemos mover clicando no ícone sombreado a amarelo na imagem abaixo:

 

d. Selecionado o elemento, vamos movê-lo para o centro, clicando no ícone sombreado a amarelo na imagem abaixo:

 

1. Fazer o mesmo para o mapa de Portugal

e. Por fim clique no ícone do lápis amarelo (imagem acima) em que irá aparecer uma mensagem para gravar as alterações e clique “Gravar”. O resultado final será idêntico à seguinte imagem:

 

7. Para terminar vamos diminuir a resolução do mapa para que desta forma possamos reduzir o número de pontos/vértices no mesmo, e também o tamanho do ficheiro, contribuindo assim para uma melhor performance na execução do relatório final. No menu “Vector” > “Ferramentas de Geometria” > “Simplificar Geometrias…”:

 

a. No campo “Tolerância de generalização” vamos definir o valor 25,0001 e clicar “OK”

1. Este valor é definido em tentativa e erro. Ao definir o valor acima reduzimos o tamanho do ficheiro de 7MB para 563KB. É possível reduzir ainda mais, mas atenção que quanto maior o valor definido maior a perda da definição do mapa pois este método converte polígonos em linhas

b. Guardar um novo ficheiro para que seja mantido o original

c. Clicar “OK”

d. O modo “Alternar Edição” ficará automaticamente ativo pelo que terá de clicar no ícone do lápis amarelo e guardar as alterações feitas

8. Executar novamente os passos acima, mas desta vez para criar os mapas ao nível dos concelhos

a. Para as ilhas terá de ser selecionado o campo “Município”

b. Na simplificação de geometrias o valor definido foi de 100,0001, reduzindo o ficheiro original de 20MB para 660KB

c. O resultado final será idêntico à seguinte imagem:

 

SSRS

Concluída a edição dos shapefiles vamos dar inicio à construção dos relatórios no SSRS:

1. Criar um projeto Report Server

2. Criar um relatório para os distritos e abrir o mesmo

3. Na toolbox do Visual Studio arrastar o item “Map” para a zona do relatório

 

4. Irá abrir uma janela como a da imagem abaixo. Vamos escolher a opção ESRI shapefile e selecionar o ficheiro editado referente aos distritos

 

a. Clicar “Next” nas próximas duas janelas

b. Na janela de escolha do tipo de visualização do mapa são apresentados três tipos: mapa básico, mapa colorido de análise e mapa de bolhas. Vamos selecionar a 2ª opção, o mapa analítico. Clicar “Next”

c. Na janela seguinte escolher a 2ª opção para adicionar um dataset que contém os dados analíticos para relacionar com o nosso mapa. Clicar “Next”

d. Criar um data source conectado à base de dados do SQL Server que contém a tabela com a informação analítica. Clicar “Next”

e. O próximo passo é construir a query que retorne os dados para a análise. Para o mapa dos distritos é importante ter a informação distinta referente a cada distrito. Depois de construída a query clicar “Next”

 

f. Neste passo é necessário definir qual o atributo que se irá relacionar com os dados espaciais de forma a criar uma relação entre os dados analíticos e o mapa. Escolher o campo “Distrito” e clicar “Next”

 

g. Na última janela podemos fazer umas simples alterações tais como alterar o tema do mapa, o esquema de cores do mesmo ou se pretendemos mostrar algum tipo de descrição no mapa tendo em conta os atributos definidos na query anterior. Vamos deixar para já da seguinte forma:

 

5. Feitas algumas alterações ao layout do relatório, o resultado final é o seguinte:

 

6. Criar um relatório para os concelhos e abrir o mesmo

7. Arrastar o item “Map” da toolbox do visual studio para a zona do relatório

a. Escolher a opção ESRI shapefile e selecionar o ficheiro referente aos concelhos. Clicar “Next” nas duas próximas janelas

b. Escolher o tipo de mapa analítico e clicar “Next”

c. Na janela seguinte escolher a 2ª opção para adicionar um dataset que contém os dados analíticos para relacionar com o nosso mapa. Clicar “Next”

d. Criar um data source conectado à base de dados do SQL Server que contém a tabela com a informação analítica. Clicar “Next”

e. O próximo passo é construir a query que retorne os dados para a análise. Para o mapa dos concelhos é importante ter a informação referente a cada concelho, a que distrito pertence (será necessário para mais tarde) e os valores analíticos. Depois de construída clicar “Next”

f. Definir o atributo que se irá relacionar com os dados espaciais, escolher o campo “Concelho” e clicar “Next”

g. Por último escolher qual o campo que queremos analisar. No campo “Field to visualize” selecionamos a coluna que contém os valores de análise. Clicar “Finish”

8. Feitas algumas alterações ao layout do relatório, o resultado final é o seguinte:

 

9. Ainda no relatório dos concelhos, vamos criar um parâmetro com o nome “Distrito”, tipo de dados “Text” e a visibilidade “Hidden”

10. No dataset criado para este relatório, é necessário editar a query de forma a acrescentar o seguinte filtro: where Distrito = @Distrito

11. Clicar com o botão direito do rato sobre o espaço em branco ao lado mapa e escolher do menu a opção “Viewport Properties...”

a. Nas propriedades “Center and Zoom”

1. Escolher a opção “Center map to show all data-bound map elements”

2. No campo “Zoom level (percent)” escrever a expressão =”Auto” e clicar “OK”

12. O próximo passo é definir uma action em cada polígono do mapa dos distritos de forma a criar o drilldown para os concelhos. Para isso, abra novamente o mapa dos distritos e clique sobre o relatório de forma a abrir o menu visível abaixo. Clique sobre a camada com o botão direito do rato e clique em “Polygon Properties...”

 

13. Na propriedade “Action” definir os valores tal e qual a imagem abaixo:

 

14. Clicar “OK” e executar o relatório dos distritos. No final teremos o seguinte resultado:

 

 

 

 

 

João Gaspar

Blog