Aparência
Relações
Há casos em que vários registos de uma camada (ou tabela) estão relacionados com um elemento de outra camada, formando uma relação «um para muitos» (1-N). Por exemplo, pode haver várias fotografias de um elemento, várias inspeções do mesmo elemento ou várias peças, ou um elemento composto por vários polígonos com propriedades diferentes. Como estes casos de utilização variam, existem diferentes opções para configurar os formulários destas relações.
Widget | Pré-visualização na aplicação móvel |
|---|---|
| Perspetiva do pai/mãe (parente) | ![]() |
| Perspetiva do filho (referência de relação) | ![]() |
Estão disponíveis exemplos de projetos e guias
Pode analisar mais detalhadamente as relações 1-N:
- Projeto público
documentação/relações-entre-formulários contém a configuração descrita nesta página, bem como dados de exemplo
- Como associar vários registos a um elemento explica como adicionar vários registos a uma única funcionalidade. Consulte também o nosso projeto público:
documentação/formulários_relações-um-para-muitos
- Como anexar várias fotografias a elementos mostra como adicionar vários fotografias a uma única funcionalidade. Consulte também o nosso projeto público:
documentação/formulários_com_várias_fotografias
Prefere um vídeo? Aqui está um breve tutorial sobre relações:
Existem duas formas de adicionar elementos com relações na aplicação móvel: utilizando o widget de relação na camada principal ou utilizando o widget de referência de relação na camada secundária:

