1.4. 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:
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
.
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.
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.
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.
Pressione o botão Let's get started!
para abrir a janela principal do QGIS (Figura 1.34).
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 .