1.4. QGIS

QGIS

Este documento apresenta os passos necessários para instalação do software livre QGIS no Linux Ubuntu ou através do Docker. Utilizaremos a versão estável denominada 3.16 Hannover.

1.4.1. Instalação no Linux Ubuntu

Aviso

Os passos apresentados abaixo foram realizados no Ubuntu Bionic (18.04 LTS). No entanto, devem funcionar para as versões Ubuntu Focal (20.04 LTS) e Ubuntu Xenial (16.04 LTS).

Aviso

Ao invés de instalar o QGIS diretamente no sistema operacional da sua máquina, é possível usar o Docker. Neste caso, consulte a Seção 1.4.2.

Garanta que você tenha as ferramentas adequadas para instalação do pacote com o QGIS:

sudo apt-get update

sudo apt-get install gnupg software-properties-common

Utilize o seguinte comando para importar a chave de assinatura do repositório:

wget -qO - https://qgis.org/downloads/qgis-2020.gpg.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/qgis-archive.gpg --import

sudo chmod a+r /etc/apt/trusted.gpg.d/qgis-archive.gpg

Inclua o repositório do QGIS:

sudo add-apt-repository "deb https://qgis.org/ubuntu $(lsb_release -c -s) main"

Em seguida, atualize sua lista de pacotes:

sudo apt-get update

Finalmente, para instalar o QGIS, utilize o seguinte comando:

sudo apt-get install qgis qgis-plugin-grass

Nota

Se quiser instalar o QGIS Server, acrescente o pacote qgis-server na linha acima.

Nota

Mais informações sobre a instalação podem ser encontradas em QGIS Installers.

1.4.2. Instalando o QGIS através de um Contêiner Docker

Aviso

Se você já tiver instalado o QGIS com os passos descritos na Seção 1.4.1, não há necessidade de seguir os passos desta seção.

Esta seção irá mostrar como criar uma imagem Docker que permita lançar o aplicativo QGIS versão 3.22 a partir de um contêiner Docker.

Aviso

Estamos considerando o uso do Docker em um sistema Linux.

Aviso

Antes de começar, verifique se você consegue executar o comando id, que fornece informações sobre um determinado usuário do sistema operacional e seus grupos:

id

No caso da minha instalação Linux, meu usuário se chama gilberto, seu UID é 1000, e o grupo principal, gilberto com GID 1000:

uid=1000(gilberto) gid=1000(gilberto) groups=1000(gilberto),...

Os comandos abaixo irão utilizar este aplicativo em linha de comando para obter informações do seu usuário e então criar um usuário equivalente no sistema da imagem que iremos preparar.

1.4.2.1. Criando a Imagem Docker bdgeo/qgis

Copie o arquivo Dockerfile mostrado abaixo (Trecho de Código 1.1) para um diretório exclusivo, de onde realizaremos a construção da imagem Docker:

Trecho de Código 1.1 - Dockerfile.
 1ARG BASE_IMAGE=qgis/qgis:release-3_22
 2FROM ${BASE_IMAGE}
 3
 4LABEL img.author="Gilberto Ribeiro de Queiroz" \
 5      img.description="Este script possibilita a criação de \
 6uma imagem com o aplicativo QGIS que facilita o compartilhamento \
 7de volumes entre o host e os contêiners criados a partir dela."
 8
 9ARG ROOT_USER=root
10ARG QGIS_USER_NAME=qgis
11ARG QGIS_USER_ID=1000
12ARG QGIS_USER_GROUP=qgis
13ARG QGIS_USER_GROUP_ID=1000
14
15RUN pip3 install --upgrade pip && \
16    pip3 install --upgrade setuptools && \
17    pip3 install --upgrade wheel && \
18    pip3 install pb_tool
19
20RUN groupadd --gid ${QGIS_USER_GROUP_ID} ${QGIS_USER_GROUP} && \
21    useradd --create-home \
22            --shell /bin/bash \
23            --uid ${QGIS_USER_ID} \
24            --gid ${QGIS_USER_GROUP} ${QGIS_USER_NAME}
25
26USER ${QGIS_USER_NAME}
27
28WORKDIR /home/${QGIS_USER_NAME}
29
30USER ${ROOT_USER}

Abra o terminal de comandos do seu sistema operacional e vá para o diretório onde colocou os arquivos acima. Neste diretório, execute o comando docker build para criar a imagem Docker, como indicado abaixo:

docker build --build-arg QGIS_USER_NAME=`id --name --user` \
             --build-arg QGIS_USER_ID=`id --user` \
             --build-arg QGIS_USER_GROUP=`id --name --group` \
             --build-arg QGIS_USER_GROUP_ID=`id --group` \
             -t bdgeo/qgis:3.22 \
             --no-cache .

Nota

Para facilitar o gerenciamento do compartilhamento do sistema de arquivos entre o host e os contêiners criados a partir dessa imagem, iremos adicionar um usuário no sistema operacional da imagem com os mesmos nomes e valores do seu usuário e grupo principal. Caso você não tenha o aplicativo id, forneça os valores manualmente.