A título de exemplo, vamos utilizar um projeto documentação/relações-entre-formulários com duas camadas espaciais: parques e comodidades. Um parque pode ter várias comodidades, tais como bancos, mesas de piquenique, lareiras ou bebedouros. Cada tipo de comodidade só pode estar localizado num único parque. Assim, a relação entre estas camadas é de um para muitos (1-N): um parque com muitas comodidades.
Isto significa que os parques constituem a camada de referência (pai) e as infraestruturas são a camada referenciada (filho). Estarão relacionadas com base nas chaves primárias dos parques e nas chaves estrangeiras correspondentes da camada das infraestruturas, ligando as infraestruturas a um parque específico.
Chaves primárias são identificadores únicos. Embora todas as camadas tenham um campo de identificação predefinido quando são criadas (fid, id), estes IDs podem ser alterados durante a sincronização em Mergin Maps, por exemplo, quando vários topógrafos registam novos elementos ao mesmo tempo (ver Por trás da sincronização de dados (para uma explicação detalhada). Consequentemente, as características filhas podem acabar por ser associadas a uma característica pai errada.
Por conseguinte, Recomendamos vivamente a criação de um novo campo para chaves primárias e a utilização de UUIDs gerados pelo uuid() função executada quando uma funcionalidade é criada conforme descrito abaixo. O UUID (Identificador Universalmente Único) garante que as chaves primárias sejam únicas mesmo após a sincronização e que as características corretas sejam associadas.
Visão geral da configuração da relação «um para muitos»
É necessário configurar uma relação «um para muitos» (1-N) no seu Mergin Maps projeto no QGIS da seguinte forma:
- Crie um campo UUID único para a sua camada de referência (pai) e um campo para armazenar chaves estrangeiras na camada de referência (filho)
- Definir a relação nas Propriedades do Projeto
- Configure os formulários de atributos de ambas as camadas conforme necessário
Geração de identificadores únicos (UUID)
UUID como chaves primárias únicas
Para criar um campo destinado a armazenar UUIDs únicos:
Adicione um novo campo com
Texto (cadeia de caracteres)tipo de dados, neste caso:uuid
Utilize o
uuid()uma vez que o valor por defeito para este campo em Propriedades da camada.Esta função atribui um identificador único a cada elemento criado, mesmo quando diferentes topógrafos criam elementos em simultâneo.

Não utilize a opção «aplicar valor predefinido na atualização ». O UUID gerado não deve ser alterado.
Campo para chaves estrangeiras
Para criar uma relação 1-N entre duas camadas, a camada de referência (filha) tem de ter um campo para armazenar chaves estrangeiras.
Este campo tem de ter o mesmo tipo de dados que a chave primária: Texto (cadeia de caracteres). Aqui, vamos utilizar fk-uuid.
Configurar a relação em QGIS
Vamos agora analisar a configuração da relação 1-N em QGIS:
No menu principal, selecione Projectos > Propriedades ...

No Relações separador, clique no Adicionar relação botão

Especifique a relação:
- O ID é gerado automaticamente
- Nome é o nome da relação, neste caso
relação-entre-o-parque-e-as-comodidades - Referenciado (pai) é a camada dos parques, aqui:
parque para pais - Campo 1 do Referenciado (pai) é o campo
uuidque contém o único UUID criado conforme descrito aqui - Referência (filho) é a camada de comodidades, aqui:
serviços para crianças - Campo 1 do Referência (filho) a camada é a
fk-uuid, que funciona como uma chave estrangeira para associar as comodidades aos parques

Confirme a configuração clicando em OK
A relação «um para muitos» entre parques e equipamentos está agora definida em QGIS. A seguir, podemos configurar os formulários para ambas as camadas.
Configuração de formulários de atributos para relações 1-N
Os atributos do formulário para ambas as camadas associadas podem ser configurados conforme necessário, dependendo do método de recolha de dados preferido para a camada de referência (secundária):
- É possível adicionar elementos secundários através do formulário da camada de referência (principal), o que significa que pode utilizar o formulário de atributos da camada «parques» para adicionar, editar ou remover equipamentos.
- Os elementos filhos podem ser adicionados através do formulário da camada de referência (filha). É possível adicionar um novo elemento à camada de equipamentos e definir manualmente a ligação ao elemento do parque correspondente no formulário de atributos.
Ambas as opções funcionam tanto no site QGIS como na aplicação móvel.
Formulário de atributos da camada de referência (pai) — widget de relações
Explore o formulário de atributos da camada «parques»(pai) referenciada:
Aceda ao separador «Formulário de Atributos» nas «Propriedades da Camada»
Repare no
relação-entre-o-parque-e-as-comodidadesfoi automaticamente adicionado à lista de widgets disponíveis como Relações.Se utilizar o Drag and Drop Designer, pode adicionar ou remover manualmente o widget de relação do formulário.

Em QGIS, o formulário de atributos tem o seguinte aspeto:

Repare na parte editável relação-entre-o-parque-e-as-comodidades com a opção de adicionar novas funcionalidades (secundárias) ao comodidades camada diretamente a partir do parques formulário.
Agora, observe este formulário na aplicação móvel «Mergin Maps ». Os elementos de referência (pais) têm o widget de relação no formulário de atributos. Este apresenta todos os elementos filhos associados numa linha.
Aqui, parques característica Parque B já contém uma ligação para um banco do comodidades camada. Toque na funcionalidade secundária banco abre o formulário de atributos com a opção de editar o elemento.
É possível adicionar uma nova funcionalidade secundária tocando no botão +:

- Se a camada de referência (filha) for uma camada espacial, ser-lhe-á pedido que registe a geometria. Neste caso, os equipamentos são registados como pontos. Note-se que não é possível alterar a camada ativa.
- No formulário, pode preencher informações sobre a funcionalidade secundária (aqui adicionamos um
mesa de piquenique). Note-se que a referência à relação (chave estrangeirafk-uuid) é preenchido automaticamente com base no elemento pai (neste casoParque B). - Guarde as alterações. O formulário do
Parque BEsta funcionalidade apresenta agora mais uma entrada no widget de relações (mesa de piquenique).

Formulário de referência aos atributos da camada (filha) — widget de referência de relações
As comodidades da camada de referência (subordinada) também podem ter essa relação adicionada no formulário de atributos.
Aceda ao separador «Formulário de Atributos» nas «Propriedades da Camada»
Selecione o campo de chave estrangeira (neste caso:
fk-uuid) na lista de campos.Escolha «Referência de relação » como tipo de widget:
- Expressão de visualização define o nome de exibição da camada referenciada (neste caso:
nome) - Relação apresenta todas as relações disponíveis definidas no projeto (neste caso:
relação-entre-o-parque-e-as-comodidades)

- Expressão de visualização define o nome de exibição da camada referenciada (neste caso:
Em QGIS, o formulário de atributos da referência (filho) comodidades A camada tem este aspeto. O campo de chave estrangeira fk-uuid apresenta um menu suspenso com a lista de funcionalidades da camada de referência (pai) parques.
Neste caso, a ligação entre o recurso de lazer e o parque pode ser definida (ou editada) manualmente.

Funciona da mesma forma na aplicação móvelMergin Maps . Pode adicionar uma nova funcionalidade à camada de referência (secundária):
- Toque no botão «Adicionar » e capture a geometria
- Preencha o formulário «Atributos». Tenha em atenção que o referência de relação (chave estrangeira, aqui
fk-uuid) está vazio e tem de ser preenchido manualmente, selecionando um elemento da camada de referência (pai). - Guarde as alterações.

Galeria?
Seguiu estes passos e está a ver algo semelhante a isto? Se a camada de referência (subordinada) estiver configurada com o widget «Anexo» para fotografias, o formulário na aplicação móvel apresentará automaticamente uma galeria.

DICA
Para apresentar o widget de relações sem a galeria, utilize nogallery no nome ou na designação da relação.
A configuração recomendada para a galeria é explicada no artigo «Como anexar várias fotografias a um elemento», ou pode seguir este breve tutorial em vídeo:

