Sou desenvolvedor e tenho uma ferramenta que gera um ativo geojson para nossa equipe de dados trabalhar usando o aplicativo QGIS. Devido à fonte original dos dados, esses recursos têm alguns atributos representados como dados hierárquicos complexos, impossíveis de projetar em um esquema plano.
Precisamos ser capazes de visualizar / editar o campo de atributo com a mesma eficácia que um blob JSON, em vez de uma string literal.
Quais instalações estão disponíveis para fazer isso no QGIS? Há algum plug-in de edição de campo que suporte esse trabalho? Idealmente, algum tipo de editor JSON pop-up com validação de formato de documento e nós recolhíveis, semelhante à forma como os editores do Visual Studio (Code) funcionam.
Como alternativa, algum outro fluxo de trabalho que nos permita gerenciar esses dados em uma ferramenta externa e injetá-los novamente no recurso de origem.
UPDATE: O Postgres foi ativado e criou uma coluna JSON a partir de uma coluna de texto existente contendo JSON. O QGIS o oculta na tabela de atributos. Alguma recomendação adicional sobre como trabalhar com atributos JSON diretamente no banco de dados?
Respostas:
Verifique isto: https://github.com/qgis/QGIS/pull/7869 Agora, os atributos do tipo json / jsonb são visíveis usando o QGIS 3.3.0 Nighly (versão principal do desenvolvedor)
fonte
Nas versões recentes do QGIS (> 3.3), se você tiver um campo JSON em um banco de dados PostgreSQL, poderá usar a
map_get
função em qualquer lugar com o Expression Dialog para extrair um valor específico.Por exemplo, se você tem um campo JSON chamado
"extraData"
e o conteúdo é:então
map_get(extraData,'param1')
produziriaSome string
Suponho que (embora ainda não tenha tentado) você pode usar recursivamente a função para recuperar valores profundamente aninhados.
Existem outras funções, como a
from_json
função que retorna todo o conteúdo. Dê uma olhada na seção Mapas dentro da caixa de diálogo Expressão.fonte
Suponha que tenhamos um campo / coluna chamado ' location ' com o seguinte conteúdo / valor (é uma string, mas possui json struct) no QGIS:
e você deseja acessar a propriedade 'sub-região', então a expressão:
retornará 'Jaén'
Testado com banco de dados de geopackage.
fonte