O comando acima fará, inicialmente, com que algumas imagens e camadas bases, necessárias à criação da imagem bdgeo/qgis, sejam recuperadas do Docker Hub. A Figura 1.30 mostra essa parte inicial do processo de construção da imagem bdgeo/qgis.

Construindo a imagem Docker chamada bdgeo/qgis

Figura 1.30 - Construindo a imagem Docker chamada bdgeo/qgis.

Assim que o download e extração dessas imagens e camadas bases terminarem, o processo de construção irá começar a executar os demais comandos contidos no Dockerfile, como mostrado na Figura 1.31.

Etapas de construção da imagem bdgeo/qgis

Figura 1.31 - Etapas de construção da imagem bdgeo/qgis.

Após algum tempo realizando a construção da imagem, duas mensagens notificando o sucesso da operação deverão ser escritas no terminal, como mostrado na Figura 1.32.

Finalização do processo de construção da imagem bdgeo/qgis

Figura 1.32 - Finalização do processo de construção da imagem bdgeo/qgis.

Consulte se a imagem criada aperece na lista das imagens disponíveis no seu sistema:

docker image ls

Uma linha como a mostrada abaixo deverá ser apresentada:

REPOSITORY      TAG     IMAGE ID        CREATED           SIZE
bdgeo/qgis    3.22    12c309ef8e91    7 minutes ago     7.4GB

1.4.2.2. Criando o Contêiner bdgeo-qgis

Aviso

Estamos supondo que seu usuário é capaz de criar contêiners sem a necessidade de utilizar sudo.

Uma vez criada a imagem bdgeo/qgis:3.22, é possível criar um contêiner que permita utilizar o QGIS. Mas antes, vamos criar dois diretórios que possam ser compartilhados como volumes entre o seu host e o novo contêiner que será criado mais adiante. Sugerimos criar os seguintes diretórios:

mkdir -p /home/gilberto/bdgeo/qgis-config
mkdir -p /home/gilberto/bdgeo/data

Nota

Substitua o nome de usuário gilberto pelo seu.

Nota

Para que o display do seu host possa ser usado pelos processos do contêiner que será criado, use o comando:

# permite que qualquer usuário se conecte ao servidor X do seu sistema.
xhost +

Lembre-se de fazer isso antes do comando docker run mostrado abaixo.

O comando abaixo fará com que um contêiner chamado bdgeo-qgis seja criado e colocado em execução:

docker run --detach \
           --name bdgeo-qgis \
           --volume /tmp/.X11-unix:/tmp/.X11-unix \
           --volume "/home/$(id --name --user)/bdgeo/qgis-config:/home/$(id --name --user)/.local/share/QGIS/QGIS3" \
           --volume "/home/$(id --name --user)/bdgeo/data:/home/$(id --name --user)/Data" \
           --env DISPLAY=unix$DISPLAY \
           --user `id --name --user` \
           bdgeo/qgis:3.22 qgis

Esse comando pressupõe a existência dos dois diretórios mencionados e que o usuário criado na imagem também possui o mesmo nome do seu (do host). Caso você tenha optado por caminhos diferentes ou nome diferente de usuário, faça os devidos ajustes no comando acima antes de executá-lo.

1.4.2.3. Inicializando o QGIS

O comando docker run da seção anterior fará com que uma janela como a mostrada na Figura 1.33 seja apresentada.

Janela de boas vindas ao QGIS

Figura 1.33 - Janela de boas vindas ao QGIS.

Pressione o botão Let's get started! para abrir a janela principal do QGIS (Figura 1.34).

Janela principal do QGIS

Figura 1.34 - Janela principal do QGIS.

Quando você encerrar o QGIS, o contêiner será interrompido. Para inicializar novamente este contêiner, use o comando docker start:

docker start bdgeo-qgis

Nota

Se quiser entrar no terminal do contêiner criado como usuário root, faça:

docker exec -it bdgeo-qgis bash

Nota

Se quiser entrar no terminal do contêiner criado com o usuário informado na criação da imagem, faça:

docker exec -it -u `id --name --user` bdgeo-qgis bash

Nota

Se quiser conferir outras imagens base do QGIS, consulte o repositório qgis/qgis no Docker Hub.

Nota

O Dockerfile mostrado nesta seção pode ser usado para construção de imagens com outras versões do QGIS. Se você quiser experimentar a versão 3.16 do QGIS, acrescente à opção --build-arg a versão correta da imagem do QGIS:

docker build --build-arg "BASE_IMAGE=qgis/qgis:release-3_16" \
             --build-arg QGIS_USER_NAME=`id --name --user` \
             --build-arg QGIS_USER_ID=`id --user` \
             --build-arg QGIS_USER_GROUP=`id --name --group` \
             --build-arg QGIS_USER_GROUP_ID=`id --group` \
             -t bdgeo/qgis:3.16 \
             --no-cache .