Mais

Limitar os valores disponíveis no campo suspenso do formulário QGIS de acordo com o valor selecionado no campo anterior?

Limitar os valores disponíveis no campo suspenso do formulário QGIS de acordo com o valor selecionado no campo anterior?


Estou construindo um formulário de entrada bastante complexo para uma camada armazenada em um banco de dados PostGIS. Estou seguindo este cenário de uso:

Em várias ocasiões, tenho campos suspensos que permitem ao usuário selecionar um tipo de artefato (preenchido por meio de relação de valor para outra tabela em um banco de dados), seguido imediatamente pelo campo que permite selecionar um subtipo (também preenchido por meio de relação de valor para outra tabela em um base de dados). Eu gostaria que a escolha de subtipos na lista suspensa fosse limitada pela seleção anterior de um tipo.

Por exemplo, se o tipo "cerâmica" for selecionado, a lista suspensa de subtipos precisa ser limitada a apenas opções com um valor-chave de 1 a 10.

Se o tipo "metais" for selecionado, a lista suspensa do subtipo precisa ser limitada a apenas opções com um valor-chave de 11 a 20.

E assim por diante.

Eu me sinto relativamente fluente em SQL e qgis expression builder, e eu acho que isso poderia ser alcançado através da opção de filtro de expressão no widget de relação de valor, mas eu não saberia como invocar os valores de um formulário que está sendo preenchido no momento.

Eu suspeito que algum código python seja necessário. - Não sou fluente em python, mas acho que poderia adaptar um exemplo de código às minhas necessidades renomeando os campos etc.

A pergunta é semelhante ao QGIS Mapeamento de valor de campo, mas as respostas não me indicaram as direções que eu poderia aplicar com meu conhecimento atual.


Se você criar uma tabela com todos os valores que você precisa e adicionar ao seu mapa. Crie um relacionamento (Projeto> propriedades> relações). Então, ao construir seu formulário nas propriedades do widget de edição, selecione a relação de valor. Aqui você pode filtrar o que é exibido (ou seja, se x, então, mostre os valores onde filterField = y)


Obtenha o plugin Form Value Relation. Eu criei um formulário inteligente com caixas suspensas em cascata com este plug-in.


Assista o vídeo: Salvando estilo de shapefile - QGis