Ir diretamente para o conteúdo

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.

QGIS DocumentaçãoConsulte a documentação do QGIS para saber mais sobre como ligar e editar dados entre camadas.
Widget
Pré-visualização na aplicação móvel
Perspetiva do pai/mãe (parente)Mergin Maps formulário de contacto da aplicação móvel
Perspetiva do filho (referência de relação)Mergin Maps Formulário de referência sobre a relação com a aplicação móvel

Estão disponíveis exemplos de projetos e guias

Pode analisar mais detalhadamente as relações 1-N:

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:

Mergin Maps widgets de relação de aplicações móveis

A título de exemplo, vamos utilizar um projeto Mergin Maps Documentação do projeto/formulários - relaçõesdocumentaçã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:

  1. 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)
  2. Definir a relação nas Propriedades do Projeto
  3. 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

QGIS DocumentaçãoUUID (Identificador Universalmente Único) é gerado de forma a ser único e não será alterado durante a sincronização. Por conseguinte, Recomendamos vivamente a utilização de UUID para associar camadas.

Para criar um campo destinado a armazenar UUIDs únicos:

  1. Adicione um novo campo com Texto (cadeia de caracteres) tipo de dados, neste caso: uuidAdicionar um novo campo de texto

  2. 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. UUID como valor predefinido no formulário de atributos

    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:

  1. No menu principal, selecione Projectos > Propriedades ...QGIS menu Propriedades do projeto

  2. No Relações separador, clique no Adicionar relação botão QGIS propriedades do projeto, separador «Relações», botão «Adicionar relação»

  3. 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 uuid que 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

    Configuração da relação «um para muitos» em QGIS

  4. 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:

  1. Aceda ao separador «Formulário de Atributos» nas «Propriedades da Camada»

  2. Repare no relação-entre-o-parque-e-as-comodidades foi 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.

    Configuração da relação «um para muitos» em QGIS

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

QGIS relação de atributos

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 +:

Mergin Maps widget de relação da aplicação móvel

  • 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 estrangeira fk-uuid) é preenchido automaticamente com base no elemento pai (neste caso Parque B).
  • Guarde as alterações. O formulário do Parque B Esta funcionalidade apresenta agora mais uma entrada no widget de relações (mesa de piquenique).

Mergin Maps Widget de relação da aplicação móvel: adicionada funcionalidade de filhos

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.

  1. Aceda ao separador «Formulário de Atributos» nas «Propriedades da Camada»

  2. 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)

    QGIS configuração de referência de relação de formulário de atributos

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.

QGIS atributos, formulário, relação, referência

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.

Mergin Maps Widget de relação da aplicação móvel: adicionada funcionalidade de filhos

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.

Várias fotografias numa única publicação na aplicação móvel « Mergin Maps »

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: